diff options
Diffstat (limited to 'tests/fixed_count/fixed_count_unittests.c')
-rw-r--r-- | tests/fixed_count/fixed_count_unittests.c | 116 |
1 files changed, 116 insertions, 0 deletions
diff --git a/tests/fixed_count/fixed_count_unittests.c b/tests/fixed_count/fixed_count_unittests.c new file mode 100644 index 0000000..02bacac --- /dev/null +++ b/tests/fixed_count/fixed_count_unittests.c @@ -0,0 +1,116 @@ +#include <stdio.h> +#include <string.h> +#include <pb_decode.h> +#include <pb_encode.h> +#include "unittests.h" +#include "fixed_count.pb.h" + +int main() +{ + int status = 0; + COMMENT("Test encoding and decoding of repeated fixed count fields"); + + { + pb_byte_t buffer[Message1_size]; + Message1 msg_a = Message1_init_zero; + Message1 msg_b = Message1_init_zero; + + pb_ostream_t ostream; + pb_istream_t istream; + size_t message_length; + + msg_a.data[0] = 1; + msg_a.data[0] = 2; + msg_a.data[0] = 3; + + ostream = pb_ostream_from_buffer(buffer, Message1_size); + TEST(pb_encode(&ostream, Message1_fields, &msg_a)); + message_length = ostream.bytes_written; + + istream = pb_istream_from_buffer(buffer, message_length); + TEST(pb_decode(&istream, Message1_fields, &msg_b)); + + TEST(istream.bytes_left == 0); + TEST(memcmp(&msg_b, &msg_a, sizeof(msg_a)) == 0); + } + + { + pb_byte_t buffer[Message2_size]; + Message2 msg_a = Message2_init_zero; + Message2 msg_b = Message2_init_zero; + + pb_ostream_t ostream; + pb_istream_t istream; + size_t message_length; + + msg_a.data[0].data[0] = 1; + msg_a.data[0].data[1] = 2; + msg_a.data[0].data[2] = 3; + msg_a.data[1].data[0] = 4; + msg_a.data[1].data[1] = 5; + msg_a.data[1].data[2] = 6; + + ostream = pb_ostream_from_buffer(buffer, Message2_size); + TEST(pb_encode(&ostream, Message2_fields, &msg_a)); + message_length = ostream.bytes_written; + + istream = pb_istream_from_buffer(buffer, message_length); + TEST(pb_decode(&istream, Message2_fields, &msg_b)); + + TEST(istream.bytes_left == 0); + TEST(memcmp(&msg_b, &msg_a, sizeof(msg_a)) == 0); + } + + { + pb_byte_t buffer[Message3_size]; + Message3 msg_a = Message3_init_zero; + Message3 msg_b = Message3_init_zero; + + pb_ostream_t ostream; + pb_istream_t istream; + size_t message_length; + + msg_a.data1[0].data[0].data[0] = 1; + msg_a.data1[0].data[0].data[1] = 2; + msg_a.data1[0].data[0].data[2] = 3; + msg_a.data1[0].data[1].data[0] = 4; + msg_a.data1[0].data[1].data[1] = 5; + msg_a.data1[0].data[1].data[2] = 6; + + msg_a.data1[1].data[0].data[0] = 7; + msg_a.data1[1].data[0].data[1] = 8; + msg_a.data1[1].data[0].data[2] = 9; + msg_a.data1[1].data[1].data[0] = 10; + msg_a.data1[1].data[1].data[1] = 11; + msg_a.data1[1].data[1].data[2] = 12; + + msg_a.data2[0].data[0].data[0] = 11; + msg_a.data2[0].data[0].data[1] = 12; + msg_a.data2[0].data[0].data[2] = 13; + msg_a.data2[0].data[1].data[0] = 14; + msg_a.data2[0].data[1].data[1] = 15; + msg_a.data2[0].data[1].data[2] = 16; + + msg_a.data2[1].data[0].data[0] = 17; + msg_a.data2[1].data[0].data[1] = 18; + msg_a.data2[1].data[0].data[2] = 19; + msg_a.data2[1].data[1].data[0] = 110; + msg_a.data2[1].data[1].data[1] = 111; + msg_a.data2[1].data[1].data[2] = 112; + + ostream = pb_ostream_from_buffer(buffer, Message3_size); + TEST(pb_encode(&ostream, Message3_fields, &msg_a)); + message_length = ostream.bytes_written; + + istream = pb_istream_from_buffer(buffer, message_length); + TEST(pb_decode(&istream, Message3_fields, &msg_b)); + + TEST(istream.bytes_left == 0); + TEST(memcmp(&msg_b, &msg_a, sizeof(msg_a)) == 0); + } + + if (status != 0) + fprintf(stdout, "\n\nSome tests FAILED!\n"); + + return status; +} |