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