mirror of
https://github.com/google/pebble.git
synced 2025-03-19 18:41:21 +00:00
48 lines
1.2 KiB
C
48 lines
1.2 KiB
C
|
#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;
|
||
|
}
|
||
|
|