Skip to content

Commit 66681eb

Browse files
adazhcopybara-github
authored andcommitted
upb: Add more tests for upb Map: clone and enum values.
PiperOrigin-RevId: 743669376
1 parent 39da3ee commit 66681eb

File tree

2 files changed

+88
-0
lines changed

2 files changed

+88
-0
lines changed

upb/hash/test.cc

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -359,6 +359,43 @@ TEST(IntTableTest, BoolKeys) {
359359
upb_inttable_clear(&t);
360360
}
361361

362+
TEST(IntTableTest, EnumValues) {
363+
upb::Arena arena;
364+
upb_inttable t;
365+
upb_inttable_init(&t, arena.ptr());
366+
upb_inttable_insert(&t, 0, upb_value_int32(0), arena.ptr());
367+
upb_inttable_insert(&t, -1, upb_value_int32(-1), arena.ptr());
368+
369+
intptr_t iter = UPB_INTTABLE_BEGIN;
370+
uintptr_t key;
371+
upb_value val;
372+
int32_t key_int32;
373+
374+
// First element.
375+
EXPECT_TRUE(upb_inttable_next(&t, &key, &val, &iter));
376+
memcpy(&key_int32, &key, sizeof(key_int32));
377+
EXPECT_EQ(key_int32, 0);
378+
EXPECT_EQ(upb_inttable_iter_key(&t, iter), 0);
379+
EXPECT_EQ(val.val, 0);
380+
EXPECT_EQ(upb_inttable_iter_value(&t, iter).val, 0);
381+
EXPECT_FALSE(upb_inttable_done(&t, iter));
382+
383+
// Second element.
384+
EXPECT_TRUE(upb_inttable_next(&t, &key, &val, &iter));
385+
memcpy(&key_int32, &key, sizeof(key_int32));
386+
EXPECT_EQ(key_int32, -1);
387+
EXPECT_EQ(upb_inttable_iter_key(&t, iter), -1);
388+
EXPECT_EQ(val.val, -1);
389+
EXPECT_EQ(upb_inttable_iter_value(&t, iter).val, -1);
390+
EXPECT_FALSE(upb_inttable_done(&t, iter));
391+
392+
// Done with the iteration.
393+
EXPECT_FALSE(upb_inttable_next(&t, &key, &val, &iter));
394+
EXPECT_TRUE(upb_inttable_done(&t, iter));
395+
396+
upb_inttable_clear(&t);
397+
}
398+
362399
INSTANTIATE_TEST_SUITE_P(IntTableParams, IntTableTest,
363400
testing::Values(8, 64, 512, -32));
364401

upb/message/copy_test.cc

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ const char kTestStr1[] = "Hello1";
4747
const char kTestStr2[] = "HelloWorld2";
4848
const int32_t kTestInt32 = 567;
4949
const int32_t kTestNestedInt32 = 123;
50+
const int32_t kTestNestedInt64 = 123456789;
5051

5152
const 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

Comments
 (0)