TEST(Recursive, Tree) { RecTree tree; RecTree child; tree.children.push_back(child); ThriftSerializerBinary<void> serializer; std::string serialized; serializer.serialize(tree, &serialized); RecTree result; serializer.deserialize(serialized, &result); EXPECT_EQ(tree, result); }
TEST(Recursive, CoRec) { CoRec c; std::unique_ptr<CoRec2> r(new CoRec2); c.other = std::move(r); ThriftSerializerBinary<void> serializer; std::string serialized; serializer.serialize(c, &serialized); RecList result; serializer.deserialize(serialized, &result); EXPECT_TRUE(c.other != nullptr); EXPECT_TRUE(c.other->other.other == nullptr); }
TEST(Recursive, list) { RecList l; std::unique_ptr<RecList> l2(new RecList); l.next = std::move(l2); ThriftSerializerBinary<void> serializer; std::string serialized; serializer.serialize(l, &serialized); RecList result; serializer.deserialize(serialized, &result); EXPECT_TRUE(result.next != nullptr); EXPECT_TRUE(result.next->next == nullptr); }
TEST(Main, ThriftSerializerBinaryTest_Fail) { ThriftSerializerBinary<> izer; TestValue result; string serialized; TestValue original; makeTestValue(&original); // serialize and modify izer.serialize(original, &serialized); serialized += "Garbage"; EXPECT_GT(serialized.length(), izer.deserialize(serialized, &result)); }
void BM_ThriftSerializerBinary_NoReuse(int count) { // devrs003.snc1 12/2008: 100K in 444 ms TestValue result; string serialized; TestValue original; makeTestValue(&original); for (int i = 0; i < count; ++i) { ThriftSerializerBinary<> izer; izer.serialize(original, &serialized); } for (int i = 0; i < count; ++i) { ThriftSerializerBinary<> izer; izer.deserialize(serialized, &result); } }
void BM_ThriftSerializerBinary(int count) { // devrs003.sctm 9/2008: 100K in 413 ms // devrs003.snc1 12/2008: 100K in 292 ms TestValue original; makeTestValue(&original); ThriftSerializerBinary<> izer; string serialized; for (int i = 0; i < count; ++i) { izer.serialize(original, &serialized); } TestValue result; for (int i = 0; i < count; ++i) { izer.deserialize(serialized, &result); } }
TEST(Main, ThriftSerializerBinaryTest) { ThriftSerializerBinary<> izer; TestValue result; string serialized; TestValue original; makeTestValue(&original); // serialize and deserialize izer.serialize(original, &serialized); EXPECT_EQ(serialized.length(), izer.deserialize(serialized, &result)); expectEqualValues(original, result); // invoke the routines again in a strange order // // note: The implementation, we happen to know, tries to be clever // about reusing resources, so we'd like to test it. original.legalClicks = 1; EXPECT_EQ(serialized.length(), izer.deserialize(serialized, &result)); izer.serialize(original, &serialized); izer.serialize(original, &serialized); EXPECT_EQ(serialized.length(), izer.deserialize(serialized, &result)); expectEqualValues(original, result); }