aboutsummaryrefslogtreecommitdiff
path: root/tests/fixed_count/fixed_count_unittests.c
diff options
context:
space:
mode:
Diffstat (limited to 'tests/fixed_count/fixed_count_unittests.c')
-rw-r--r--tests/fixed_count/fixed_count_unittests.c116
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;
+}