35 #include <google/protobuf/unittest_proto3_arena.pb.h>
40 using proto3_arena_unittest::TestAllTypes;
48 m->set_optional_int32(100);
49 m->set_optional_string(
"asdf");
50 m->set_optional_bytes(
"jkl;");
51 m->mutable_optional_nested_message()->set_bb(42);
52 m->mutable_optional_foreign_message()->set_c(43);
53 m->set_optional_nested_enum(
54 proto3_arena_unittest::TestAllTypes_NestedEnum_BAZ);
55 m->set_optional_foreign_enum(proto3_arena_unittest::FOREIGN_BAZ);
56 m->mutable_optional_lazy_message()->set_bb(45);
57 m->add_repeated_int32(100);
58 m->add_repeated_string(
"asdf");
59 m->add_repeated_bytes(
"jkl;");
60 m->add_repeated_nested_message()->set_bb(46);
61 m->add_repeated_foreign_message()->set_c(47);
62 m->add_repeated_nested_enum(
63 proto3_arena_unittest::TestAllTypes_NestedEnum_BAZ);
64 m->add_repeated_foreign_enum(proto3_arena_unittest::FOREIGN_BAZ);
65 m->add_repeated_lazy_message()->set_bb(49);
67 m->set_oneof_uint32(1);
68 m->mutable_oneof_nested_message()->set_bb(50);
69 m->set_oneof_string(
"test");
76 EXPECT_EQ(
true,
m.has_optional_nested_message());
77 EXPECT_EQ(42,
m.optional_nested_message().bb());
78 EXPECT_EQ(
true,
m.has_optional_foreign_message());
79 EXPECT_EQ(43,
m.optional_foreign_message().c());
80 EXPECT_EQ(proto3_arena_unittest::TestAllTypes_NestedEnum_BAZ,
81 m.optional_nested_enum());
82 EXPECT_EQ(proto3_arena_unittest::FOREIGN_BAZ,
m.optional_foreign_enum());
83 EXPECT_EQ(
true,
m.has_optional_lazy_message());
92 EXPECT_EQ(1,
m.repeated_nested_message_size());
93 EXPECT_EQ(46,
m.repeated_nested_message(0).bb());
94 EXPECT_EQ(1,
m.repeated_foreign_message_size());
95 EXPECT_EQ(47,
m.repeated_foreign_message(0).c());
97 EXPECT_EQ(proto3_arena_unittest::TestAllTypes_NestedEnum_BAZ,
98 m.repeated_nested_enum(0));
100 EXPECT_EQ(proto3_arena_unittest::FOREIGN_BAZ,
m.repeated_foreign_enum(0));
102 EXPECT_EQ(49,
m.repeated_lazy_message(0).bb());
104 EXPECT_EQ(proto3_arena_unittest::TestAllTypes::kOneofString,
105 m.oneof_field_case());
113 TEST(Proto3ArenaLiteTest, Parsing) {
114 TestAllTypes original;
118 TestAllTypes* arena_message = Arena::CreateMessage<TestAllTypes>(&arena);
119 arena_message->ParseFromString(original.SerializeAsString());
123 TEST(Proto3ArenaLiteTest, Swap) {
128 TestAllTypes* arena1_message = Arena::CreateMessage<TestAllTypes>(&arena1);
129 TestAllTypes* arena2_message = Arena::CreateMessage<TestAllTypes>(&arena2);
130 arena1_message->Swap(arena2_message);
131 EXPECT_EQ(&arena1, arena1_message->GetArena());
132 EXPECT_EQ(&arena2, arena2_message->GetArena());
135 TEST(Proto3ArenaLiteTest, SetAllocatedMessage) {
137 TestAllTypes* arena_message = Arena::CreateMessage<TestAllTypes>(&arena);
138 TestAllTypes::NestedMessage* nested =
new TestAllTypes::NestedMessage;
140 arena_message->set_allocated_optional_nested_message(nested);
141 EXPECT_EQ(118, arena_message->optional_nested_message().bb());
144 TEST(Proto3ArenaLiteTest, ReleaseMessage) {
146 TestAllTypes* arena_message = Arena::CreateMessage<TestAllTypes>(&arena);
147 arena_message->mutable_optional_nested_message()->set_bb(118);
148 std::unique_ptr<TestAllTypes::NestedMessage> nested(
149 arena_message->release_optional_nested_message());