in cdk/extra/protobuf/protobuf-3.19.6/src/google/protobuf/reflection_tester.cc [1381:1606]
void MapReflectionTester::ExpectMapFieldsSetViaReflectionIterator(
Message* message) {
std::string scratch;
std::string serialized;
const Reflection* reflection = message->GetReflection();
ASSERT_EQ(2, reflection->FieldSize(*message, F("map_int32_int32")));
ASSERT_EQ(2, reflection->FieldSize(*message, F("map_int64_int64")));
ASSERT_EQ(2, reflection->FieldSize(*message, F("map_uint32_uint32")));
ASSERT_EQ(2, reflection->FieldSize(*message, F("map_uint64_uint64")));
ASSERT_EQ(2, reflection->FieldSize(*message, F("map_sint32_sint32")));
ASSERT_EQ(2, reflection->FieldSize(*message, F("map_sint64_sint64")));
ASSERT_EQ(2, reflection->FieldSize(*message, F("map_fixed32_fixed32")));
ASSERT_EQ(2, reflection->FieldSize(*message, F("map_fixed64_fixed64")));
ASSERT_EQ(2, reflection->FieldSize(*message, F("map_sfixed32_sfixed32")));
ASSERT_EQ(2, reflection->FieldSize(*message, F("map_sfixed64_sfixed64")));
ASSERT_EQ(2, reflection->FieldSize(*message, F("map_int32_float")));
ASSERT_EQ(2, reflection->FieldSize(*message, F("map_int32_double")));
ASSERT_EQ(2, reflection->FieldSize(*message, F("map_bool_bool")));
ASSERT_EQ(2, reflection->FieldSize(*message, F("map_string_string")));
ASSERT_EQ(2, reflection->FieldSize(*message, F("map_int32_bytes")));
ASSERT_EQ(2, reflection->FieldSize(*message, F("map_int32_enum")));
ASSERT_EQ(2, reflection->FieldSize(*message, F("map_int32_foreign_message")));
{
std::map<int32_t, int32_t> map;
map[0] = 0;
map[1] = 1;
int size = 0;
for (MapIterator iter = reflection->MapBegin(message, F("map_int32_int32"));
iter != reflection->MapEnd(message, F("map_int32_int32"));
++iter, ++size) {
// Check const methods do not invalidate map.
message->DebugString();
message->ShortDebugString();
message->SerializeToString(&serialized);
message->SpaceUsedLong();
message->ByteSizeLong();
EXPECT_EQ(map[iter.GetKey().GetInt32Value()],
iter.GetValueRef().GetInt32Value());
}
EXPECT_EQ(size, 2);
}
{
std::map<int64_t, int64_t> map;
map[0] = 0;
map[1] = 1;
for (MapIterator iter = reflection->MapBegin(message, F("map_int64_int64"));
iter != reflection->MapEnd(message, F("map_int64_int64")); ++iter) {
EXPECT_EQ(map[iter.GetKey().GetInt64Value()],
iter.GetValueRef().GetInt64Value());
}
}
{
std::map<uint32_t, uint32_t> map;
map[0] = 0;
map[1] = 1;
for (MapIterator iter =
reflection->MapBegin(message, F("map_uint32_uint32"));
iter != reflection->MapEnd(message, F("map_uint32_uint32")); ++iter) {
EXPECT_EQ(map[iter.GetKey().GetUInt32Value()],
iter.GetValueRef().GetUInt32Value());
}
}
{
std::map<uint64_t, uint64_t> map;
map[0] = 0;
map[1] = 1;
for (MapIterator iter =
reflection->MapBegin(message, F("map_uint64_uint64"));
iter != reflection->MapEnd(message, F("map_uint64_uint64")); ++iter) {
EXPECT_EQ(map[iter.GetKey().GetUInt64Value()],
iter.GetValueRef().GetUInt64Value());
}
}
{
std::map<int32_t, int32_t> map;
map[0] = 0;
map[1] = 1;
for (MapIterator iter =
reflection->MapBegin(message, F("map_sint32_sint32"));
iter != reflection->MapEnd(message, F("map_sint32_sint32")); ++iter) {
EXPECT_EQ(map[iter.GetKey().GetInt32Value()],
iter.GetValueRef().GetInt32Value());
}
}
{
std::map<int64_t, int64_t> map;
map[0] = 0;
map[1] = 1;
for (MapIterator iter =
reflection->MapBegin(message, F("map_sint64_sint64"));
iter != reflection->MapEnd(message, F("map_sint64_sint64")); ++iter) {
EXPECT_EQ(map[iter.GetKey().GetInt64Value()],
iter.GetValueRef().GetInt64Value());
}
}
{
std::map<uint32_t, uint32_t> map;
map[0] = 0;
map[1] = 1;
for (MapIterator iter =
reflection->MapBegin(message, F("map_fixed32_fixed32"));
iter != reflection->MapEnd(message, F("map_fixed32_fixed32"));
++iter) {
EXPECT_EQ(map[iter.GetKey().GetUInt32Value()],
iter.GetValueRef().GetUInt32Value());
}
}
{
std::map<uint64_t, uint64_t> map;
map[0] = 0;
map[1] = 1;
for (MapIterator iter =
reflection->MapBegin(message, F("map_fixed64_fixed64"));
iter != reflection->MapEnd(message, F("map_fixed64_fixed64"));
++iter) {
EXPECT_EQ(map[iter.GetKey().GetUInt64Value()],
iter.GetValueRef().GetUInt64Value());
}
}
{
std::map<int32_t, int32_t> map;
map[0] = 0;
map[1] = 1;
for (MapIterator iter =
reflection->MapBegin(message, F("map_sfixed32_sfixed32"));
iter != reflection->MapEnd(message, F("map_sfixed32_sfixed32"));
++iter) {
EXPECT_EQ(map[iter.GetKey().GetInt32Value()],
iter.GetValueRef().GetInt32Value());
}
}
{
std::map<int32_t, float> map;
map[0] = 0.0;
map[1] = 1.0;
for (MapIterator iter = reflection->MapBegin(message, F("map_int32_float"));
iter != reflection->MapEnd(message, F("map_int32_float")); ++iter) {
EXPECT_EQ(map[iter.GetKey().GetInt32Value()],
iter.GetValueRef().GetFloatValue());
}
}
{
std::map<int32_t, double> map;
map[0] = 0.0;
map[1] = 1.0;
for (MapIterator iter =
reflection->MapBegin(message, F("map_int32_double"));
iter != reflection->MapEnd(message, F("map_int32_double")); ++iter) {
EXPECT_EQ(map[iter.GetKey().GetInt32Value()],
iter.GetValueRef().GetDoubleValue());
}
}
{
std::map<bool, bool> map;
map[false] = false;
map[true] = true;
for (MapIterator iter = reflection->MapBegin(message, F("map_bool_bool"));
iter != reflection->MapEnd(message, F("map_bool_bool")); ++iter) {
EXPECT_EQ(map[iter.GetKey().GetBoolValue()],
iter.GetValueRef().GetBoolValue());
}
}
{
std::map<std::string, std::string> map;
map["0"] = "0";
map["1"] = "1";
int size = 0;
for (MapIterator iter =
reflection->MapBegin(message, F("map_string_string"));
iter != reflection->MapEnd(message, F("map_string_string"));
++iter, ++size) {
// Check const methods do not invalidate map.
message->DebugString();
message->ShortDebugString();
message->SerializeToString(&serialized);
message->SpaceUsedLong();
message->ByteSizeLong();
EXPECT_EQ(map[iter.GetKey().GetStringValue()],
iter.GetValueRef().GetStringValue());
}
EXPECT_EQ(size, 2);
}
{
std::map<int32_t, std::string> map;
map[0] = "0";
map[1] = "1";
for (MapIterator iter = reflection->MapBegin(message, F("map_int32_bytes"));
iter != reflection->MapEnd(message, F("map_int32_bytes")); ++iter) {
EXPECT_EQ(map[iter.GetKey().GetInt32Value()],
iter.GetValueRef().GetStringValue());
}
}
{
std::map<int32_t, const EnumValueDescriptor*> map;
map[0] = map_enum_bar_;
map[1] = map_enum_baz_;
for (MapIterator iter = reflection->MapBegin(message, F("map_int32_enum"));
iter != reflection->MapEnd(message, F("map_int32_enum")); ++iter) {
EXPECT_EQ(map[iter.GetKey().GetInt32Value()]->number(),
iter.GetValueRef().GetEnumValue());
}
}
{
std::map<int32_t, int32_t> map;
map[0] = 0;
map[1] = 1;
int size = 0;
for (MapIterator iter =
reflection->MapBegin(message, F("map_int32_foreign_message"));
iter != reflection->MapEnd(message, F("map_int32_foreign_message"));
++iter, ++size) {
// Check const methods do not invalidate map.
message->DebugString();
message->ShortDebugString();
message->SerializeToString(&serialized);
message->SpaceUsedLong();
message->ByteSizeLong();
const Message& sub_message = iter.GetValueRef().GetMessageValue();
EXPECT_EQ(map[iter.GetKey().GetInt32Value()],
sub_message.GetReflection()->GetInt32(sub_message, foreign_c_));
}
EXPECT_EQ(size, 2);
}
}