18
18
#include " rapidjson/ostreamwrapper.h"
19
19
#include < sstream>
20
20
#include < map>
21
+ #include < algorithm>
21
22
22
23
using namespace rapidjson ;
23
24
@@ -531,6 +532,36 @@ TEST(Pointer, Assignment) {
531
532
}
532
533
}
533
534
535
+ TEST (Pointer, Swap) {
536
+ Pointer p (" /foo/0" );
537
+ Pointer q (&p.GetAllocator ());
538
+
539
+ q.Swap (p);
540
+ EXPECT_EQ (&q.GetAllocator (), &p.GetAllocator ());
541
+ EXPECT_TRUE (p.IsValid ());
542
+ EXPECT_TRUE (q.IsValid ());
543
+ EXPECT_EQ (0u , p.GetTokenCount ());
544
+ EXPECT_EQ (2u , q.GetTokenCount ());
545
+ EXPECT_EQ (3u , q.GetTokens ()[0 ].length );
546
+ EXPECT_STREQ (" foo" , q.GetTokens ()[0 ].name );
547
+ EXPECT_EQ (1u , q.GetTokens ()[1 ].length );
548
+ EXPECT_STREQ (" 0" , q.GetTokens ()[1 ].name );
549
+ EXPECT_EQ (0u , q.GetTokens ()[1 ].index );
550
+
551
+ // std::swap compatibility
552
+ std::swap (p, q);
553
+ EXPECT_EQ (&p.GetAllocator (), &q.GetAllocator ());
554
+ EXPECT_TRUE (q.IsValid ());
555
+ EXPECT_TRUE (p.IsValid ());
556
+ EXPECT_EQ (0u , q.GetTokenCount ());
557
+ EXPECT_EQ (2u , p.GetTokenCount ());
558
+ EXPECT_EQ (3u , p.GetTokens ()[0 ].length );
559
+ EXPECT_STREQ (" foo" , p.GetTokens ()[0 ].name );
560
+ EXPECT_EQ (1u , p.GetTokens ()[1 ].length );
561
+ EXPECT_STREQ (" 0" , p.GetTokens ()[1 ].name );
562
+ EXPECT_EQ (0u , p.GetTokens ()[1 ].index );
563
+ }
564
+
534
565
TEST (Pointer, Append) {
535
566
{
536
567
Pointer p;
@@ -869,7 +900,7 @@ TEST(Pointer, Set_NoAllocator) {
869
900
#endif
870
901
}
871
902
872
- TEST (Pointer, Swap ) {
903
+ TEST (Pointer, Swap_Value ) {
873
904
Document d;
874
905
d.Parse (kJson );
875
906
Document::AllocatorType& a = d.GetAllocator ();
@@ -878,7 +909,7 @@ TEST(Pointer, Swap) {
878
909
EXPECT_STREQ (" bar" , d[" foo" ][1 ].GetString ());
879
910
}
880
911
881
- TEST (Pointer, Swap_NoAllocator ) {
912
+ TEST (Pointer, Swap_Value_NoAllocator ) {
882
913
Document d;
883
914
d.Parse (kJson );
884
915
Pointer (" /foo/0" ).Swap (d, *Pointer (" /foo/1" ).Get (d));
0 commit comments