116 lines
3.4 KiB
C
116 lines
3.4 KiB
C
#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;
|
|
}
|