void serializeDeserialize(TestUnion val) { auto strBuffer = std::make_shared<TMemoryBuffer>(); auto protocol = std::make_shared<TBinaryProtocol>(strBuffer); val.write(protocol.get()); string serialized = strBuffer->getBufferAsString(); TestUnion out; out.read(protocol.get()); EXPECT_EQ(val, out); }
TEST_F(UnionTestFixture, SerdeTest) { TestUnion u; u.set_i32_field(100); serializeDeserialize(u); u.set_other_i32_field(200); serializeDeserialize(u); u.set_string_field("str"); serializeDeserialize(u); u.set_struct_list(std::vector<RandomStuff>()); serializeDeserialize(u); }
TEST_F(UnionTestFixture, FromJson) { TestUnion u; string j = "{\"i32_field\": 100}"; u.readFromJson(j.c_str()); EXPECT_EQ(TestUnion::Type::i32_field, u.getType()); EXPECT_EQ(100, u.get_i32_field()); j = "{\"string_field\": \"str\"}"; u.readFromJson(j.c_str()); EXPECT_EQ(TestUnion::Type::string_field, u.getType()); EXPECT_EQ("str", u.get_string_field()); j = "{\"random\": 123765}"; u.readFromJson(j.c_str()); EXPECT_EQ(TestUnion::Type::__EMPTY__, u.getType()); }
TEST_F(UnionTestFixture, Constructors) { auto f = [] (const TestUnion& u) { EXPECT_EQ(TestUnion::Type::i32_field, u.getType()); EXPECT_EQ(100, u.get_i32_field()); }; TestUnion u; u.set_i32_field(100); f(u); auto v1(u); f(v1); auto v2 = u; f(v2); auto v3(std::move(u)); f(v3); auto v4 = std::move(v2); f(v4); }
TEST_F(UnionTestFixture, ChangeType) { TestUnion u; u.set_i32_field(100); EXPECT_EQ(TestUnion::Type::i32_field, u.getType()); EXPECT_EQ(100, u.get_i32_field()); u.set_other_i32_field(200); EXPECT_EQ(TestUnion::Type::other_i32_field, u.getType()); EXPECT_EQ(200, u.get_other_i32_field()); u.set_string_field("str"); EXPECT_EQ(TestUnion::Type::string_field, u.getType()); EXPECT_EQ("str", u.get_string_field()); u.set_struct_list(std::vector<RandomStuff>()); EXPECT_EQ(TestUnion::Type::struct_list, u.getType()); EXPECT_EQ(std::vector<RandomStuff>(), u.get_struct_list()); }