Index: third_party/protobuf/src/google/protobuf/test_util.cc |
=================================================================== |
--- third_party/protobuf/src/google/protobuf/test_util.cc (revision 216642) |
+++ third_party/protobuf/src/google/protobuf/test_util.cc (working copy) |
@@ -50,6 +50,13 @@ |
namespace protobuf { |
void TestUtil::SetAllFields(unittest::TestAllTypes* message) { |
+ SetOptionalFields(message); |
+ AddRepeatedFields1(message); |
+ AddRepeatedFields2(message); |
+ SetDefaultFields(message); |
+} |
+ |
+void TestUtil::SetOptionalFields(unittest::TestAllTypes* message) { |
message->set_optional_int32 (101); |
message->set_optional_int64 (102); |
message->set_optional_uint32 (103); |
@@ -66,10 +73,12 @@ |
message->set_optional_string ("115"); |
message->set_optional_bytes ("116"); |
- message->mutable_optionalgroup ()->set_a(117); |
- message->mutable_optional_nested_message ()->set_bb(118); |
- message->mutable_optional_foreign_message()->set_c(119); |
- message->mutable_optional_import_message ()->set_d(120); |
+ message->mutable_optionalgroup ()->set_a(117); |
+ message->mutable_optional_nested_message ()->set_bb(118); |
+ message->mutable_optional_foreign_message ()->set_c(119); |
+ message->mutable_optional_import_message ()->set_d(120); |
+ message->mutable_optional_public_import_message()->set_e(126); |
+ message->mutable_optional_lazy_message ()->set_bb(127); |
message->set_optional_nested_enum (unittest::TestAllTypes::BAZ); |
message->set_optional_foreign_enum(unittest::FOREIGN_BAZ ); |
@@ -87,9 +96,11 @@ |
message->GetDescriptor()->FindFieldByName("optional_cord"), |
"125"); |
#endif // !PROTOBUF_TEST_NO_DESCRIPTORS |
+} |
- // ----------------------------------------------------------------- |
+// ------------------------------------------------------------------- |
+void TestUtil::AddRepeatedFields1(unittest::TestAllTypes* message) { |
message->add_repeated_int32 (201); |
message->add_repeated_int64 (202); |
message->add_repeated_uint32 (203); |
@@ -110,6 +121,7 @@ |
message->add_repeated_nested_message ()->set_bb(218); |
message->add_repeated_foreign_message()->set_c(219); |
message->add_repeated_import_message ()->set_d(220); |
+ message->add_repeated_lazy_message ()->set_bb(227); |
message->add_repeated_nested_enum (unittest::TestAllTypes::BAR); |
message->add_repeated_foreign_enum(unittest::FOREIGN_BAR ); |
@@ -125,7 +137,9 @@ |
message->GetDescriptor()->FindFieldByName("repeated_cord"), |
"225"); |
#endif // !PROTOBUF_TEST_NO_DESCRIPTORS |
+} |
+void TestUtil::AddRepeatedFields2(unittest::TestAllTypes* message) { |
// Add a second one of each field. |
message->add_repeated_int32 (301); |
message->add_repeated_int64 (302); |
@@ -147,6 +161,7 @@ |
message->add_repeated_nested_message ()->set_bb(318); |
message->add_repeated_foreign_message()->set_c(319); |
message->add_repeated_import_message ()->set_d(320); |
+ message->add_repeated_lazy_message ()->set_bb(327); |
message->add_repeated_nested_enum (unittest::TestAllTypes::BAZ); |
message->add_repeated_foreign_enum(unittest::FOREIGN_BAZ ); |
@@ -162,9 +177,11 @@ |
message->GetDescriptor()->FindFieldByName("repeated_cord"), |
"325"); |
#endif // !PROTOBUF_TEST_NO_DESCRIPTORS |
+} |
- // ----------------------------------------------------------------- |
+// ------------------------------------------------------------------- |
+void TestUtil::SetDefaultFields(unittest::TestAllTypes* message) { |
message->set_default_int32 (401); |
message->set_default_int64 (402); |
message->set_default_uint32 (403); |
@@ -220,6 +237,7 @@ |
message->mutable_repeated_nested_message (1)->set_bb(518); |
message->mutable_repeated_foreign_message(1)->set_c(519); |
message->mutable_repeated_import_message (1)->set_d(520); |
+ message->mutable_repeated_lazy_message (1)->set_bb(527); |
message->set_repeated_nested_enum (1, unittest::TestAllTypes::FOO); |
message->set_repeated_foreign_enum(1, unittest::FOREIGN_FOO ); |
@@ -256,15 +274,19 @@ |
EXPECT_TRUE(message.has_optional_string ()); |
EXPECT_TRUE(message.has_optional_bytes ()); |
- EXPECT_TRUE(message.has_optionalgroup ()); |
- EXPECT_TRUE(message.has_optional_nested_message ()); |
- EXPECT_TRUE(message.has_optional_foreign_message()); |
- EXPECT_TRUE(message.has_optional_import_message ()); |
+ EXPECT_TRUE(message.has_optionalgroup ()); |
+ EXPECT_TRUE(message.has_optional_nested_message ()); |
+ EXPECT_TRUE(message.has_optional_foreign_message ()); |
+ EXPECT_TRUE(message.has_optional_import_message ()); |
+ EXPECT_TRUE(message.has_optional_public_import_message()); |
+ EXPECT_TRUE(message.has_optional_lazy_message ()); |
- EXPECT_TRUE(message.optionalgroup ().has_a()); |
- EXPECT_TRUE(message.optional_nested_message ().has_bb()); |
- EXPECT_TRUE(message.optional_foreign_message().has_c()); |
- EXPECT_TRUE(message.optional_import_message ().has_d()); |
+ EXPECT_TRUE(message.optionalgroup ().has_a()); |
+ EXPECT_TRUE(message.optional_nested_message ().has_bb()); |
+ EXPECT_TRUE(message.optional_foreign_message ().has_c()); |
+ EXPECT_TRUE(message.optional_import_message ().has_d()); |
+ EXPECT_TRUE(message.optional_public_import_message().has_e()); |
+ EXPECT_TRUE(message.optional_lazy_message ().has_bb()); |
EXPECT_TRUE(message.has_optional_nested_enum ()); |
EXPECT_TRUE(message.has_optional_foreign_enum()); |
@@ -291,10 +313,12 @@ |
EXPECT_EQ("115", message.optional_string ()); |
EXPECT_EQ("116", message.optional_bytes ()); |
- EXPECT_EQ(117, message.optionalgroup ().a()); |
- EXPECT_EQ(118, message.optional_nested_message ().bb()); |
- EXPECT_EQ(119, message.optional_foreign_message().c()); |
- EXPECT_EQ(120, message.optional_import_message ().d()); |
+ EXPECT_EQ(117, message.optionalgroup ().a()); |
+ EXPECT_EQ(118, message.optional_nested_message ().bb()); |
+ EXPECT_EQ(119, message.optional_foreign_message ().c()); |
+ EXPECT_EQ(120, message.optional_import_message ().d()); |
+ EXPECT_EQ(126, message.optional_public_import_message ().e()); |
+ EXPECT_EQ(127, message.optional_lazy_message ().bb()); |
EXPECT_EQ(unittest::TestAllTypes::BAZ, message.optional_nested_enum ()); |
EXPECT_EQ(unittest::FOREIGN_BAZ , message.optional_foreign_enum()); |
@@ -323,6 +347,7 @@ |
ASSERT_EQ(2, message.repeated_nested_message_size ()); |
ASSERT_EQ(2, message.repeated_foreign_message_size()); |
ASSERT_EQ(2, message.repeated_import_message_size ()); |
+ ASSERT_EQ(2, message.repeated_lazy_message_size ()); |
ASSERT_EQ(2, message.repeated_nested_enum_size ()); |
ASSERT_EQ(2, message.repeated_foreign_enum_size ()); |
ASSERT_EQ(2, message.repeated_import_enum_size ()); |
@@ -352,6 +377,7 @@ |
EXPECT_EQ(218, message.repeated_nested_message (0).bb()); |
EXPECT_EQ(219, message.repeated_foreign_message(0).c()); |
EXPECT_EQ(220, message.repeated_import_message (0).d()); |
+ EXPECT_EQ(227, message.repeated_lazy_message (0).bb()); |
EXPECT_EQ(unittest::TestAllTypes::BAR, message.repeated_nested_enum (0)); |
@@ -378,6 +404,7 @@ |
EXPECT_EQ(318, message.repeated_nested_message (1).bb()); |
EXPECT_EQ(319, message.repeated_foreign_message(1).c()); |
EXPECT_EQ(320, message.repeated_import_message (1).d()); |
+ EXPECT_EQ(327, message.repeated_lazy_message (1).bb()); |
EXPECT_EQ(unittest::TestAllTypes::BAZ, message.repeated_nested_enum (1)); |
EXPECT_EQ(unittest::FOREIGN_BAZ , message.repeated_foreign_enum(1)); |
@@ -449,10 +476,12 @@ |
EXPECT_FALSE(message.has_optional_string ()); |
EXPECT_FALSE(message.has_optional_bytes ()); |
- EXPECT_FALSE(message.has_optionalgroup ()); |
- EXPECT_FALSE(message.has_optional_nested_message ()); |
- EXPECT_FALSE(message.has_optional_foreign_message()); |
- EXPECT_FALSE(message.has_optional_import_message ()); |
+ EXPECT_FALSE(message.has_optionalgroup ()); |
+ EXPECT_FALSE(message.has_optional_nested_message ()); |
+ EXPECT_FALSE(message.has_optional_foreign_message ()); |
+ EXPECT_FALSE(message.has_optional_import_message ()); |
+ EXPECT_FALSE(message.has_optional_public_import_message()); |
+ EXPECT_FALSE(message.has_optional_lazy_message ()); |
EXPECT_FALSE(message.has_optional_nested_enum ()); |
EXPECT_FALSE(message.has_optional_foreign_enum()); |
@@ -479,15 +508,19 @@ |
EXPECT_EQ("" , message.optional_bytes ()); |
// Embedded messages should also be clear. |
- EXPECT_FALSE(message.optionalgroup ().has_a()); |
- EXPECT_FALSE(message.optional_nested_message ().has_bb()); |
- EXPECT_FALSE(message.optional_foreign_message().has_c()); |
- EXPECT_FALSE(message.optional_import_message ().has_d()); |
+ EXPECT_FALSE(message.optionalgroup ().has_a()); |
+ EXPECT_FALSE(message.optional_nested_message ().has_bb()); |
+ EXPECT_FALSE(message.optional_foreign_message ().has_c()); |
+ EXPECT_FALSE(message.optional_import_message ().has_d()); |
+ EXPECT_FALSE(message.optional_public_import_message().has_e()); |
+ EXPECT_FALSE(message.optional_lazy_message ().has_bb()); |
- EXPECT_EQ(0, message.optionalgroup ().a()); |
- EXPECT_EQ(0, message.optional_nested_message ().bb()); |
- EXPECT_EQ(0, message.optional_foreign_message().c()); |
- EXPECT_EQ(0, message.optional_import_message ().d()); |
+ EXPECT_EQ(0, message.optionalgroup ().a()); |
+ EXPECT_EQ(0, message.optional_nested_message ().bb()); |
+ EXPECT_EQ(0, message.optional_foreign_message ().c()); |
+ EXPECT_EQ(0, message.optional_import_message ().d()); |
+ EXPECT_EQ(0, message.optional_public_import_message().e()); |
+ EXPECT_EQ(0, message.optional_lazy_message ().bb()); |
// Enums without defaults are set to the first value in the enum. |
EXPECT_EQ(unittest::TestAllTypes::FOO, message.optional_nested_enum ()); |
@@ -516,6 +549,7 @@ |
EXPECT_EQ(0, message.repeated_nested_message_size ()); |
EXPECT_EQ(0, message.repeated_foreign_message_size()); |
EXPECT_EQ(0, message.repeated_import_message_size ()); |
+ EXPECT_EQ(0, message.repeated_lazy_message_size ()); |
EXPECT_EQ(0, message.repeated_nested_enum_size ()); |
EXPECT_EQ(0, message.repeated_foreign_enum_size ()); |
EXPECT_EQ(0, message.repeated_import_enum_size ()); |
@@ -595,6 +629,7 @@ |
ASSERT_EQ(2, message.repeated_nested_message_size ()); |
ASSERT_EQ(2, message.repeated_foreign_message_size()); |
ASSERT_EQ(2, message.repeated_import_message_size ()); |
+ ASSERT_EQ(2, message.repeated_lazy_message_size ()); |
ASSERT_EQ(2, message.repeated_nested_enum_size ()); |
ASSERT_EQ(2, message.repeated_foreign_enum_size ()); |
ASSERT_EQ(2, message.repeated_import_enum_size ()); |
@@ -624,6 +659,7 @@ |
EXPECT_EQ(218, message.repeated_nested_message (0).bb()); |
EXPECT_EQ(219, message.repeated_foreign_message(0).c()); |
EXPECT_EQ(220, message.repeated_import_message (0).d()); |
+ EXPECT_EQ(227, message.repeated_lazy_message (0).bb()); |
EXPECT_EQ(unittest::TestAllTypes::BAR, message.repeated_nested_enum (0)); |
EXPECT_EQ(unittest::FOREIGN_BAR , message.repeated_foreign_enum(0)); |
@@ -651,6 +687,7 @@ |
EXPECT_EQ(518, message.repeated_nested_message (1).bb()); |
EXPECT_EQ(519, message.repeated_foreign_message(1).c()); |
EXPECT_EQ(520, message.repeated_import_message (1).d()); |
+ EXPECT_EQ(527, message.repeated_lazy_message (1).bb()); |
EXPECT_EQ(unittest::TestAllTypes::FOO, message.repeated_nested_enum (1)); |
EXPECT_EQ(unittest::FOREIGN_FOO , message.repeated_foreign_enum(1)); |
@@ -953,6 +990,9 @@ |
message->SetExtension(unittest::optional_string_piece_extension, "124"); |
message->SetExtension(unittest::optional_cord_extension, "125"); |
+ message->MutableExtension(unittest::optional_public_import_message_extension)->set_e(126); |
+ message->MutableExtension(unittest::optional_lazy_message_extension)->set_bb(127); |
+ |
// ----------------------------------------------------------------- |
message->AddExtension(unittest::repeated_int32_extension , 201); |
@@ -975,6 +1015,7 @@ |
message->AddExtension(unittest::repeated_nested_message_extension )->set_bb(218); |
message->AddExtension(unittest::repeated_foreign_message_extension)->set_c(219); |
message->AddExtension(unittest::repeated_import_message_extension )->set_d(220); |
+ message->AddExtension(unittest::repeated_lazy_message_extension )->set_bb(227); |
message->AddExtension(unittest::repeated_nested_enum_extension , unittest::TestAllTypes::BAR); |
message->AddExtension(unittest::repeated_foreign_enum_extension, unittest::FOREIGN_BAR ); |
@@ -1004,6 +1045,7 @@ |
message->AddExtension(unittest::repeated_nested_message_extension )->set_bb(318); |
message->AddExtension(unittest::repeated_foreign_message_extension)->set_c(319); |
message->AddExtension(unittest::repeated_import_message_extension )->set_d(320); |
+ message->AddExtension(unittest::repeated_lazy_message_extension )->set_bb(327); |
message->AddExtension(unittest::repeated_nested_enum_extension , unittest::TestAllTypes::BAZ); |
message->AddExtension(unittest::repeated_foreign_enum_extension, unittest::FOREIGN_BAZ ); |
@@ -1073,6 +1115,7 @@ |
message->MutableExtension(unittest::repeated_nested_message_extension , 1)->set_bb(518); |
message->MutableExtension(unittest::repeated_foreign_message_extension, 1)->set_c(519); |
message->MutableExtension(unittest::repeated_import_message_extension , 1)->set_d(520); |
+ message->MutableExtension(unittest::repeated_lazy_message_extension , 1)->set_bb(527); |
message->SetExtension(unittest::repeated_nested_enum_extension , 1, unittest::TestAllTypes::FOO); |
message->SetExtension(unittest::repeated_foreign_enum_extension, 1, unittest::FOREIGN_FOO ); |
@@ -1102,15 +1145,19 @@ |
EXPECT_TRUE(message.HasExtension(unittest::optional_string_extension )); |
EXPECT_TRUE(message.HasExtension(unittest::optional_bytes_extension )); |
- EXPECT_TRUE(message.HasExtension(unittest::optionalgroup_extension )); |
- EXPECT_TRUE(message.HasExtension(unittest::optional_nested_message_extension )); |
- EXPECT_TRUE(message.HasExtension(unittest::optional_foreign_message_extension)); |
- EXPECT_TRUE(message.HasExtension(unittest::optional_import_message_extension )); |
+ EXPECT_TRUE(message.HasExtension(unittest::optionalgroup_extension )); |
+ EXPECT_TRUE(message.HasExtension(unittest::optional_nested_message_extension )); |
+ EXPECT_TRUE(message.HasExtension(unittest::optional_foreign_message_extension )); |
+ EXPECT_TRUE(message.HasExtension(unittest::optional_import_message_extension )); |
+ EXPECT_TRUE(message.HasExtension(unittest::optional_public_import_message_extension)); |
+ EXPECT_TRUE(message.HasExtension(unittest::optional_lazy_message_extension )); |
- EXPECT_TRUE(message.GetExtension(unittest::optionalgroup_extension ).has_a()); |
- EXPECT_TRUE(message.GetExtension(unittest::optional_nested_message_extension ).has_bb()); |
- EXPECT_TRUE(message.GetExtension(unittest::optional_foreign_message_extension).has_c()); |
- EXPECT_TRUE(message.GetExtension(unittest::optional_import_message_extension ).has_d()); |
+ EXPECT_TRUE(message.GetExtension(unittest::optionalgroup_extension ).has_a()); |
+ EXPECT_TRUE(message.GetExtension(unittest::optional_nested_message_extension ).has_bb()); |
+ EXPECT_TRUE(message.GetExtension(unittest::optional_foreign_message_extension ).has_c()); |
+ EXPECT_TRUE(message.GetExtension(unittest::optional_import_message_extension ).has_d()); |
+ EXPECT_TRUE(message.GetExtension(unittest::optional_public_import_message_extension).has_e()); |
+ EXPECT_TRUE(message.GetExtension(unittest::optional_lazy_message_extension ).has_bb()); |
EXPECT_TRUE(message.HasExtension(unittest::optional_nested_enum_extension )); |
EXPECT_TRUE(message.HasExtension(unittest::optional_foreign_enum_extension)); |
@@ -1146,6 +1193,8 @@ |
EXPECT_EQ("124", message.GetExtension(unittest::optional_string_piece_extension)); |
EXPECT_EQ("125", message.GetExtension(unittest::optional_cord_extension)); |
+ EXPECT_EQ(126, message.GetExtension(unittest::optional_public_import_message_extension ).e()); |
+ EXPECT_EQ(127, message.GetExtension(unittest::optional_lazy_message_extension).bb()); |
// ----------------------------------------------------------------- |
@@ -1169,6 +1218,7 @@ |
ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_nested_message_extension )); |
ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_foreign_message_extension)); |
ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_import_message_extension )); |
+ ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_lazy_message_extension )); |
ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_nested_enum_extension )); |
ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_foreign_enum_extension )); |
ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_import_enum_extension )); |
@@ -1196,6 +1246,7 @@ |
EXPECT_EQ(218, message.GetExtension(unittest::repeated_nested_message_extension , 0).bb()); |
EXPECT_EQ(219, message.GetExtension(unittest::repeated_foreign_message_extension, 0).c()); |
EXPECT_EQ(220, message.GetExtension(unittest::repeated_import_message_extension , 0).d()); |
+ EXPECT_EQ(227, message.GetExtension(unittest::repeated_lazy_message_extension , 0).bb()); |
EXPECT_EQ(unittest::TestAllTypes::BAR, message.GetExtension(unittest::repeated_nested_enum_extension , 0)); |
EXPECT_EQ(unittest::FOREIGN_BAR , message.GetExtension(unittest::repeated_foreign_enum_extension, 0)); |
@@ -1224,6 +1275,7 @@ |
EXPECT_EQ(318, message.GetExtension(unittest::repeated_nested_message_extension , 1).bb()); |
EXPECT_EQ(319, message.GetExtension(unittest::repeated_foreign_message_extension, 1).c()); |
EXPECT_EQ(320, message.GetExtension(unittest::repeated_import_message_extension , 1).d()); |
+ EXPECT_EQ(327, message.GetExtension(unittest::repeated_lazy_message_extension , 1).bb()); |
EXPECT_EQ(unittest::TestAllTypes::BAZ, message.GetExtension(unittest::repeated_nested_enum_extension , 1)); |
EXPECT_EQ(unittest::FOREIGN_BAZ , message.GetExtension(unittest::repeated_foreign_enum_extension, 1)); |
@@ -1307,10 +1359,12 @@ |
EXPECT_FALSE(message.HasExtension(unittest::optional_string_extension )); |
EXPECT_FALSE(message.HasExtension(unittest::optional_bytes_extension )); |
- EXPECT_FALSE(message.HasExtension(unittest::optionalgroup_extension )); |
- EXPECT_FALSE(message.HasExtension(unittest::optional_nested_message_extension )); |
- EXPECT_FALSE(message.HasExtension(unittest::optional_foreign_message_extension)); |
- EXPECT_FALSE(message.HasExtension(unittest::optional_import_message_extension )); |
+ EXPECT_FALSE(message.HasExtension(unittest::optionalgroup_extension )); |
+ EXPECT_FALSE(message.HasExtension(unittest::optional_nested_message_extension )); |
+ EXPECT_FALSE(message.HasExtension(unittest::optional_foreign_message_extension )); |
+ EXPECT_FALSE(message.HasExtension(unittest::optional_import_message_extension )); |
+ EXPECT_FALSE(message.HasExtension(unittest::optional_public_import_message_extension)); |
+ EXPECT_FALSE(message.HasExtension(unittest::optional_lazy_message_extension )); |
EXPECT_FALSE(message.HasExtension(unittest::optional_nested_enum_extension )); |
EXPECT_FALSE(message.HasExtension(unittest::optional_foreign_enum_extension)); |
@@ -1337,15 +1391,19 @@ |
EXPECT_EQ("" , message.GetExtension(unittest::optional_bytes_extension )); |
// Embedded messages should also be clear. |
- EXPECT_FALSE(message.GetExtension(unittest::optionalgroup_extension ).has_a()); |
- EXPECT_FALSE(message.GetExtension(unittest::optional_nested_message_extension ).has_bb()); |
- EXPECT_FALSE(message.GetExtension(unittest::optional_foreign_message_extension).has_c()); |
- EXPECT_FALSE(message.GetExtension(unittest::optional_import_message_extension ).has_d()); |
+ EXPECT_FALSE(message.GetExtension(unittest::optionalgroup_extension ).has_a()); |
+ EXPECT_FALSE(message.GetExtension(unittest::optional_nested_message_extension ).has_bb()); |
+ EXPECT_FALSE(message.GetExtension(unittest::optional_foreign_message_extension ).has_c()); |
+ EXPECT_FALSE(message.GetExtension(unittest::optional_import_message_extension ).has_d()); |
+ EXPECT_FALSE(message.GetExtension(unittest::optional_public_import_message_extension).has_e()); |
+ EXPECT_FALSE(message.GetExtension(unittest::optional_lazy_message_extension ).has_bb()); |
- EXPECT_EQ(0, message.GetExtension(unittest::optionalgroup_extension ).a()); |
- EXPECT_EQ(0, message.GetExtension(unittest::optional_nested_message_extension ).bb()); |
- EXPECT_EQ(0, message.GetExtension(unittest::optional_foreign_message_extension).c()); |
- EXPECT_EQ(0, message.GetExtension(unittest::optional_import_message_extension ).d()); |
+ EXPECT_EQ(0, message.GetExtension(unittest::optionalgroup_extension ).a()); |
+ EXPECT_EQ(0, message.GetExtension(unittest::optional_nested_message_extension ).bb()); |
+ EXPECT_EQ(0, message.GetExtension(unittest::optional_foreign_message_extension ).c()); |
+ EXPECT_EQ(0, message.GetExtension(unittest::optional_import_message_extension ).d()); |
+ EXPECT_EQ(0, message.GetExtension(unittest::optional_public_import_message_extension).e()); |
+ EXPECT_EQ(0, message.GetExtension(unittest::optional_lazy_message_extension ).bb()); |
// Enums without defaults are set to the first value in the enum. |
EXPECT_EQ(unittest::TestAllTypes::FOO, message.GetExtension(unittest::optional_nested_enum_extension )); |
@@ -1376,6 +1434,7 @@ |
EXPECT_EQ(0, message.ExtensionSize(unittest::repeated_nested_message_extension )); |
EXPECT_EQ(0, message.ExtensionSize(unittest::repeated_foreign_message_extension)); |
EXPECT_EQ(0, message.ExtensionSize(unittest::repeated_import_message_extension )); |
+ EXPECT_EQ(0, message.ExtensionSize(unittest::repeated_lazy_message_extension )); |
EXPECT_EQ(0, message.ExtensionSize(unittest::repeated_nested_enum_extension )); |
EXPECT_EQ(0, message.ExtensionSize(unittest::repeated_foreign_enum_extension )); |
EXPECT_EQ(0, message.ExtensionSize(unittest::repeated_import_enum_extension )); |
@@ -1459,6 +1518,7 @@ |
ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_nested_message_extension )); |
ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_foreign_message_extension)); |
ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_import_message_extension )); |
+ ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_lazy_message_extension )); |
ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_nested_enum_extension )); |
ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_foreign_enum_extension )); |
ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_import_enum_extension )); |
@@ -1486,6 +1546,7 @@ |
EXPECT_EQ(218, message.GetExtension(unittest::repeated_nested_message_extension , 0).bb()); |
EXPECT_EQ(219, message.GetExtension(unittest::repeated_foreign_message_extension, 0).c()); |
EXPECT_EQ(220, message.GetExtension(unittest::repeated_import_message_extension , 0).d()); |
+ EXPECT_EQ(227, message.GetExtension(unittest::repeated_lazy_message_extension , 0).bb()); |
EXPECT_EQ(unittest::TestAllTypes::BAR, message.GetExtension(unittest::repeated_nested_enum_extension , 0)); |
EXPECT_EQ(unittest::FOREIGN_BAR , message.GetExtension(unittest::repeated_foreign_enum_extension, 0)); |
@@ -1515,6 +1576,7 @@ |
EXPECT_EQ(518, message.GetExtension(unittest::repeated_nested_message_extension , 1).bb()); |
EXPECT_EQ(519, message.GetExtension(unittest::repeated_foreign_message_extension, 1).c()); |
EXPECT_EQ(520, message.GetExtension(unittest::repeated_import_message_extension , 1).d()); |
+ EXPECT_EQ(527, message.GetExtension(unittest::repeated_lazy_message_extension , 1).bb()); |
EXPECT_EQ(unittest::TestAllTypes::FOO, message.GetExtension(unittest::repeated_nested_enum_extension , 1)); |
EXPECT_EQ(unittest::FOREIGN_FOO , message.GetExtension(unittest::repeated_foreign_enum_extension, 1)); |
@@ -1750,6 +1812,7 @@ |
ASSERT_EQ(1, message.repeated_nested_message_size ()); |
ASSERT_EQ(1, message.repeated_foreign_message_size()); |
ASSERT_EQ(1, message.repeated_import_message_size ()); |
+ ASSERT_EQ(1, message.repeated_import_message_size ()); |
ASSERT_EQ(1, message.repeated_nested_enum_size ()); |
ASSERT_EQ(1, message.repeated_foreign_enum_size ()); |
ASSERT_EQ(1, message.repeated_import_enum_size ()); |
@@ -1780,6 +1843,7 @@ |
EXPECT_EQ(218, message.repeated_nested_message (0).bb()); |
EXPECT_EQ(219, message.repeated_foreign_message(0).c()); |
EXPECT_EQ(220, message.repeated_import_message (0).d()); |
+ EXPECT_EQ(220, message.repeated_import_message (0).d()); |
EXPECT_EQ(unittest::TestAllTypes::BAR, message.repeated_nested_enum (0)); |
EXPECT_EQ(unittest::FOREIGN_BAR , message.repeated_foreign_enum(0)); |
@@ -1810,6 +1874,7 @@ |
ASSERT_EQ(1, message.ExtensionSize(unittest::repeated_nested_message_extension )); |
ASSERT_EQ(1, message.ExtensionSize(unittest::repeated_foreign_message_extension)); |
ASSERT_EQ(1, message.ExtensionSize(unittest::repeated_import_message_extension )); |
+ ASSERT_EQ(1, message.ExtensionSize(unittest::repeated_lazy_message_extension )); |
ASSERT_EQ(1, message.ExtensionSize(unittest::repeated_nested_enum_extension )); |
ASSERT_EQ(1, message.ExtensionSize(unittest::repeated_foreign_enum_extension )); |
ASSERT_EQ(1, message.ExtensionSize(unittest::repeated_import_enum_extension )); |
@@ -1838,6 +1903,7 @@ |
EXPECT_EQ(218, message.GetExtension(unittest::repeated_nested_message_extension , 0).bb()); |
EXPECT_EQ(219, message.GetExtension(unittest::repeated_foreign_message_extension, 0).c()); |
EXPECT_EQ(220, message.GetExtension(unittest::repeated_import_message_extension , 0).d()); |
+ EXPECT_EQ(227, message.GetExtension(unittest::repeated_lazy_message_extension , 0).bb()); |
EXPECT_EQ(unittest::TestAllTypes::BAR, message.GetExtension(unittest::repeated_nested_enum_extension , 0)); |
EXPECT_EQ(unittest::FOREIGN_BAR , message.GetExtension(unittest::repeated_foreign_enum_extension, 0)); |
@@ -1847,6 +1913,36 @@ |
EXPECT_EQ("225", message.GetExtension(unittest::repeated_cord_extension, 0)); |
} |
+void TestUtil::ExpectLastRepeatedsReleased( |
+ const unittest::TestAllTypes& message) { |
+ ASSERT_EQ(1, message.repeatedgroup_size ()); |
+ ASSERT_EQ(1, message.repeated_nested_message_size ()); |
+ ASSERT_EQ(1, message.repeated_foreign_message_size()); |
+ ASSERT_EQ(1, message.repeated_import_message_size ()); |
+ ASSERT_EQ(1, message.repeated_import_message_size ()); |
+ |
+ EXPECT_EQ(217, message.repeatedgroup (0).a()); |
+ EXPECT_EQ(218, message.repeated_nested_message (0).bb()); |
+ EXPECT_EQ(219, message.repeated_foreign_message(0).c()); |
+ EXPECT_EQ(220, message.repeated_import_message (0).d()); |
+ EXPECT_EQ(220, message.repeated_import_message (0).d()); |
+} |
+ |
+void TestUtil::ExpectLastRepeatedExtensionsReleased( |
+ const unittest::TestAllExtensions& message) { |
+ ASSERT_EQ(1, message.ExtensionSize(unittest::repeatedgroup_extension )); |
+ ASSERT_EQ(1, message.ExtensionSize(unittest::repeated_nested_message_extension )); |
+ ASSERT_EQ(1, message.ExtensionSize(unittest::repeated_foreign_message_extension)); |
+ ASSERT_EQ(1, message.ExtensionSize(unittest::repeated_import_message_extension )); |
+ ASSERT_EQ(1, message.ExtensionSize(unittest::repeated_lazy_message_extension )); |
+ |
+ EXPECT_EQ(217, message.GetExtension(unittest::repeatedgroup_extension , 0).a()); |
+ EXPECT_EQ(218, message.GetExtension(unittest::repeated_nested_message_extension , 0).bb()); |
+ EXPECT_EQ(219, message.GetExtension(unittest::repeated_foreign_message_extension, 0).c()); |
+ EXPECT_EQ(220, message.GetExtension(unittest::repeated_import_message_extension , 0).d()); |
+ EXPECT_EQ(227, message.GetExtension(unittest::repeated_lazy_message_extension , 0).bb()); |
+} |
+ |
void TestUtil::ExpectRepeatedsSwapped( |
const unittest::TestAllTypes& message) { |
ASSERT_EQ(2, message.repeated_int32_size ()); |
@@ -1869,6 +1965,7 @@ |
ASSERT_EQ(2, message.repeated_nested_message_size ()); |
ASSERT_EQ(2, message.repeated_foreign_message_size()); |
ASSERT_EQ(2, message.repeated_import_message_size ()); |
+ ASSERT_EQ(2, message.repeated_import_message_size ()); |
ASSERT_EQ(2, message.repeated_nested_enum_size ()); |
ASSERT_EQ(2, message.repeated_foreign_enum_size ()); |
ASSERT_EQ(2, message.repeated_import_enum_size ()); |
@@ -1899,6 +1996,7 @@ |
EXPECT_EQ(218, message.repeated_nested_message (1).bb()); |
EXPECT_EQ(219, message.repeated_foreign_message(1).c()); |
EXPECT_EQ(220, message.repeated_import_message (1).d()); |
+ EXPECT_EQ(220, message.repeated_import_message (1).d()); |
EXPECT_EQ(unittest::TestAllTypes::BAR, message.repeated_nested_enum (1)); |
EXPECT_EQ(unittest::FOREIGN_BAR , message.repeated_foreign_enum(1)); |
@@ -1924,6 +2022,7 @@ |
EXPECT_EQ(318, message.repeated_nested_message (0).bb()); |
EXPECT_EQ(319, message.repeated_foreign_message(0).c()); |
EXPECT_EQ(320, message.repeated_import_message (0).d()); |
+ EXPECT_EQ(320, message.repeated_import_message (0).d()); |
EXPECT_EQ(unittest::TestAllTypes::BAZ, message.repeated_nested_enum (0)); |
EXPECT_EQ(unittest::FOREIGN_BAZ , message.repeated_foreign_enum(0)); |
@@ -1953,6 +2052,7 @@ |
ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_nested_message_extension )); |
ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_foreign_message_extension)); |
ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_import_message_extension )); |
+ ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_lazy_message_extension )); |
ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_nested_enum_extension )); |
ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_foreign_enum_extension )); |
ASSERT_EQ(2, message.ExtensionSize(unittest::repeated_import_enum_extension )); |
@@ -1980,6 +2080,7 @@ |
EXPECT_EQ(218, message.GetExtension(unittest::repeated_nested_message_extension , 1).bb()); |
EXPECT_EQ(219, message.GetExtension(unittest::repeated_foreign_message_extension, 1).c()); |
EXPECT_EQ(220, message.GetExtension(unittest::repeated_import_message_extension , 1).d()); |
+ EXPECT_EQ(227, message.GetExtension(unittest::repeated_lazy_message_extension , 1).bb()); |
EXPECT_EQ(unittest::TestAllTypes::BAR, message.GetExtension(unittest::repeated_nested_enum_extension , 1)); |
EXPECT_EQ(unittest::FOREIGN_BAR , message.GetExtension(unittest::repeated_foreign_enum_extension, 1)); |
@@ -2008,6 +2109,7 @@ |
EXPECT_EQ(318, message.GetExtension(unittest::repeated_nested_message_extension , 0).bb()); |
EXPECT_EQ(319, message.GetExtension(unittest::repeated_foreign_message_extension, 0).c()); |
EXPECT_EQ(320, message.GetExtension(unittest::repeated_import_message_extension , 0).d()); |
+ EXPECT_EQ(327, message.GetExtension(unittest::repeated_lazy_message_extension , 0).bb()); |
EXPECT_EQ(unittest::TestAllTypes::BAZ, message.GetExtension(unittest::repeated_nested_enum_extension , 0)); |
EXPECT_EQ(unittest::FOREIGN_BAZ , message.GetExtension(unittest::repeated_foreign_enum_extension, 0)); |
@@ -2031,6 +2133,8 @@ |
pool->FindFieldByName("protobuf_unittest.ForeignMessage.c"); |
import_d_ = |
pool->FindFieldByName("protobuf_unittest_import.ImportMessage.d"); |
+ import_e_ = |
+ pool->FindFieldByName("protobuf_unittest_import.PublicImportMessage.e"); |
nested_foo_ = |
pool->FindEnumValueByName("protobuf_unittest.TestAllTypes.FOO"); |
nested_bar_ = |
@@ -2067,6 +2171,7 @@ |
EXPECT_TRUE(nested_b_ != NULL); |
EXPECT_TRUE(foreign_c_ != NULL); |
EXPECT_TRUE(import_d_ != NULL); |
+ EXPECT_TRUE(import_e_ != NULL); |
EXPECT_TRUE(nested_foo_ != NULL); |
EXPECT_TRUE(nested_bar_ != NULL); |
EXPECT_TRUE(nested_baz_ != NULL); |
@@ -2129,6 +2234,12 @@ |
reflection->SetString(message, F("optional_string_piece"), "124"); |
reflection->SetString(message, F("optional_cord"), "125"); |
+ sub_message = reflection->MutableMessage(message, F("optional_public_import_message")); |
+ sub_message->GetReflection()->SetInt32(sub_message, import_e_, 126); |
+ |
+ sub_message = reflection->MutableMessage(message, F("optional_lazy_message")); |
+ sub_message->GetReflection()->SetInt32(sub_message, nested_b_, 127); |
+ |
// ----------------------------------------------------------------- |
reflection->AddInt32 (message, F("repeated_int32" ), 201); |
@@ -2155,6 +2266,8 @@ |
sub_message->GetReflection()->SetInt32(sub_message, foreign_c_, 219); |
sub_message = reflection->AddMessage(message, F("repeated_import_message")); |
sub_message->GetReflection()->SetInt32(sub_message, import_d_, 220); |
+ sub_message = reflection->AddMessage(message, F("repeated_lazy_message")); |
+ sub_message->GetReflection()->SetInt32(sub_message, nested_b_, 227); |
reflection->AddEnum(message, F("repeated_nested_enum" ), nested_bar_); |
reflection->AddEnum(message, F("repeated_foreign_enum"), foreign_bar_); |
@@ -2188,6 +2301,8 @@ |
sub_message->GetReflection()->SetInt32(sub_message, foreign_c_, 319); |
sub_message = reflection->AddMessage(message, F("repeated_import_message")); |
sub_message->GetReflection()->SetInt32(sub_message, import_d_, 320); |
+ sub_message = reflection->AddMessage(message, F("repeated_lazy_message")); |
+ sub_message->GetReflection()->SetInt32(sub_message, nested_b_, 327); |
reflection->AddEnum(message, F("repeated_nested_enum" ), nested_baz_); |
reflection->AddEnum(message, F("repeated_foreign_enum"), foreign_baz_); |
@@ -2289,10 +2404,12 @@ |
EXPECT_TRUE(reflection->HasField(message, F("optional_string" ))); |
EXPECT_TRUE(reflection->HasField(message, F("optional_bytes" ))); |
- EXPECT_TRUE(reflection->HasField(message, F("optionalgroup" ))); |
- EXPECT_TRUE(reflection->HasField(message, F("optional_nested_message" ))); |
- EXPECT_TRUE(reflection->HasField(message, F("optional_foreign_message"))); |
- EXPECT_TRUE(reflection->HasField(message, F("optional_import_message" ))); |
+ EXPECT_TRUE(reflection->HasField(message, F("optionalgroup" ))); |
+ EXPECT_TRUE(reflection->HasField(message, F("optional_nested_message" ))); |
+ EXPECT_TRUE(reflection->HasField(message, F("optional_foreign_message" ))); |
+ EXPECT_TRUE(reflection->HasField(message, F("optional_import_message" ))); |
+ EXPECT_TRUE(reflection->HasField(message, F("optional_public_import_message"))); |
+ EXPECT_TRUE(reflection->HasField(message, F("optional_lazy_message" ))); |
sub_message = &reflection->GetMessage(message, F("optionalgroup")); |
EXPECT_TRUE(sub_message->GetReflection()->HasField(*sub_message, group_a_)); |
@@ -2302,6 +2419,10 @@ |
EXPECT_TRUE(sub_message->GetReflection()->HasField(*sub_message, foreign_c_)); |
sub_message = &reflection->GetMessage(message, F("optional_import_message")); |
EXPECT_TRUE(sub_message->GetReflection()->HasField(*sub_message, import_d_)); |
+ sub_message = &reflection->GetMessage(message, F("optional_public_import_message")); |
+ EXPECT_TRUE(sub_message->GetReflection()->HasField(*sub_message, import_e_)); |
+ sub_message = &reflection->GetMessage(message, F("optional_lazy_message")); |
+ EXPECT_TRUE(sub_message->GetReflection()->HasField(*sub_message, nested_b_)); |
EXPECT_TRUE(reflection->HasField(message, F("optional_nested_enum" ))); |
EXPECT_TRUE(reflection->HasField(message, F("optional_foreign_enum"))); |
@@ -2337,6 +2458,10 @@ |
EXPECT_EQ(119, sub_message->GetReflection()->GetInt32(*sub_message, foreign_c_)); |
sub_message = &reflection->GetMessage(message, F("optional_import_message")); |
EXPECT_EQ(120, sub_message->GetReflection()->GetInt32(*sub_message, import_d_)); |
+ sub_message = &reflection->GetMessage(message, F("optional_public_import_message")); |
+ EXPECT_EQ(126, sub_message->GetReflection()->GetInt32(*sub_message, import_e_)); |
+ sub_message = &reflection->GetMessage(message, F("optional_lazy_message")); |
+ EXPECT_EQ(127, sub_message->GetReflection()->GetInt32(*sub_message, nested_b_)); |
EXPECT_EQ( nested_baz_, reflection->GetEnum(message, F("optional_nested_enum" ))); |
EXPECT_EQ(foreign_baz_, reflection->GetEnum(message, F("optional_foreign_enum"))); |
@@ -2347,6 +2472,7 @@ |
EXPECT_EQ("125", reflection->GetString(message, F("optional_cord"))); |
EXPECT_EQ("125", reflection->GetStringReference(message, F("optional_cord"), &scratch)); |
+ |
} |
void TestUtil::ReflectionTester::ExpectAllFieldsSetViaReflection2( |
@@ -2377,6 +2503,7 @@ |
ASSERT_EQ(2, reflection->FieldSize(message, F("repeated_nested_message" ))); |
ASSERT_EQ(2, reflection->FieldSize(message, F("repeated_foreign_message"))); |
ASSERT_EQ(2, reflection->FieldSize(message, F("repeated_import_message" ))); |
+ ASSERT_EQ(2, reflection->FieldSize(message, F("repeated_lazy_message" ))); |
ASSERT_EQ(2, reflection->FieldSize(message, F("repeated_nested_enum" ))); |
ASSERT_EQ(2, reflection->FieldSize(message, F("repeated_foreign_enum" ))); |
ASSERT_EQ(2, reflection->FieldSize(message, F("repeated_import_enum" ))); |
@@ -2411,6 +2538,8 @@ |
EXPECT_EQ(219, sub_message->GetReflection()->GetInt32(*sub_message, foreign_c_)); |
sub_message = &reflection->GetRepeatedMessage(message, F("repeated_import_message"), 0); |
EXPECT_EQ(220, sub_message->GetReflection()->GetInt32(*sub_message, import_d_)); |
+ sub_message = &reflection->GetRepeatedMessage(message, F("repeated_lazy_message"), 0); |
+ EXPECT_EQ(227, sub_message->GetReflection()->GetInt32(*sub_message, nested_b_)); |
EXPECT_EQ( nested_bar_, reflection->GetRepeatedEnum(message, F("repeated_nested_enum" ),0)); |
EXPECT_EQ(foreign_bar_, reflection->GetRepeatedEnum(message, F("repeated_foreign_enum"),0)); |
@@ -2453,6 +2582,8 @@ |
EXPECT_EQ(319, sub_message->GetReflection()->GetInt32(*sub_message, foreign_c_)); |
sub_message = &reflection->GetRepeatedMessage(message, F("repeated_import_message"), 1); |
EXPECT_EQ(320, sub_message->GetReflection()->GetInt32(*sub_message, import_d_)); |
+ sub_message = &reflection->GetRepeatedMessage(message, F("repeated_lazy_message"), 1); |
+ EXPECT_EQ(327, sub_message->GetReflection()->GetInt32(*sub_message, nested_b_)); |
EXPECT_EQ( nested_baz_, reflection->GetRepeatedEnum(message, F("repeated_nested_enum" ),1)); |
EXPECT_EQ(foreign_baz_, reflection->GetRepeatedEnum(message, F("repeated_foreign_enum"),1)); |
@@ -2609,6 +2740,8 @@ |
EXPECT_FALSE(reflection->HasField(message, F("optional_nested_message" ))); |
EXPECT_FALSE(reflection->HasField(message, F("optional_foreign_message"))); |
EXPECT_FALSE(reflection->HasField(message, F("optional_import_message" ))); |
+ EXPECT_FALSE(reflection->HasField(message, F("optional_public_import_message"))); |
+ EXPECT_FALSE(reflection->HasField(message, F("optional_lazy_message"))); |
EXPECT_FALSE(reflection->HasField(message, F("optional_nested_enum" ))); |
EXPECT_FALSE(reflection->HasField(message, F("optional_foreign_enum"))); |
@@ -2650,6 +2783,12 @@ |
sub_message = &reflection->GetMessage(message, F("optional_import_message")); |
EXPECT_FALSE(sub_message->GetReflection()->HasField(*sub_message, import_d_)); |
EXPECT_EQ(0, sub_message->GetReflection()->GetInt32(*sub_message, import_d_)); |
+ sub_message = &reflection->GetMessage(message, F("optional_public_import_message")); |
+ EXPECT_FALSE(sub_message->GetReflection()->HasField(*sub_message, import_e_)); |
+ EXPECT_EQ(0, sub_message->GetReflection()->GetInt32(*sub_message, import_e_)); |
+ sub_message = &reflection->GetMessage(message, F("optional_lazy_message")); |
+ EXPECT_FALSE(sub_message->GetReflection()->HasField(*sub_message, nested_b_)); |
+ EXPECT_EQ(0, sub_message->GetReflection()->GetInt32(*sub_message, nested_b_)); |
// Enums without defaults are set to the first value in the enum. |
EXPECT_EQ( nested_foo_, reflection->GetEnum(message, F("optional_nested_enum" ))); |
@@ -2683,6 +2822,7 @@ |
EXPECT_EQ(0, reflection->FieldSize(message, F("repeated_nested_message" ))); |
EXPECT_EQ(0, reflection->FieldSize(message, F("repeated_foreign_message"))); |
EXPECT_EQ(0, reflection->FieldSize(message, F("repeated_import_message" ))); |
+ EXPECT_EQ(0, reflection->FieldSize(message, F("repeated_lazy_message" ))); |
EXPECT_EQ(0, reflection->FieldSize(message, F("repeated_nested_enum" ))); |
EXPECT_EQ(0, reflection->FieldSize(message, F("repeated_foreign_enum" ))); |
EXPECT_EQ(0, reflection->FieldSize(message, F("repeated_import_enum" ))); |
@@ -2796,6 +2936,8 @@ |
sub_message->GetReflection()->SetInt32(sub_message, foreign_c_, 519); |
sub_message = reflection->MutableRepeatedMessage(message, F("repeated_import_message"), 1); |
sub_message->GetReflection()->SetInt32(sub_message, import_d_, 520); |
+ sub_message = reflection->MutableRepeatedMessage(message, F("repeated_lazy_message"), 1); |
+ sub_message->GetReflection()->SetInt32(sub_message, nested_b_, 527); |
reflection->SetRepeatedEnum(message, F("repeated_nested_enum" ), 1, nested_foo_); |
reflection->SetRepeatedEnum(message, F("repeated_foreign_enum"), 1, foreign_foo_); |
@@ -2824,7 +2966,8 @@ |
reflection->SetRepeatedEnum (message, F("packed_enum" ), 1, foreign_foo_); |
} |
-void TestUtil::ReflectionTester::RemoveLastRepeatedsViaReflection(Message* message) { |
+void TestUtil::ReflectionTester::RemoveLastRepeatedsViaReflection( |
+ Message* message) { |
const Reflection* reflection = message->GetReflection(); |
vector<const FieldDescriptor*> output; |
@@ -2837,6 +2980,26 @@ |
} |
} |
+void TestUtil::ReflectionTester::ReleaseLastRepeatedsViaReflection( |
+ Message* message, bool expect_extensions_notnull) { |
+ const Reflection* reflection = message->GetReflection(); |
+ |
+ vector<const FieldDescriptor*> output; |
+ reflection->ListFields(*message, &output); |
+ for (int i=0; i<output.size(); ++i) { |
+ const FieldDescriptor* field = output[i]; |
+ if (!field->is_repeated()) continue; |
+ if (field->cpp_type() != FieldDescriptor::CPPTYPE_MESSAGE) continue; |
+ |
+ Message* released = reflection->ReleaseLast(message, field); |
+ if (!field->is_extension() || expect_extensions_notnull) { |
+ ASSERT_TRUE(released != NULL) << "ReleaseLast returned NULL for: " |
+ << field->name(); |
+ } |
+ delete released; |
+ } |
+} |
+ |
void TestUtil::ReflectionTester::SwapRepeatedsViaReflection(Message* message) { |
const Reflection* reflection = message->GetReflection(); |
@@ -2850,5 +3013,35 @@ |
} |
} |
+void TestUtil::ReflectionTester::ExpectMessagesReleasedViaReflection( |
+ Message* message, |
+ TestUtil::ReflectionTester::MessageReleaseState expected_release_state) { |
+ const Reflection* reflection = message->GetReflection(); |
+ |
+ static const char* fields[] = { |
+ "optionalgroup", |
+ "optional_nested_message", |
+ "optional_foreign_message", |
+ "optional_import_message", |
+ }; |
+ for (int i = 0; i < GOOGLE_ARRAYSIZE(fields); i++) { |
+ const Message& sub_message = reflection->GetMessage(*message, F(fields[i])); |
+ Message* released = reflection->ReleaseMessage(message, F(fields[i])); |
+ switch (expected_release_state) { |
+ case IS_NULL: |
+ EXPECT_TRUE(released == NULL); |
+ break; |
+ case NOT_NULL: |
+ EXPECT_TRUE(released != NULL); |
+ EXPECT_EQ(&sub_message, released); |
+ break; |
+ case CAN_BE_NULL: |
+ break; |
+ } |
+ delete released; |
+ EXPECT_FALSE(reflection->HasField(*message, F(fields[i]))); |
+ } |
+} |
+ |
} // namespace protobuf |
} // namespace google |