Safer implementation of Swap()

Also added documentation, unit tests for swapping Document/Value,
Document/Document.
This commit is contained in:
Milo Yip
2014-07-04 00:59:16 +08:00
parent a96b699396
commit 9ed11d29a2
2 changed files with 31 additions and 4 deletions

View File

@@ -47,6 +47,28 @@ TEST(Document, Parse) {
EXPECT_EQ(i + 1, a[i].GetUint());
}
TEST(Document, Swap) {
Document d1;
Document::AllocatorType& a = d1.GetAllocator();
d1.SetArray().PushBack(1, a).PushBack(2, a);
Value o;
o.SetObject().AddMember("a", 1, a);
// Swap between Document and Value
d1.Swap(o);
EXPECT_TRUE(d1.IsObject());
EXPECT_TRUE(o.IsArray());
// Swap between Document and Document
Document d2;
d2.SetArray().PushBack(3, a);
d1.Swap(d2);
EXPECT_TRUE(d1.IsArray());
EXPECT_TRUE(d2.IsObject());
}
// This should be slow due to assignment in inner-loop.
struct OutputStringStream : public std::ostringstream {
typedef char Ch;