45 #include <google/protobuf/test_util.h>
46 #include <google/protobuf/unittest.pb.h>
47 #include <google/protobuf/unittest_no_field_presence.pb.h>
48 #include <google/protobuf/descriptor.pb.h>
49 #include <google/protobuf/descriptor.h>
50 #include <google/protobuf/dynamic_message.h>
52 #include <google/protobuf/stubs/logging.h>
53 #include <google/protobuf/stubs/common.h>
54 #include <google/protobuf/testing/googletest.h>
55 #include <gtest/gtest.h>
89 &unittest_import_file);
91 &unittest_import_public_file);
93 &unittest_no_field_presence_file);
120 "proto2_nofieldpresence_unittest.TestAllTypes");
132 TEST_F(DynamicMessageTest, OnePrototype) {
137 TEST_F(DynamicMessageTest, Defaults) {
139 TestUtil::ReflectionTester reflection_tester(
descriptor_);
140 reflection_tester.ExpectClearViaReflection(*prototype_);
143 TEST_P(DynamicMessageTest, IndependentOffsets) {
149 TestUtil::ReflectionTester reflection_tester(
descriptor_);
151 reflection_tester.SetAllFieldsViaReflection(
message);
152 reflection_tester.ExpectAllFieldsSetViaReflection(*
message);
163 TestUtil::ReflectionTester reflection_tester(extensions_descriptor_);
165 reflection_tester.SetAllFieldsViaReflection(
message);
166 reflection_tester.ExpectAllFieldsSetViaReflection(*
message);
173 TEST_P(DynamicMessageTest, PackedFields) {
177 TestUtil::ReflectionTester reflection_tester(packed_descriptor_);
179 reflection_tester.SetPackedFieldsViaReflection(
message);
180 reflection_tester.ExpectPackedFieldsSetViaReflection(*
message);
194 const Reflection* reflection =
message->GetReflection();
206 unittest::TestOneof2::FOO,
210 const Message* nested_prototype;
213 nested_prototype = factory_.GetPrototype(nested_descriptor);
215 &reflection->GetMessage(
218 const Message* foogroup_prototype;
219 foogroup_descriptor =
221 foogroup_prototype = factory_.GetPrototype(foogroup_descriptor);
223 &reflection->GetMessage(*
message,
226 &reflection->GetMessage(
230 EXPECT_EQ(
"STRING", reflection->GetString(
235 reflection->GetString(
237 EXPECT_EQ(
"BYTES", reflection->GetString(
240 unittest::TestOneof2::BAR,
245 TestUtil::ReflectionTester reflection_tester(oneof_descriptor_);
246 reflection_tester.SetOneofViaReflection(
message);
247 reflection_tester.ExpectOneofSetViaReflection(*
message);
254 TEST_P(DynamicMessageTest, SpaceUsed) {
262 TestUtil::ReflectionTester reflection_tester(
descriptor_);
264 size_t initial_space_used =
message->SpaceUsedLong();
266 reflection_tester.SetAllFieldsViaReflection(
message);
277 Message* extension_message = extensions_prototype_->New(&
arena);
278 Message* packed_message = packed_prototype_->New(&
arena);
283 (void)extension_message;
284 (void)packed_message;
290 TEST_F(DynamicMessageTest, Proto3) {
292 const Reflection* refl =
message->GetReflection();
300 desc->FindFieldByName(
"optional_int32");
302 desc->FindFieldByName(
"optional_nested_message");
307 refl->SetInt32(
message, optional_int32, 42);
309 refl->SetInt32(
message, optional_int32, 0);
313 refl->MutableMessage(
message, optional_msg);
315 delete refl->ReleaseMessage(
message, optional_msg);
319 EXPECT_EQ(
false, refl->HasField(*proto3_prototype_, optional_msg));