Line data Source code
1 : #include <stdio.h> 2 : #include <string.h> 3 : #include <pb_decode.h> 4 : #include <pb_encode.h> 5 : #include "unittests.h" 6 : #include "inline.pb.h" 7 : 8 1 : int main() 9 : { 10 1 : int status = 0; 11 1 : int i = 0; 12 1 : COMMENT("Test inline byte fields"); 13 : 14 : { 15 1 : Message1 msg1 = Message1_init_zero; 16 1 : TEST(sizeof(msg1.data) == 32); 17 : } 18 : 19 : { 20 1 : Message1 msg1 = Message1_init_zero; 21 : pb_byte_t msg1_buffer[Message1_size]; 22 1 : pb_ostream_t ostream = pb_ostream_from_buffer(msg1_buffer, Message1_size); 23 1 : Message1 msg1_deserialized = Message1_init_zero; 24 1 : pb_istream_t istream = pb_istream_from_buffer(msg1_buffer, Message1_size); 25 : 26 33 : for (i = 0; i < 32; i++) { 27 32 : msg1.data[i] = i; 28 : } 29 : 30 1 : TEST(pb_encode(&ostream, Message1_fields, &msg1)); 31 1 : TEST(ostream.bytes_written == Message1_size); 32 : 33 1 : TEST(pb_decode(&istream, Message1_fields, &msg1_deserialized)); 34 : 35 1 : TEST(istream.bytes_left == 0); 36 1 : TEST(memcmp(&msg1_deserialized, &msg1, sizeof(msg1)) == 0); 37 : } 38 : 39 : { 40 1 : Message2 msg2 = {true, {0}}; 41 1 : Message2 msg2_no_data = {false, {1}}; 42 : pb_byte_t msg2_buffer[Message2_size]; 43 1 : pb_ostream_t ostream = pb_ostream_from_buffer(msg2_buffer, Message2_size); 44 1 : Message2 msg2_deserialized = Message2_init_zero; 45 1 : pb_istream_t istream = pb_istream_from_buffer(msg2_buffer, Message2_size); 46 : 47 65 : for (i = 0; i < 64; i++) { 48 64 : msg2.data[i] = i; 49 : } 50 : 51 1 : TEST(pb_encode(&ostream, Message2_fields, &msg2)); 52 1 : TEST(ostream.bytes_written == Message2_size); 53 : 54 1 : TEST(pb_decode(&istream, Message2_fields, &msg2_deserialized)); 55 : 56 1 : TEST(istream.bytes_left == 0); 57 1 : TEST(memcmp(&msg2_deserialized, &msg2, sizeof(msg2)) == 0); 58 1 : TEST(msg2_deserialized.has_data); 59 : 60 1 : memset(msg2_buffer, 0, sizeof(msg2_buffer)); 61 1 : ostream = pb_ostream_from_buffer(msg2_buffer, Message2_size); 62 1 : TEST(pb_encode(&ostream, Message2_fields, &msg2_no_data)); 63 1 : istream = pb_istream_from_buffer(msg2_buffer, ostream.bytes_written); 64 1 : TEST(pb_decode(&istream, Message2_fields, &msg2_deserialized)); 65 1 : TEST(!msg2_deserialized.has_data); 66 1 : TEST(memcmp(&msg2_deserialized, &msg2, sizeof(msg2)) != 0); 67 : } 68 : 69 1 : if (status != 0) 70 0 : fprintf(stdout, "\n\nSome tests FAILED!\n"); 71 : 72 1 : return status; 73 : }