In Value.CopyFrom unit test, run both allocators.

@pah
This commit is contained in:
Milo Yip 2014-07-03 22:57:09 +08:00
parent d0146c4476
commit 80a5b9093c

View File

@ -25,37 +25,38 @@ TEST(Value, assignment_operator) {
EXPECT_EQ(1234, y.GetInt()); EXPECT_EQ(1234, y.GetInt());
} }
TEST(Value, CopyFrom) template <typename Value>
{ void TestCopyFrom() {
// use CrtAllocator to explicitly malloc/free any memory
// comment this line to use the default Allocator instead
typedef GenericValue<UTF8<>,CrtAllocator> Value;
Value::AllocatorType a; Value::AllocatorType a;
Value v1(1234); Value v1(1234);
Value v2(v1,a); // deep copy constructor Value v2(v1, a); // deep copy constructor
EXPECT_TRUE(v1.GetType() == v2.GetType()); EXPECT_TRUE(v1.GetType() == v2.GetType());
EXPECT_EQ(v1.GetInt(), v2.GetInt()); EXPECT_EQ(v1.GetInt(), v2.GetInt());
v1.SetString("foo"); v1.SetString("foo");
v2.CopyFrom(v1,a); v2.CopyFrom(v1, a);
EXPECT_TRUE(v1.GetType() == v2.GetType()); EXPECT_TRUE(v1.GetType() == v2.GetType());
EXPECT_STREQ(v1.GetString(), v2.GetString()); EXPECT_STREQ(v1.GetString(), v2.GetString());
EXPECT_EQ(v1.GetString(), v2.GetString()); // string NOT copied EXPECT_EQ(v1.GetString(), v2.GetString()); // string NOT copied
v1.SetArray().PushBack(1234,a); v1.SetArray().PushBack(1234, a);
v2.CopyFrom(v1,a); v2.CopyFrom(v1, a);
EXPECT_TRUE(v2.IsArray()); EXPECT_TRUE(v2.IsArray());
EXPECT_EQ(v1.Size(), v2.Size()); EXPECT_EQ(v1.Size(), v2.Size());
v1.PushBack(Value().SetString("foo",a),a); // push string copy v1.PushBack(Value().SetString("foo", a), a); // push string copy
EXPECT_TRUE(v1.Size() != v2.Size()); EXPECT_TRUE(v1.Size() != v2.Size());
v2.CopyFrom(v1,a); v2.CopyFrom(v1, a);
EXPECT_TRUE(v1.Size() == v2.Size()); EXPECT_TRUE(v1.Size() == v2.Size());
EXPECT_STREQ(v1[1].GetString(), v2[1].GetString()); EXPECT_STREQ(v1[1].GetString(), v2[1].GetString());
EXPECT_NE(v1[1].GetString(), v2[1].GetString()); // string got copied EXPECT_NE(v1[1].GetString(), v2[1].GetString()); // string got copied
} }
TEST(Value, CopyFrom) {
TestCopyFrom<Value>();
TestCopyFrom<GenericValue<UTF8<>, CrtAllocator> >();
}
TEST(Value, Swap) { TEST(Value, Swap) {
Value v1(1234); Value v1(1234);
Value v2(kObjectType); Value v2(kObjectType);