• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 #include <stdio.h>
2 #include <string.h>
3 #include <pb_decode.h>
4 #include <pb_encode.h>
5 #include "unittests.h"
6 #include "fixed_count.pb.h"
7 
main()8 int main()
9 {
10     int status = 0;
11     COMMENT("Test encoding and decoding of repeated fixed count fields");
12 
13     {
14       pb_byte_t buffer[Message1_size];
15       Message1 msg_a = Message1_init_zero;
16       Message1 msg_b = Message1_init_zero;
17 
18       pb_ostream_t ostream;
19       pb_istream_t istream;
20       size_t message_length;
21 
22       msg_a.data[0] = 1;
23       msg_a.data[0] = 2;
24       msg_a.data[0] = 3;
25 
26       ostream = pb_ostream_from_buffer(buffer, Message1_size);
27       TEST(pb_encode(&ostream, Message1_fields, &msg_a));
28       message_length = ostream.bytes_written;
29 
30       istream = pb_istream_from_buffer(buffer, message_length);
31       TEST(pb_decode(&istream, Message1_fields, &msg_b));
32 
33       TEST(istream.bytes_left == 0);
34       TEST(memcmp(&msg_b, &msg_a, sizeof(msg_a)) == 0);
35     }
36 
37     {
38       pb_byte_t buffer[Message2_size];
39       Message2 msg_a = Message2_init_zero;
40       Message2 msg_b = Message2_init_zero;
41 
42       pb_ostream_t ostream;
43       pb_istream_t istream;
44       size_t message_length;
45 
46       msg_a.data[0].data[0] = 1;
47       msg_a.data[0].data[1] = 2;
48       msg_a.data[0].data[2] = 3;
49       msg_a.data[1].data[0] = 4;
50       msg_a.data[1].data[1] = 5;
51       msg_a.data[1].data[2] = 6;
52 
53       ostream = pb_ostream_from_buffer(buffer, Message2_size);
54       TEST(pb_encode(&ostream, Message2_fields, &msg_a));
55       message_length = ostream.bytes_written;
56 
57       istream = pb_istream_from_buffer(buffer, message_length);
58       TEST(pb_decode(&istream, Message2_fields, &msg_b));
59 
60       TEST(istream.bytes_left == 0);
61       TEST(memcmp(&msg_b, &msg_a, sizeof(msg_a)) == 0);
62     }
63 
64     {
65       pb_byte_t buffer[Message3_size];
66       Message3 msg_a = Message3_init_zero;
67       Message3 msg_b = Message3_init_zero;
68 
69       pb_ostream_t ostream;
70       pb_istream_t istream;
71       size_t message_length;
72 
73       msg_a.data1[0].data[0].data[0] = 1;
74       msg_a.data1[0].data[0].data[1] = 2;
75       msg_a.data1[0].data[0].data[2] = 3;
76       msg_a.data1[0].data[1].data[0] = 4;
77       msg_a.data1[0].data[1].data[1] = 5;
78       msg_a.data1[0].data[1].data[2] = 6;
79 
80       msg_a.data1[1].data[0].data[0] = 7;
81       msg_a.data1[1].data[0].data[1] = 8;
82       msg_a.data1[1].data[0].data[2] = 9;
83       msg_a.data1[1].data[1].data[0] = 10;
84       msg_a.data1[1].data[1].data[1] = 11;
85       msg_a.data1[1].data[1].data[2] = 12;
86 
87       msg_a.data2[0].data[0].data[0] = 11;
88       msg_a.data2[0].data[0].data[1] = 12;
89       msg_a.data2[0].data[0].data[2] = 13;
90       msg_a.data2[0].data[1].data[0] = 14;
91       msg_a.data2[0].data[1].data[1] = 15;
92       msg_a.data2[0].data[1].data[2] = 16;
93 
94       msg_a.data2[1].data[0].data[0] = 17;
95       msg_a.data2[1].data[0].data[1] = 18;
96       msg_a.data2[1].data[0].data[2] = 19;
97       msg_a.data2[1].data[1].data[0] = 110;
98       msg_a.data2[1].data[1].data[1] = 111;
99       msg_a.data2[1].data[1].data[2] = 112;
100 
101       ostream = pb_ostream_from_buffer(buffer, Message3_size);
102       TEST(pb_encode(&ostream, Message3_fields, &msg_a));
103       message_length = ostream.bytes_written;
104 
105       istream = pb_istream_from_buffer(buffer, message_length);
106       TEST(pb_decode(&istream, Message3_fields, &msg_b));
107 
108       TEST(istream.bytes_left == 0);
109       TEST(memcmp(&msg_b, &msg_a, sizeof(msg_a)) == 0);
110     }
111 
112     if (status != 0)
113         fprintf(stdout, "\n\nSome tests FAILED!\n");
114 
115     return status;
116 }
117