@@ -47,6 +47,7 @@ const char kTestStr1[] = "Hello1";
4747const char kTestStr2 [] = " HelloWorld2" ;
4848const int32_t kTestInt32 = 567 ;
4949const int32_t kTestNestedInt32 = 123 ;
50+ const int32_t kTestNestedInt64 = 123456789 ;
5051
5152const upb_MiniTableField* find_proto2_field (int field_number) {
5253 return upb_MiniTable_FindFieldByNumber (
@@ -166,6 +167,9 @@ TEST(GeneratedCode, DeepCloneMessageMapField) {
166167 upb_Arena* source_arena = upb_Arena_New ();
167168 protobuf_test_messages_proto2_TestAllTypesProto2* msg =
168169 protobuf_test_messages_proto2_TestAllTypesProto2_new (source_arena);
170+ ASSERT_TRUE (
171+ protobuf_test_messages_proto2_TestAllTypesProto2_map_int32_bool_set (
172+ msg, 0 , true , source_arena));
169173 ASSERT_TRUE (
170174 protobuf_test_messages_proto2_TestAllTypesProto2_map_int32_double_set (
171175 msg, 12 , 1200.5 , source_arena));
@@ -178,6 +182,14 @@ TEST(GeneratedCode, DeepCloneMessageMapField) {
178182 source_arena);
179183 protobuf_test_messages_proto2_TestAllTypesProto2_NestedMessage_set_a (
180184 nested, kTestNestedInt32 );
185+ protobuf_test_messages_proto2_TestAllTypesProto2_NestedMessage* nested2 =
186+ protobuf_test_messages_proto2_TestAllTypesProto2_NestedMessage_new (
187+ source_arena);
188+ protobuf_test_messages_proto2_TestAllTypesProto2_NestedMessage_set_a (
189+ nested2, kTestNestedInt64 );
190+ ASSERT_TRUE (
191+ protobuf_test_messages_proto2_TestAllTypesProto2_map_int32_nested_message_set (
192+ msg, 1 , nested2, source_arena));
181193 ASSERT_TRUE (
182194 protobuf_test_messages_proto2_TestAllTypesProto2_map_string_nested_message_set (
183195 msg, upb_StringView_FromString (" nestedkey1" ), nested, source_arena));
@@ -191,6 +203,23 @@ TEST(GeneratedCode, DeepCloneMessageMapField) {
191203 protobuf_test_messages_proto2_TestAllTypesProto2_NestedMessage_set_a (nested,
192204 0 );
193205 upb_Arena_Free (source_arena);
206+ // Test map<int32, bool>.
207+ {
208+ int32_t key;
209+ bool value;
210+ size_t iter = kUpb_Map_Begin ;
211+
212+ ASSERT_TRUE (
213+ protobuf_test_messages_proto2_TestAllTypesProto2_map_int32_bool_next (
214+ clone, &key, &value, &iter));
215+ EXPECT_EQ (key, 0 );
216+ EXPECT_EQ (value, true );
217+
218+ ASSERT_FALSE (
219+ protobuf_test_messages_proto2_TestAllTypesProto2_map_int32_bool_next (
220+ clone, &key, &value, &iter));
221+ }
222+
194223 // Test map<int32, double>.
195224 {
196225 int32_t key;
@@ -202,6 +231,28 @@ TEST(GeneratedCode, DeepCloneMessageMapField) {
202231 clone, &key, &value, &iter));
203232 EXPECT_EQ (key, 12 );
204233 EXPECT_EQ (value, 1200.5 );
234+
235+ ASSERT_FALSE (
236+ protobuf_test_messages_proto2_TestAllTypesProto2_map_int32_double_next (
237+ clone, &key, &value, &iter));
238+ }
239+
240+ // Test map<int32, NestedMessage>.
241+ {
242+ int32_t key;
243+ const protobuf_test_messages_proto2_TestAllTypesProto2_NestedMessage* value;
244+ size_t iter = kUpb_Map_Begin ;
245+ ASSERT_TRUE (
246+ protobuf_test_messages_proto2_TestAllTypesProto2_map_int32_nested_message_next (
247+ clone, &key, &value, &iter));
248+ EXPECT_EQ (key, 1 );
249+ ASSERT_NE (value, nullptr );
250+ EXPECT_EQ (
251+ protobuf_test_messages_proto2_TestAllTypesProto2_NestedMessage_a (value),
252+ kTestNestedInt64 );
253+ ASSERT_FALSE (
254+ protobuf_test_messages_proto2_TestAllTypesProto2_map_int32_nested_message_next (
255+ clone, &key, &value, &iter));
205256 }
206257
207258 // Test map<string, string>.
0 commit comments