Line data Source code
1 : #include <pb_encode.h> 2 : #include <pb_decode.h> 3 : #include "extensions.pb.h" 4 : #include "unittests.h" 5 : 6 1 : int main() 7 : { 8 : uint8_t buffer[256]; 9 1 : int status = 0; 10 : size_t msglen; 11 : 12 : { 13 : pb_ostream_t stream; 14 1 : SimpleMessage msg = SimpleMessage_init_zero; 15 1 : ExtMessage extmsg = ExtMessage_init_zero; 16 1 : pb_extension_t ext = pb_extension_init_zero; 17 : 18 1 : COMMENT("Encoding message"); 19 1 : msg.has_number = true; 20 1 : msg.number = 1234; 21 1 : extmsg.has_second_number = true; 22 1 : extmsg.second_number = 5678; 23 : 24 1 : msg.extensions = &ext; 25 1 : ext.type = &ExtMessage_ext_message_ext; 26 1 : ext.dest = &extmsg; 27 1 : ext.next = NULL; 28 : 29 1 : stream = pb_ostream_from_buffer(buffer, sizeof(buffer)); 30 1 : TEST(pb_encode(&stream, SimpleMessage_fields, &msg)); 31 1 : msglen = stream.bytes_written; 32 1 : TEST(msglen == 9); /* 3 for number, 3 for submsg tag+len, 3 for second_number */ 33 1 : TEST(buffer[0] == 0x08); /* varint 1 */ 34 1 : TEST(buffer[1] == 0xD2); /* number = 1234 */ 35 1 : TEST(buffer[2] == 0x09); 36 1 : TEST(buffer[3] == 0xE2); /* submsg 1100 */ 37 1 : TEST(buffer[4] == 0x44); 38 1 : TEST(buffer[5] == 0x03); /* length 3 */ 39 1 : TEST(buffer[6] == 0x08); /* varint 1 */ 40 1 : TEST(buffer[7] == 0xae); /* second_number = 5678 */ 41 1 : TEST(buffer[8] == 0x2c); 42 : } 43 : 44 : { 45 : pb_istream_t stream; 46 1 : SimpleMessage msg = SimpleMessage_init_zero; 47 1 : ExtMessage extmsg = ExtMessage_init_zero; 48 1 : pb_extension_t ext = pb_extension_init_zero; 49 : 50 1 : COMMENT("Decoding message"); 51 : 52 1 : msg.extensions = &ext; 53 1 : ext.type = &ExtMessage_ext_message_ext; 54 1 : ext.dest = &extmsg; 55 1 : ext.next = NULL; 56 1 : ext.found = false; 57 : 58 1 : stream = pb_istream_from_buffer(buffer, msglen); 59 1 : TEST(pb_decode(&stream, SimpleMessage_fields, &msg)); 60 1 : TEST(msg.has_number); 61 1 : TEST(msg.number == 1234); 62 1 : TEST(ext.found); 63 1 : TEST(extmsg.has_second_number); 64 1 : TEST(extmsg.second_number == 5678); 65 : } 66 : 67 1 : return status; 68 : }