diff options
Diffstat (limited to 'tests/mem_release/mem_release.c')
-rw-r--r-- | tests/mem_release/mem_release.c | 35 |
1 files changed, 30 insertions, 5 deletions
diff --git a/tests/mem_release/mem_release.c b/tests/mem_release/mem_release.c index 6e06da5..fae4516 100644 --- a/tests/mem_release/mem_release.c +++ b/tests/mem_release/mem_release.c @@ -133,13 +133,16 @@ static bool test_OneofMessage() } } - /* Encode second with SubMessage, invoking 'merge' behaviour */ + /* Encode second with SubMessage, replacing the oneof item */ { OneofMessage msg = OneofMessage_init_zero; + char *teststr = "1"; msg.which_msgs = OneofMessage_msg2_tag; msg.first = 999; msg.msgs.msg2.dynamic_str = "ABCD"; + msg.msgs.msg2.dynamic_str_arr_count = 1; + msg.msgs.msg2.dynamic_str_arr = &teststr; msg.last = 888; if (!pb_encode(&stream, OneofMessage_fields, &msg)) @@ -148,6 +151,25 @@ static bool test_OneofMessage() return false; } } + + /* Encode second SubMessage, invoking submessage merge behavior */ + { + OneofMessage msg = OneofMessage_init_zero; + char *teststr = "2"; + msg.which_msgs = OneofMessage_msg2_tag; + + msg.first = 99; + msg.msgs.msg2.dynamic_str = "EFGH"; + msg.msgs.msg2.dynamic_str_arr_count = 1; + msg.msgs.msg2.dynamic_str_arr = &teststr; + msg.last = 88; + + if (!pb_encode(&stream, OneofMessage_fields, &msg)) + { + fprintf(stderr, "Encode failed: %s\n", PB_GET_ERROR(&stream)); + return false; + } + } msgsize = stream.bytes_written; } @@ -160,13 +182,16 @@ static bool test_OneofMessage() return false; } - TEST(msg.first == 999); + TEST(msg.first == 99); TEST(msg.which_msgs == OneofMessage_msg2_tag); TEST(msg.msgs.msg2.dynamic_str); - TEST(strcmp(msg.msgs.msg2.dynamic_str, "ABCD") == 0); - TEST(msg.msgs.msg2.dynamic_str_arr == NULL); + TEST(strcmp(msg.msgs.msg2.dynamic_str, "EFGH") == 0); + TEST(msg.msgs.msg2.dynamic_str_arr != NULL); + TEST(msg.msgs.msg2.dynamic_str_arr_count == 2); + TEST(strcmp(msg.msgs.msg2.dynamic_str_arr[0], "1") == 0); + TEST(strcmp(msg.msgs.msg2.dynamic_str_arr[1], "2") == 0); TEST(msg.msgs.msg2.dynamic_submsg == NULL); - TEST(msg.last == 888); + TEST(msg.last == 88); pb_release(OneofMessage_fields, &msg); TEST(get_alloc_count() == 0); |