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;
- }
|