|
@@ -340,12 +340,20 @@ TEST(ReflectionOpsTest, IsInitialized) {
|
|
unittest::TestRequired message;
|
|
unittest::TestRequired message;
|
|
|
|
|
|
EXPECT_FALSE(ReflectionOps::IsInitialized(message));
|
|
EXPECT_FALSE(ReflectionOps::IsInitialized(message));
|
|
|
|
+ EXPECT_FALSE(ReflectionOps::IsInitialized(message, true, false));
|
|
|
|
+ EXPECT_TRUE(ReflectionOps::IsInitialized(message, false, true));
|
|
message.set_a(1);
|
|
message.set_a(1);
|
|
EXPECT_FALSE(ReflectionOps::IsInitialized(message));
|
|
EXPECT_FALSE(ReflectionOps::IsInitialized(message));
|
|
|
|
+ EXPECT_FALSE(ReflectionOps::IsInitialized(message, true, true));
|
|
|
|
+ EXPECT_TRUE(ReflectionOps::IsInitialized(message, false, true));
|
|
message.set_b(2);
|
|
message.set_b(2);
|
|
EXPECT_FALSE(ReflectionOps::IsInitialized(message));
|
|
EXPECT_FALSE(ReflectionOps::IsInitialized(message));
|
|
|
|
+ EXPECT_FALSE(ReflectionOps::IsInitialized(message, true, true));
|
|
|
|
+ EXPECT_TRUE(ReflectionOps::IsInitialized(message, false, true));
|
|
message.set_c(3);
|
|
message.set_c(3);
|
|
EXPECT_TRUE(ReflectionOps::IsInitialized(message));
|
|
EXPECT_TRUE(ReflectionOps::IsInitialized(message));
|
|
|
|
+ EXPECT_TRUE(ReflectionOps::IsInitialized(message, true, false));
|
|
|
|
+ EXPECT_TRUE(ReflectionOps::IsInitialized(message, false, true));
|
|
}
|
|
}
|
|
|
|
|
|
TEST(ReflectionOpsTest, ForeignIsInitialized) {
|
|
TEST(ReflectionOpsTest, ForeignIsInitialized) {
|
|
@@ -354,26 +362,35 @@ TEST(ReflectionOpsTest, ForeignIsInitialized) {
|
|
// Starts out initialized because the foreign message is itself an optional
|
|
// Starts out initialized because the foreign message is itself an optional
|
|
// field.
|
|
// field.
|
|
EXPECT_TRUE(ReflectionOps::IsInitialized(message));
|
|
EXPECT_TRUE(ReflectionOps::IsInitialized(message));
|
|
|
|
+ EXPECT_TRUE(ReflectionOps::IsInitialized(message, false, true));
|
|
|
|
|
|
// Once we create that field, the message is no longer initialized.
|
|
// Once we create that field, the message is no longer initialized.
|
|
message.mutable_optional_message();
|
|
message.mutable_optional_message();
|
|
EXPECT_FALSE(ReflectionOps::IsInitialized(message));
|
|
EXPECT_FALSE(ReflectionOps::IsInitialized(message));
|
|
|
|
+ EXPECT_TRUE(ReflectionOps::IsInitialized(message, true, false));
|
|
|
|
+ EXPECT_FALSE(ReflectionOps::IsInitialized(message, false, true));
|
|
|
|
|
|
// Initialize it. Now we're initialized.
|
|
// Initialize it. Now we're initialized.
|
|
message.mutable_optional_message()->set_a(1);
|
|
message.mutable_optional_message()->set_a(1);
|
|
message.mutable_optional_message()->set_b(2);
|
|
message.mutable_optional_message()->set_b(2);
|
|
message.mutable_optional_message()->set_c(3);
|
|
message.mutable_optional_message()->set_c(3);
|
|
EXPECT_TRUE(ReflectionOps::IsInitialized(message));
|
|
EXPECT_TRUE(ReflectionOps::IsInitialized(message));
|
|
|
|
+ EXPECT_TRUE(ReflectionOps::IsInitialized(message, true, false));
|
|
|
|
+ EXPECT_TRUE(ReflectionOps::IsInitialized(message, false, true));
|
|
|
|
|
|
// Add a repeated version of the message. No longer initialized.
|
|
// Add a repeated version of the message. No longer initialized.
|
|
unittest::TestRequired* sub_message = message.add_repeated_message();
|
|
unittest::TestRequired* sub_message = message.add_repeated_message();
|
|
EXPECT_FALSE(ReflectionOps::IsInitialized(message));
|
|
EXPECT_FALSE(ReflectionOps::IsInitialized(message));
|
|
|
|
+ EXPECT_TRUE(ReflectionOps::IsInitialized(message, true, false));
|
|
|
|
+ EXPECT_FALSE(ReflectionOps::IsInitialized(message, false, true));
|
|
|
|
|
|
// Initialize that repeated version.
|
|
// Initialize that repeated version.
|
|
sub_message->set_a(1);
|
|
sub_message->set_a(1);
|
|
sub_message->set_b(2);
|
|
sub_message->set_b(2);
|
|
sub_message->set_c(3);
|
|
sub_message->set_c(3);
|
|
EXPECT_TRUE(ReflectionOps::IsInitialized(message));
|
|
EXPECT_TRUE(ReflectionOps::IsInitialized(message));
|
|
|
|
+ EXPECT_TRUE(ReflectionOps::IsInitialized(message, true, false));
|
|
|
|
+ EXPECT_TRUE(ReflectionOps::IsInitialized(message, false, true));
|
|
}
|
|
}
|
|
|
|
|
|
TEST(ReflectionOpsTest, ExtensionIsInitialized) {
|
|
TEST(ReflectionOpsTest, ExtensionIsInitialized) {
|
|
@@ -382,42 +399,62 @@ TEST(ReflectionOpsTest, ExtensionIsInitialized) {
|
|
// Starts out initialized because the foreign message is itself an optional
|
|
// Starts out initialized because the foreign message is itself an optional
|
|
// field.
|
|
// field.
|
|
EXPECT_TRUE(ReflectionOps::IsInitialized(message));
|
|
EXPECT_TRUE(ReflectionOps::IsInitialized(message));
|
|
|
|
+ EXPECT_TRUE(ReflectionOps::IsInitialized(message, true, false));
|
|
|
|
+ EXPECT_TRUE(ReflectionOps::IsInitialized(message, false, true));
|
|
|
|
|
|
// Once we create that field, the message is no longer initialized.
|
|
// Once we create that field, the message is no longer initialized.
|
|
message.MutableExtension(unittest::TestRequired::single);
|
|
message.MutableExtension(unittest::TestRequired::single);
|
|
EXPECT_FALSE(ReflectionOps::IsInitialized(message));
|
|
EXPECT_FALSE(ReflectionOps::IsInitialized(message));
|
|
|
|
+ EXPECT_TRUE(ReflectionOps::IsInitialized(message, true, false));
|
|
|
|
+ EXPECT_FALSE(ReflectionOps::IsInitialized(message, false, true));
|
|
|
|
|
|
// Initialize it. Now we're initialized.
|
|
// Initialize it. Now we're initialized.
|
|
message.MutableExtension(unittest::TestRequired::single)->set_a(1);
|
|
message.MutableExtension(unittest::TestRequired::single)->set_a(1);
|
|
message.MutableExtension(unittest::TestRequired::single)->set_b(2);
|
|
message.MutableExtension(unittest::TestRequired::single)->set_b(2);
|
|
message.MutableExtension(unittest::TestRequired::single)->set_c(3);
|
|
message.MutableExtension(unittest::TestRequired::single)->set_c(3);
|
|
EXPECT_TRUE(ReflectionOps::IsInitialized(message));
|
|
EXPECT_TRUE(ReflectionOps::IsInitialized(message));
|
|
|
|
+ EXPECT_TRUE(ReflectionOps::IsInitialized(message, true, false));
|
|
|
|
+ EXPECT_TRUE(ReflectionOps::IsInitialized(message, false, true));
|
|
|
|
|
|
// Add a repeated version of the message. No longer initialized.
|
|
// Add a repeated version of the message. No longer initialized.
|
|
message.AddExtension(unittest::TestRequired::multi);
|
|
message.AddExtension(unittest::TestRequired::multi);
|
|
EXPECT_FALSE(ReflectionOps::IsInitialized(message));
|
|
EXPECT_FALSE(ReflectionOps::IsInitialized(message));
|
|
|
|
+ EXPECT_TRUE(ReflectionOps::IsInitialized(message, true, false));
|
|
|
|
+ EXPECT_FALSE(ReflectionOps::IsInitialized(message, false, true));
|
|
|
|
|
|
// Initialize that repeated version.
|
|
// Initialize that repeated version.
|
|
message.MutableExtension(unittest::TestRequired::multi, 0)->set_a(1);
|
|
message.MutableExtension(unittest::TestRequired::multi, 0)->set_a(1);
|
|
message.MutableExtension(unittest::TestRequired::multi, 0)->set_b(2);
|
|
message.MutableExtension(unittest::TestRequired::multi, 0)->set_b(2);
|
|
message.MutableExtension(unittest::TestRequired::multi, 0)->set_c(3);
|
|
message.MutableExtension(unittest::TestRequired::multi, 0)->set_c(3);
|
|
EXPECT_TRUE(ReflectionOps::IsInitialized(message));
|
|
EXPECT_TRUE(ReflectionOps::IsInitialized(message));
|
|
|
|
+ EXPECT_TRUE(ReflectionOps::IsInitialized(message, true, false));
|
|
|
|
+ EXPECT_TRUE(ReflectionOps::IsInitialized(message, false, true));
|
|
}
|
|
}
|
|
|
|
|
|
TEST(ReflectionOpsTest, OneofIsInitialized) {
|
|
TEST(ReflectionOpsTest, OneofIsInitialized) {
|
|
unittest::TestRequiredOneof message;
|
|
unittest::TestRequiredOneof message;
|
|
EXPECT_TRUE(ReflectionOps::IsInitialized(message));
|
|
EXPECT_TRUE(ReflectionOps::IsInitialized(message));
|
|
|
|
+ EXPECT_TRUE(ReflectionOps::IsInitialized(message, true, false));
|
|
|
|
+ EXPECT_TRUE(ReflectionOps::IsInitialized(message, false, true));
|
|
|
|
|
|
message.mutable_foo_message();
|
|
message.mutable_foo_message();
|
|
EXPECT_FALSE(ReflectionOps::IsInitialized(message));
|
|
EXPECT_FALSE(ReflectionOps::IsInitialized(message));
|
|
|
|
+ EXPECT_TRUE(ReflectionOps::IsInitialized(message, true, false));
|
|
|
|
+ EXPECT_FALSE(ReflectionOps::IsInitialized(message, false, true));
|
|
|
|
|
|
message.set_foo_int(1);
|
|
message.set_foo_int(1);
|
|
EXPECT_TRUE(ReflectionOps::IsInitialized(message));
|
|
EXPECT_TRUE(ReflectionOps::IsInitialized(message));
|
|
|
|
+ EXPECT_TRUE(ReflectionOps::IsInitialized(message, true, false));
|
|
|
|
+ EXPECT_TRUE(ReflectionOps::IsInitialized(message, false, true));
|
|
|
|
|
|
message.mutable_foo_message();
|
|
message.mutable_foo_message();
|
|
EXPECT_FALSE(ReflectionOps::IsInitialized(message));
|
|
EXPECT_FALSE(ReflectionOps::IsInitialized(message));
|
|
|
|
+ EXPECT_TRUE(ReflectionOps::IsInitialized(message, true, false));
|
|
|
|
+ EXPECT_FALSE(ReflectionOps::IsInitialized(message, false, true));
|
|
message.mutable_foo_message()->set_required_double(0.1);
|
|
message.mutable_foo_message()->set_required_double(0.1);
|
|
EXPECT_TRUE(ReflectionOps::IsInitialized(message));
|
|
EXPECT_TRUE(ReflectionOps::IsInitialized(message));
|
|
|
|
+ EXPECT_TRUE(ReflectionOps::IsInitialized(message, true, false));
|
|
|
|
+ EXPECT_TRUE(ReflectionOps::IsInitialized(message, false, true));
|
|
}
|
|
}
|
|
|
|
|
|
static std::string FindInitializationErrors(const Message& message) {
|
|
static std::string FindInitializationErrors(const Message& message) {
|