void MapReflectionTester::SetMapFieldsViaMapReflection()

in cdk/extra/protobuf/protobuf-3.19.6/src/google/protobuf/reflection_tester.cc [410:613]


void MapReflectionTester::SetMapFieldsViaMapReflection(Message* message) {
  const Reflection* reflection = message->GetReflection();

  Message* sub_foreign_message = nullptr;
  MapValueRef map_val;
  MapValueConstRef map_val_const;

  // Add first element.
  MapKey map_key;
  map_key.SetInt32Value(0);
  EXPECT_FALSE(reflection->LookupMapValue(*message, F("map_int32_int32"),
                                          map_key, &map_val_const));
  EXPECT_TRUE(reflection->InsertOrLookupMapValue(message, F("map_int32_int32"),
                                                 map_key, &map_val));
  map_val.SetInt32Value(0);

  map_key.SetInt64Value(0);
  EXPECT_FALSE(reflection->LookupMapValue(*message, F("map_int64_int64"),
                                          map_key, &map_val_const));
  EXPECT_TRUE(reflection->InsertOrLookupMapValue(message, F("map_int64_int64"),
                                                 map_key, &map_val));
  map_val.SetInt64Value(0);

  map_key.SetUInt32Value(0);
  EXPECT_FALSE(reflection->LookupMapValue(*message, F("map_uint32_uint32"),
                                          map_key, &map_val_const));
  EXPECT_TRUE(reflection->InsertOrLookupMapValue(
      message, F("map_uint32_uint32"), map_key, &map_val));
  map_val.SetUInt32Value(0);

  map_key.SetUInt64Value(0);
  EXPECT_TRUE(reflection->InsertOrLookupMapValue(
      message, F("map_uint64_uint64"), map_key, &map_val));
  map_val.SetUInt64Value(0);

  map_key.SetInt32Value(0);
  EXPECT_TRUE(reflection->InsertOrLookupMapValue(
      message, F("map_sint32_sint32"), map_key, &map_val));
  map_val.SetInt32Value(0);

  map_key.SetInt64Value(0);
  EXPECT_TRUE(reflection->InsertOrLookupMapValue(
      message, F("map_sint64_sint64"), map_key, &map_val));
  map_val.SetInt64Value(0);

  map_key.SetUInt32Value(0);
  EXPECT_TRUE(reflection->InsertOrLookupMapValue(
      message, F("map_fixed32_fixed32"), map_key, &map_val));
  map_val.SetUInt32Value(0);

  map_key.SetUInt64Value(0);
  EXPECT_TRUE(reflection->InsertOrLookupMapValue(
      message, F("map_fixed64_fixed64"), map_key, &map_val));
  map_val.SetUInt64Value(0);

  map_key.SetInt32Value(0);
  EXPECT_TRUE(reflection->InsertOrLookupMapValue(
      message, F("map_sfixed32_sfixed32"), map_key, &map_val));
  map_val.SetInt32Value(0);

  map_key.SetInt64Value(0);
  EXPECT_TRUE(reflection->InsertOrLookupMapValue(
      message, F("map_sfixed64_sfixed64"), map_key, &map_val));
  map_val.SetInt64Value(0);

  map_key.SetInt32Value(0);
  EXPECT_TRUE(reflection->InsertOrLookupMapValue(message, F("map_int32_float"),
                                                 map_key, &map_val));
  map_val.SetFloatValue(0.0);

  map_key.SetInt32Value(0);
  EXPECT_TRUE(reflection->InsertOrLookupMapValue(message, F("map_int32_double"),
                                                 map_key, &map_val));
  map_val.SetDoubleValue(0.0);

  map_key.SetBoolValue(false);
  EXPECT_FALSE(reflection->LookupMapValue(*message, F("map_bool_bool"), map_key,
                                          &map_val_const));
  EXPECT_TRUE(reflection->InsertOrLookupMapValue(message, F("map_bool_bool"),
                                                 map_key, &map_val));
  map_val.SetBoolValue(false);

  map_key.SetStringValue("0");
  EXPECT_FALSE(reflection->LookupMapValue(*message, F("map_string_string"),
                                          map_key, &map_val_const));
  EXPECT_TRUE(reflection->InsertOrLookupMapValue(
      message, F("map_string_string"), map_key, &map_val));
  map_val.SetStringValue("0");

  map_key.SetInt32Value(0);
  EXPECT_FALSE(reflection->LookupMapValue(*message, F("map_int32_bytes"),
                                          map_key, &map_val_const));
  EXPECT_TRUE(reflection->InsertOrLookupMapValue(message, F("map_int32_bytes"),
                                                 map_key, &map_val));
  map_val.SetStringValue("0");

  map_key.SetInt32Value(0);
  EXPECT_FALSE(reflection->LookupMapValue(*message, F("map_int32_enum"),
                                          map_key, &map_val_const));
  EXPECT_TRUE(reflection->InsertOrLookupMapValue(message, F("map_int32_enum"),
                                                 map_key, &map_val));
  map_val.SetEnumValue(map_enum_bar_->number());

  map_key.SetInt32Value(0);
  EXPECT_FALSE(reflection->LookupMapValue(
      *message, F("map_int32_foreign_message"), map_key, &map_val_const));
  EXPECT_TRUE(reflection->InsertOrLookupMapValue(
      message, F("map_int32_foreign_message"), map_key, &map_val));
  sub_foreign_message = map_val.MutableMessageValue();
  sub_foreign_message->GetReflection()->SetInt32(sub_foreign_message,
                                                 foreign_c_, 0);

  // Add second element
  map_key.SetInt32Value(1);
  EXPECT_TRUE(reflection->InsertOrLookupMapValue(message, F("map_int32_int32"),
                                                 map_key, &map_val));
  map_val.SetInt32Value(1);
  EXPECT_FALSE(reflection->InsertOrLookupMapValue(message, F("map_int32_int32"),
                                                  map_key, &map_val));

  map_key.SetInt64Value(1);
  EXPECT_TRUE(reflection->InsertOrLookupMapValue(message, F("map_int64_int64"),
                                                 map_key, &map_val));
  map_val.SetInt64Value(1);
  EXPECT_FALSE(reflection->InsertOrLookupMapValue(message, F("map_int64_int64"),
                                                  map_key, &map_val));

  map_key.SetUInt32Value(1);
  reflection->InsertOrLookupMapValue(message, F("map_uint32_uint32"), map_key,
                                     &map_val);
  map_val.SetUInt32Value(1);

  map_key.SetUInt64Value(1);
  reflection->InsertOrLookupMapValue(message, F("map_uint64_uint64"), map_key,
                                     &map_val);
  map_val.SetUInt64Value(1);

  map_key.SetInt32Value(1);
  reflection->InsertOrLookupMapValue(message, F("map_sint32_sint32"), map_key,
                                     &map_val);
  map_val.SetInt32Value(1);

  map_key.SetInt64Value(1);
  reflection->InsertOrLookupMapValue(message, F("map_sint64_sint64"), map_key,
                                     &map_val);
  map_val.SetInt64Value(1);

  map_key.SetUInt32Value(1);
  reflection->InsertOrLookupMapValue(message, F("map_fixed32_fixed32"), map_key,
                                     &map_val);
  map_val.SetUInt32Value(1);

  map_key.SetUInt64Value(1);
  reflection->InsertOrLookupMapValue(message, F("map_fixed64_fixed64"), map_key,
                                     &map_val);
  map_val.SetUInt64Value(1);

  map_key.SetInt32Value(1);
  reflection->InsertOrLookupMapValue(message, F("map_sfixed32_sfixed32"),
                                     map_key, &map_val);
  map_val.SetInt32Value(1);

  map_key.SetInt64Value(1);
  reflection->InsertOrLookupMapValue(message, F("map_sfixed64_sfixed64"),
                                     map_key, &map_val);
  map_val.SetInt64Value(1);

  map_key.SetInt32Value(1);
  reflection->InsertOrLookupMapValue(message, F("map_int32_float"), map_key,
                                     &map_val);
  map_val.SetFloatValue(1.0);

  map_key.SetInt32Value(1);
  reflection->InsertOrLookupMapValue(message, F("map_int32_double"), map_key,
                                     &map_val);
  map_val.SetDoubleValue(1.0);

  map_key.SetBoolValue(true);
  reflection->InsertOrLookupMapValue(message, F("map_bool_bool"), map_key,
                                     &map_val);
  map_val.SetBoolValue(true);

  map_key.SetStringValue("1");
  reflection->InsertOrLookupMapValue(message, F("map_string_string"), map_key,
                                     &map_val);
  map_val.SetStringValue("1");

  map_key.SetInt32Value(1);
  reflection->InsertOrLookupMapValue(message, F("map_int32_bytes"), map_key,
                                     &map_val);
  map_val.SetStringValue("1");

  map_key.SetInt32Value(1);
  reflection->InsertOrLookupMapValue(message, F("map_int32_enum"), map_key,
                                     &map_val);
  map_val.SetEnumValue(map_enum_baz_->number());

  map_key.SetInt32Value(1);
  EXPECT_TRUE(reflection->InsertOrLookupMapValue(
      message, F("map_int32_foreign_message"), map_key, &map_val));
  sub_foreign_message = map_val.MutableMessageValue();
  sub_foreign_message->GetReflection()->SetInt32(sub_foreign_message,
                                                 foreign_c_, 1);
}