35 #ifndef GOOGLE_PROTOBUF_TEST_UTIL_H__
36 #define GOOGLE_PROTOBUF_TEST_UTIL_H__
38 #include <google/protobuf/unittest.pb.h>
40 #define UNITTEST ::protobuf_unittest
41 #define UNITTEST_IMPORT ::protobuf_unittest_import
43 #include <google/protobuf/test_util.inc>
45 #undef UNITTEST_IMPORT
47 #include <google/protobuf/port_def.inc>
52 namespace unittest = ::protobuf_unittest;
53 namespace unittest_import = ::protobuf_unittest_import;
57 class ReflectionTester {
76 bool expect_extensions_notnull);
128 : base_descriptor_(base_descriptor) {
130 std::string package = base_descriptor->file()->package();
132 pool->FindFieldByName(package +
".TestAllTypes.optional_import_message");
134 import_descriptor->message_type()->file()->package();
136 nested_b_ =
pool->FindFieldByName(package +
".TestAllTypes.NestedMessage.bb");
137 foreign_c_ =
pool->FindFieldByName(package +
".ForeignMessage.c");
138 import_d_ =
pool->FindFieldByName(import_package +
".ImportMessage.d");
139 import_e_ =
pool->FindFieldByName(import_package +
".PublicImportMessage.e");
140 nested_foo_ =
pool->FindEnumValueByName(package +
".TestAllTypes.FOO");
141 nested_bar_ =
pool->FindEnumValueByName(package +
".TestAllTypes.BAR");
142 nested_baz_ =
pool->FindEnumValueByName(package +
".TestAllTypes.BAZ");
146 import_foo_ =
pool->FindEnumValueByName(import_package +
".IMPORT_FOO");
147 import_bar_ =
pool->FindEnumValueByName(import_package +
".IMPORT_BAR");
148 import_baz_ =
pool->FindEnumValueByName(import_package +
".IMPORT_BAZ");
151 group_a_ =
pool->FindFieldByName(package +
".OptionalGroup_extension.a");
153 pool->FindFieldByName(package +
".RepeatedGroup_extension.a");
155 group_a_ =
pool->FindFieldByName(package +
".TestAllTypes.OptionalGroup.a");
157 pool->FindFieldByName(package +
".TestAllTypes.RepeatedGroup.a");
195 const Reflection* reflection =
message->GetReflection();
198 reflection->SetInt32(
message,
F(
"optional_int32"), 101);
199 reflection->SetInt64(
message,
F(
"optional_int64"), 102);
200 reflection->SetUInt32(
message,
F(
"optional_uint32"), 103);
201 reflection->SetUInt64(
message,
F(
"optional_uint64"), 104);
202 reflection->SetInt32(
message,
F(
"optional_sint32"), 105);
203 reflection->SetInt64(
message,
F(
"optional_sint64"), 106);
204 reflection->SetUInt32(
message,
F(
"optional_fixed32"), 107);
205 reflection->SetUInt64(
message,
F(
"optional_fixed64"), 108);
206 reflection->SetInt32(
message,
F(
"optional_sfixed32"), 109);
207 reflection->SetInt64(
message,
F(
"optional_sfixed64"), 110);
208 reflection->SetFloat(
message,
F(
"optional_float"), 111);
209 reflection->SetDouble(
message,
F(
"optional_double"), 112);
210 reflection->SetBool(
message,
F(
"optional_bool"),
true);
211 reflection->SetString(
message,
F(
"optional_string"),
"115");
212 reflection->SetString(
message,
F(
"optional_bytes"),
"116");
214 sub_message = reflection->MutableMessage(
message,
F(
"optionalgroup"));
215 sub_message->GetReflection()->SetInt32(sub_message,
group_a_, 117);
217 reflection->MutableMessage(
message,
F(
"optional_nested_message"));
218 sub_message->GetReflection()->SetInt32(sub_message,
nested_b_, 118);
220 reflection->MutableMessage(
message,
F(
"optional_foreign_message"));
221 sub_message->GetReflection()->SetInt32(sub_message,
foreign_c_, 119);
223 reflection->MutableMessage(
message,
F(
"optional_import_message"));
224 sub_message->GetReflection()->SetInt32(sub_message,
import_d_, 120);
230 reflection->SetString(
message,
F(
"optional_string_piece"),
"124");
231 reflection->SetString(
message,
F(
"optional_cord"),
"125");
234 reflection->MutableMessage(
message,
F(
"optional_public_import_message"));
235 sub_message->GetReflection()->SetInt32(sub_message,
import_e_, 126);
237 sub_message = reflection->MutableMessage(
message,
F(
"optional_lazy_message"));
238 sub_message->GetReflection()->SetInt32(sub_message,
nested_b_, 127);
242 reflection->AddInt32(
message,
F(
"repeated_int32"), 201);
243 reflection->AddInt64(
message,
F(
"repeated_int64"), 202);
244 reflection->AddUInt32(
message,
F(
"repeated_uint32"), 203);
245 reflection->AddUInt64(
message,
F(
"repeated_uint64"), 204);
246 reflection->AddInt32(
message,
F(
"repeated_sint32"), 205);
247 reflection->AddInt64(
message,
F(
"repeated_sint64"), 206);
248 reflection->AddUInt32(
message,
F(
"repeated_fixed32"), 207);
249 reflection->AddUInt64(
message,
F(
"repeated_fixed64"), 208);
250 reflection->AddInt32(
message,
F(
"repeated_sfixed32"), 209);
251 reflection->AddInt64(
message,
F(
"repeated_sfixed64"), 210);
252 reflection->AddFloat(
message,
F(
"repeated_float"), 211);
253 reflection->AddDouble(
message,
F(
"repeated_double"), 212);
254 reflection->AddBool(
message,
F(
"repeated_bool"),
true);
255 reflection->AddString(
message,
F(
"repeated_string"),
"215");
256 reflection->AddString(
message,
F(
"repeated_bytes"),
"216");
258 sub_message = reflection->AddMessage(
message,
F(
"repeatedgroup"));
260 sub_message = reflection->AddMessage(
message,
F(
"repeated_nested_message"));
261 sub_message->GetReflection()->SetInt32(sub_message,
nested_b_, 218);
262 sub_message = reflection->AddMessage(
message,
F(
"repeated_foreign_message"));
263 sub_message->GetReflection()->SetInt32(sub_message,
foreign_c_, 219);
264 sub_message = reflection->AddMessage(
message,
F(
"repeated_import_message"));
265 sub_message->GetReflection()->SetInt32(sub_message,
import_d_, 220);
266 sub_message = reflection->AddMessage(
message,
F(
"repeated_lazy_message"));
267 sub_message->GetReflection()->SetInt32(sub_message,
nested_b_, 227);
273 reflection->AddString(
message,
F(
"repeated_string_piece"),
"224");
274 reflection->AddString(
message,
F(
"repeated_cord"),
"225");
277 reflection->AddInt32(
message,
F(
"repeated_int32"), 301);
278 reflection->AddInt64(
message,
F(
"repeated_int64"), 302);
279 reflection->AddUInt32(
message,
F(
"repeated_uint32"), 303);
280 reflection->AddUInt64(
message,
F(
"repeated_uint64"), 304);
281 reflection->AddInt32(
message,
F(
"repeated_sint32"), 305);
282 reflection->AddInt64(
message,
F(
"repeated_sint64"), 306);
283 reflection->AddUInt32(
message,
F(
"repeated_fixed32"), 307);
284 reflection->AddUInt64(
message,
F(
"repeated_fixed64"), 308);
285 reflection->AddInt32(
message,
F(
"repeated_sfixed32"), 309);
286 reflection->AddInt64(
message,
F(
"repeated_sfixed64"), 310);
287 reflection->AddFloat(
message,
F(
"repeated_float"), 311);
288 reflection->AddDouble(
message,
F(
"repeated_double"), 312);
289 reflection->AddBool(
message,
F(
"repeated_bool"),
false);
290 reflection->AddString(
message,
F(
"repeated_string"),
"315");
291 reflection->AddString(
message,
F(
"repeated_bytes"),
"316");
293 sub_message = reflection->AddMessage(
message,
F(
"repeatedgroup"));
295 sub_message = reflection->AddMessage(
message,
F(
"repeated_nested_message"));
296 sub_message->GetReflection()->SetInt32(sub_message,
nested_b_, 318);
297 sub_message = reflection->AddMessage(
message,
F(
"repeated_foreign_message"));
298 sub_message->GetReflection()->SetInt32(sub_message,
foreign_c_, 319);
299 sub_message = reflection->AddMessage(
message,
F(
"repeated_import_message"));
300 sub_message->GetReflection()->SetInt32(sub_message,
import_d_, 320);
301 sub_message = reflection->AddMessage(
message,
F(
"repeated_lazy_message"));
302 sub_message->GetReflection()->SetInt32(sub_message,
nested_b_, 327);
308 reflection->AddString(
message,
F(
"repeated_string_piece"),
"324");
309 reflection->AddString(
message,
F(
"repeated_cord"),
"325");
313 reflection->SetInt32(
message,
F(
"default_int32"), 401);
314 reflection->SetInt64(
message,
F(
"default_int64"), 402);
315 reflection->SetUInt32(
message,
F(
"default_uint32"), 403);
316 reflection->SetUInt64(
message,
F(
"default_uint64"), 404);
317 reflection->SetInt32(
message,
F(
"default_sint32"), 405);
318 reflection->SetInt64(
message,
F(
"default_sint64"), 406);
319 reflection->SetUInt32(
message,
F(
"default_fixed32"), 407);
320 reflection->SetUInt64(
message,
F(
"default_fixed64"), 408);
321 reflection->SetInt32(
message,
F(
"default_sfixed32"), 409);
322 reflection->SetInt64(
message,
F(
"default_sfixed64"), 410);
323 reflection->SetFloat(
message,
F(
"default_float"), 411);
324 reflection->SetDouble(
message,
F(
"default_double"), 412);
325 reflection->SetBool(
message,
F(
"default_bool"),
false);
326 reflection->SetString(
message,
F(
"default_string"),
"415");
327 reflection->SetString(
message,
F(
"default_bytes"),
"416");
333 reflection->SetString(
message,
F(
"default_string_piece"),
"424");
334 reflection->SetString(
message,
F(
"default_cord"),
"425");
336 reflection->SetUInt32(
message,
F(
"oneof_uint32"), 601);
337 sub_message = reflection->MutableMessage(
message,
F(
"oneof_nested_message"));
338 sub_message->GetReflection()->SetInt32(sub_message,
nested_b_, 602);
339 reflection->SetString(
message,
F(
"oneof_string"),
"603");
340 reflection->SetString(
message,
F(
"oneof_bytes"),
"604");
346 const Reflection* reflection =
message->GetReflection();
347 Message* sub_message = reflection->MutableMessage(
349 sub_message->GetReflection()->SetInt64(
350 sub_message, sub_message->GetDescriptor()->FindFieldByName(
"qux_int"),
363 const Reflection* reflection =
message.GetReflection();
374 const Message* sub_message = &reflection->GetMessage(
376 EXPECT_EQ(100, sub_message->GetReflection()->GetInt64(
378 sub_message->GetDescriptor()->FindFieldByName(
"qux_int")));
383 reflection->GetStringReference(
392 reflection->GetStringReference(
398 const Reflection* reflection =
message->GetReflection();
399 reflection->AddInt32(
message,
F(
"packed_int32"), 601);
400 reflection->AddInt64(
message,
F(
"packed_int64"), 602);
401 reflection->AddUInt32(
message,
F(
"packed_uint32"), 603);
402 reflection->AddUInt64(
message,
F(
"packed_uint64"), 604);
403 reflection->AddInt32(
message,
F(
"packed_sint32"), 605);
404 reflection->AddInt64(
message,
F(
"packed_sint64"), 606);
405 reflection->AddUInt32(
message,
F(
"packed_fixed32"), 607);
406 reflection->AddUInt64(
message,
F(
"packed_fixed64"), 608);
407 reflection->AddInt32(
message,
F(
"packed_sfixed32"), 609);
408 reflection->AddInt64(
message,
F(
"packed_sfixed64"), 610);
409 reflection->AddFloat(
message,
F(
"packed_float"), 611);
410 reflection->AddDouble(
message,
F(
"packed_double"), 612);
411 reflection->AddBool(
message,
F(
"packed_bool"),
true);
414 reflection->AddInt32(
message,
F(
"packed_int32"), 701);
415 reflection->AddInt64(
message,
F(
"packed_int64"), 702);
416 reflection->AddUInt32(
message,
F(
"packed_uint32"), 703);
417 reflection->AddUInt64(
message,
F(
"packed_uint64"), 704);
418 reflection->AddInt32(
message,
F(
"packed_sint32"), 705);
419 reflection->AddInt64(
message,
F(
"packed_sint64"), 706);
420 reflection->AddUInt32(
message,
F(
"packed_fixed32"), 707);
421 reflection->AddUInt64(
message,
F(
"packed_fixed64"), 708);
422 reflection->AddInt32(
message,
F(
"packed_sfixed32"), 709);
423 reflection->AddInt64(
message,
F(
"packed_sfixed64"), 710);
424 reflection->AddFloat(
message,
F(
"packed_float"), 711);
425 reflection->AddDouble(
message,
F(
"packed_double"), 712);
426 reflection->AddBool(
message,
F(
"packed_bool"),
false);
443 const Reflection* reflection =
message.GetReflection();
468 reflection->HasField(
message,
F(
"optional_public_import_message")));
471 sub_message = &reflection->GetMessage(
message,
F(
"optionalgroup"));
473 sub_message = &reflection->GetMessage(
message,
F(
"optional_nested_message"));
475 sub_message = &reflection->GetMessage(
message,
F(
"optional_foreign_message"));
477 sub_message = &reflection->GetMessage(
message,
F(
"optional_import_message"));
480 &reflection->GetMessage(
message,
F(
"optional_public_import_message"));
482 sub_message = &reflection->GetMessage(
message,
F(
"optional_lazy_message"));
513 sub_message = &reflection->GetMessage(
message,
F(
"optionalgroup"));
515 sub_message->GetReflection()->GetInt32(*sub_message,
group_a_));
516 sub_message = &reflection->GetMessage(
message,
F(
"optional_nested_message"));
518 sub_message->GetReflection()->GetInt32(*sub_message,
nested_b_));
519 sub_message = &reflection->GetMessage(
message,
F(
"optional_foreign_message"));
521 sub_message->GetReflection()->GetInt32(*sub_message,
foreign_c_));
522 sub_message = &reflection->GetMessage(
message,
F(
"optional_import_message"));
524 sub_message->GetReflection()->GetInt32(*sub_message,
import_d_));
526 &reflection->GetMessage(
message,
F(
"optional_public_import_message"));
528 sub_message->GetReflection()->GetInt32(*sub_message,
import_e_));
529 sub_message = &reflection->GetMessage(
message,
F(
"optional_lazy_message"));
531 sub_message->GetReflection()->GetInt32(*sub_message,
nested_b_));
534 reflection->GetEnum(
message,
F(
"optional_nested_enum")));
536 reflection->GetEnum(
message,
F(
"optional_foreign_enum")));
538 reflection->GetEnum(
message,
F(
"optional_import_enum")));
541 EXPECT_EQ(
"124", reflection->GetStringReference(
559 sub_message = &reflection->GetMessage(
message,
F(
"oneof_nested_message"));
561 sub_message->GetReflection()->GetInt32(*sub_message,
nested_b_));
567 const Reflection* reflection =
message.GetReflection();
604 reflection->GetRepeatedUInt32(
message,
F(
"repeated_uint32"), 0));
606 reflection->GetRepeatedUInt64(
message,
F(
"repeated_uint64"), 0));
608 reflection->GetRepeatedInt32(
message,
F(
"repeated_sint32"), 0));
610 reflection->GetRepeatedInt64(
message,
F(
"repeated_sint64"), 0));
612 reflection->GetRepeatedUInt32(
message,
F(
"repeated_fixed32"), 0));
614 reflection->GetRepeatedUInt64(
message,
F(
"repeated_fixed64"), 0));
616 reflection->GetRepeatedInt32(
message,
F(
"repeated_sfixed32"), 0));
618 reflection->GetRepeatedInt64(
message,
F(
"repeated_sfixed64"), 0));
621 reflection->GetRepeatedDouble(
message,
F(
"repeated_double"), 0));
624 reflection->GetRepeatedString(
message,
F(
"repeated_string"), 0));
626 reflection->GetRepeatedString(
message,
F(
"repeated_bytes"), 0));
628 EXPECT_EQ(
"215", reflection->GetRepeatedStringReference(
630 EXPECT_EQ(
"216", reflection->GetRepeatedStringReference(
633 sub_message = &reflection->GetRepeatedMessage(
message,
F(
"repeatedgroup"), 0);
634 EXPECT_EQ(217, sub_message->GetReflection()->GetInt32(*sub_message,
637 &reflection->GetRepeatedMessage(
message,
F(
"repeated_nested_message"), 0);
639 sub_message->GetReflection()->GetInt32(*sub_message,
nested_b_));
640 sub_message = &reflection->GetRepeatedMessage(
641 message,
F(
"repeated_foreign_message"), 0);
643 sub_message->GetReflection()->GetInt32(*sub_message,
foreign_c_));
645 &reflection->GetRepeatedMessage(
message,
F(
"repeated_import_message"), 0);
647 sub_message->GetReflection()->GetInt32(*sub_message,
import_d_));
649 &reflection->GetRepeatedMessage(
message,
F(
"repeated_lazy_message"), 0);
651 sub_message->GetReflection()->GetInt32(*sub_message,
nested_b_));
654 reflection->GetRepeatedEnum(
message,
F(
"repeated_nested_enum"), 0));
656 message,
F(
"repeated_foreign_enum"), 0));
658 reflection->GetRepeatedEnum(
message,
F(
"repeated_import_enum"), 0));
660 EXPECT_EQ(
"224", reflection->GetRepeatedString(
661 message,
F(
"repeated_string_piece"), 0));
662 EXPECT_EQ(
"224", reflection->GetRepeatedStringReference(
666 reflection->GetRepeatedString(
message,
F(
"repeated_cord"), 0));
667 EXPECT_EQ(
"225", reflection->GetRepeatedStringReference(
673 reflection->GetRepeatedUInt32(
message,
F(
"repeated_uint32"), 1));
675 reflection->GetRepeatedUInt64(
message,
F(
"repeated_uint64"), 1));
677 reflection->GetRepeatedInt32(
message,
F(
"repeated_sint32"), 1));
679 reflection->GetRepeatedInt64(
message,
F(
"repeated_sint64"), 1));
681 reflection->GetRepeatedUInt32(
message,
F(
"repeated_fixed32"), 1));
683 reflection->GetRepeatedUInt64(
message,
F(
"repeated_fixed64"), 1));
685 reflection->GetRepeatedInt32(
message,
F(
"repeated_sfixed32"), 1));
687 reflection->GetRepeatedInt64(
message,
F(
"repeated_sfixed64"), 1));
690 reflection->GetRepeatedDouble(
message,
F(
"repeated_double"), 1));
693 reflection->GetRepeatedString(
message,
F(
"repeated_string"), 1));
695 reflection->GetRepeatedString(
message,
F(
"repeated_bytes"), 1));
697 EXPECT_EQ(
"315", reflection->GetRepeatedStringReference(
699 EXPECT_EQ(
"316", reflection->GetRepeatedStringReference(
702 sub_message = &reflection->GetRepeatedMessage(
message,
F(
"repeatedgroup"), 1);
703 EXPECT_EQ(317, sub_message->GetReflection()->GetInt32(*sub_message,
706 &reflection->GetRepeatedMessage(
message,
F(
"repeated_nested_message"), 1);
708 sub_message->GetReflection()->GetInt32(*sub_message,
nested_b_));
709 sub_message = &reflection->GetRepeatedMessage(
710 message,
F(
"repeated_foreign_message"), 1);
712 sub_message->GetReflection()->GetInt32(*sub_message,
foreign_c_));
714 &reflection->GetRepeatedMessage(
message,
F(
"repeated_import_message"), 1);
716 sub_message->GetReflection()->GetInt32(*sub_message,
import_d_));
718 &reflection->GetRepeatedMessage(
message,
F(
"repeated_lazy_message"), 1);
720 sub_message->GetReflection()->GetInt32(*sub_message,
nested_b_));
723 reflection->GetRepeatedEnum(
message,
F(
"repeated_nested_enum"), 1));
725 message,
F(
"repeated_foreign_enum"), 1));
727 reflection->GetRepeatedEnum(
message,
F(
"repeated_import_enum"), 1));
729 EXPECT_EQ(
"324", reflection->GetRepeatedString(
730 message,
F(
"repeated_string_piece"), 1));
731 EXPECT_EQ(
"324", reflection->GetRepeatedStringReference(
735 reflection->GetRepeatedString(
message,
F(
"repeated_cord"), 1));
736 EXPECT_EQ(
"325", reflection->GetRepeatedStringReference(
742 const Reflection* reflection =
message.GetReflection();
792 reflection->GetEnum(
message,
F(
"default_nested_enum")));
794 reflection->GetEnum(
message,
F(
"default_foreign_enum")));
796 reflection->GetEnum(
message,
F(
"default_import_enum")));
799 EXPECT_EQ(
"424", reflection->GetStringReference(
809 const Reflection* reflection =
message.GetReflection();
833 reflection->GetRepeatedUInt32(
message,
F(
"packed_fixed32"), 0));
835 reflection->GetRepeatedUInt64(
message,
F(
"packed_fixed64"), 0));
837 reflection->GetRepeatedInt32(
message,
F(
"packed_sfixed32"), 0));
839 reflection->GetRepeatedInt64(
message,
F(
"packed_sfixed64"), 0));
844 reflection->GetRepeatedEnum(
message,
F(
"packed_enum"), 0));
853 reflection->GetRepeatedUInt32(
message,
F(
"packed_fixed32"), 1));
855 reflection->GetRepeatedUInt64(
message,
F(
"packed_fixed64"), 1));
857 reflection->GetRepeatedInt32(
message,
F(
"packed_sfixed32"), 1));
859 reflection->GetRepeatedInt64(
message,
F(
"packed_sfixed64"), 1));
864 reflection->GetRepeatedEnum(
message,
F(
"packed_enum"), 1));
871 const Reflection* reflection =
message.GetReflection();
897 reflection->HasField(
message,
F(
"optional_public_import_message")));
930 sub_message = &reflection->GetMessage(
message,
F(
"optionalgroup"));
933 sub_message = &reflection->GetMessage(
message,
F(
"optional_nested_message"));
936 sub_message = &reflection->GetMessage(
message,
F(
"optional_foreign_message"));
938 sub_message->GetReflection()->HasField(*sub_message,
foreign_c_));
940 sub_message->GetReflection()->GetInt32(*sub_message,
foreign_c_));
941 sub_message = &reflection->GetMessage(
message,
F(
"optional_import_message"));
945 &reflection->GetMessage(
message,
F(
"optional_public_import_message"));
948 sub_message = &reflection->GetMessage(
message,
F(
"optional_lazy_message"));
954 reflection->GetEnum(
message,
F(
"optional_nested_enum")));
956 reflection->GetEnum(
message,
F(
"optional_foreign_enum")));
958 reflection->GetEnum(
message,
F(
"optional_import_enum")));
961 EXPECT_EQ(
"", reflection->GetStringReference(
1038 EXPECT_EQ(
"hello", reflection->GetStringReference(
1044 reflection->GetEnum(
message,
F(
"default_nested_enum")));
1046 reflection->GetEnum(
message,
F(
"default_foreign_enum")));
1048 reflection->GetEnum(
message,
F(
"default_import_enum")));
1051 EXPECT_EQ(
"abc", reflection->GetStringReference(
1063 const Reflection* reflection =
message->GetReflection();
1066 reflection->SetRepeatedInt32(
message,
F(
"repeated_int32"), 1, 501);
1067 reflection->SetRepeatedInt64(
message,
F(
"repeated_int64"), 1, 502);
1068 reflection->SetRepeatedUInt32(
message,
F(
"repeated_uint32"), 1, 503);
1069 reflection->SetRepeatedUInt64(
message,
F(
"repeated_uint64"), 1, 504);
1070 reflection->SetRepeatedInt32(
message,
F(
"repeated_sint32"), 1, 505);
1071 reflection->SetRepeatedInt64(
message,
F(
"repeated_sint64"), 1, 506);
1072 reflection->SetRepeatedUInt32(
message,
F(
"repeated_fixed32"), 1, 507);
1073 reflection->SetRepeatedUInt64(
message,
F(
"repeated_fixed64"), 1, 508);
1074 reflection->SetRepeatedInt32(
message,
F(
"repeated_sfixed32"), 1, 509);
1075 reflection->SetRepeatedInt64(
message,
F(
"repeated_sfixed64"), 1, 510);
1076 reflection->SetRepeatedFloat(
message,
F(
"repeated_float"), 1, 511);
1077 reflection->SetRepeatedDouble(
message,
F(
"repeated_double"), 1, 512);
1078 reflection->SetRepeatedBool(
message,
F(
"repeated_bool"), 1,
true);
1079 reflection->SetRepeatedString(
message,
F(
"repeated_string"), 1,
"515");
1080 reflection->SetRepeatedString(
message,
F(
"repeated_bytes"), 1,
"516");
1083 reflection->MutableRepeatedMessage(
message,
F(
"repeatedgroup"), 1);
1085 sub_message = reflection->MutableRepeatedMessage(
1086 message,
F(
"repeated_nested_message"), 1);
1087 sub_message->GetReflection()->SetInt32(sub_message,
nested_b_, 518);
1088 sub_message = reflection->MutableRepeatedMessage(
1089 message,
F(
"repeated_foreign_message"), 1);
1090 sub_message->GetReflection()->SetInt32(sub_message,
foreign_c_, 519);
1091 sub_message = reflection->MutableRepeatedMessage(
1092 message,
F(
"repeated_import_message"), 1);
1093 sub_message->GetReflection()->SetInt32(sub_message,
import_d_, 520);
1094 sub_message = reflection->MutableRepeatedMessage(
1095 message,
F(
"repeated_lazy_message"), 1);
1096 sub_message->GetReflection()->SetInt32(sub_message,
nested_b_, 527);
1098 reflection->SetRepeatedEnum(
message,
F(
"repeated_nested_enum"), 1,
1100 reflection->SetRepeatedEnum(
message,
F(
"repeated_foreign_enum"), 1,
1102 reflection->SetRepeatedEnum(
message,
F(
"repeated_import_enum"), 1,
1105 reflection->SetRepeatedString(
message,
F(
"repeated_string_piece"), 1,
"524");
1106 reflection->SetRepeatedString(
message,
F(
"repeated_cord"), 1,
"525");
1111 const Reflection* reflection =
message->GetReflection();
1113 std::vector<const FieldDescriptor*>
output;
1115 for (
int i = 0;
i <
output.size(); ++
i) {
1117 if (!
field->is_repeated())
continue;
1125 const Reflection* reflection =
message->GetReflection();
1127 std::vector<const FieldDescriptor*>
output;
1129 for (
int i = 0;
i <
output.size(); ++
i) {
1131 if (!
field->is_repeated())
continue;
1135 if (!
field->is_extension() || expect_extensions_notnull) {
1137 <<
"ReleaseLast returned nullptr for: " <<
field->name();
1145 const Reflection* reflection =
message->GetReflection();
1147 std::vector<const FieldDescriptor*>
output;
1149 for (
int i = 0;
i <
output.size(); ++
i) {
1151 if (!
field->is_repeated())
continue;
1159 const Reflection* reflection =
message->GetReflection();
1161 std::vector<const FieldDescriptor*>
fields;
1164 for (
int i = 0;
i <
fields.size(); ++
i) {
1166 if (!
field->is_optional() ||
1170 reflection->SetAllocatedMessage(
message,
nullptr,
field);
1177 EXPECT_EQ(from_message->GetDescriptor(), to_message->GetDescriptor());
1178 const Reflection* from_reflection = from_message->GetReflection();
1179 const Reflection* to_reflection = to_message->GetReflection();
1181 std::vector<const FieldDescriptor*>
fields;
1182 from_reflection->ListFields(*from_message, &
fields);
1184 for (
int i = 0;
i <
fields.size(); ++
i) {
1186 if (!
field->is_optional() ||
1190 Message* sub_message = from_reflection->ReleaseMessage(from_message,
field);
1191 to_reflection->SetAllocatedMessage(to_message, sub_message,
field);
1198 const Reflection* reflection =
message->GetReflection();
1200 static const char*
fields[] = {
1202 "optional_nested_message",
1203 "optional_foreign_message",
1204 "optional_import_message",
1208 switch (expected_release_state) {
1230 unittest::TestFieldOrderings
message;
1232 message.AppendToString(&expected);
1234 message.SetExtension(unittest::my_extension_int, 23);
1235 message.AppendToString(&expected);
1238 message.AppendToString(&expected);
1240 message.SetExtension(unittest::my_extension_string,
"bar");
1241 message.AppendToString(&expected);
1244 message.AppendToString(&expected);
1255 #include <google/protobuf/port_undef.inc>
1257 #endif // GOOGLE_PROTOBUF_TEST_UTIL_H__