| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 | #include <pb_encode.h>#include <pb_decode.h>#include <unittests.h>#include "optional.pb.h"int main(){    int status = 0;    uint8_t buf[256];    size_t msglen;        COMMENT("Test encoding message with optional field")    {        pb_ostream_t stream = pb_ostream_from_buffer(buf, sizeof(buf));        TestMessage msg = TestMessage_init_zero;                msg.has_opt_int = true;        msg.opt_int = 99;        msg.normal_int = 100;        msg.opt_int2 = 101;                TEST(pb_encode(&stream, TestMessage_fields, &msg));        msglen = stream.bytes_written;    }        COMMENT("Test decoding message with optional field")    {        pb_istream_t stream = pb_istream_from_buffer(buf, msglen);        TestMessage msg = TestMessage_init_zero;                /* These fields should be missing from the message         * so the values wouldn't be overwritten. */        msg.opt_int2 = 5;        msg.normal_int2 = 6;                TEST(pb_decode_noinit(&stream, TestMessage_fields, &msg));        TEST(msg.has_opt_int);        TEST(msg.opt_int == 99);        TEST(msg.normal_int == 100);        TEST(!msg.has_opt_int2);        TEST(msg.opt_int2 == 5);        TEST(msg.normal_int2 == 6);    }    return status;}
 |