#include #include #include "mixed.pb.h" #include "unittests.h" int main() { int status = 0; pb_byte_t buf[64]; size_t msglen; { pb_ostream_t ostream = pb_ostream_from_buffer(buf, sizeof(buf)); MixedMessage msg = MixedMessage_init_default; msg.has_proto2_value = true; msg.proto2_value = 0; msg.proto3_value = 0; if (!pb_encode(&ostream, MixedMessage_fields, &msg)) { fprintf(stderr, "pb_encode() failed: %s\n", PB_GET_ERROR(&ostream)); return 1; } msglen = ostream.bytes_written; TEST(msglen > 0); } { pb_istream_t istream = pb_istream_from_buffer(buf, msglen); MixedMessage msg = MixedMessage_init_default; TEST(msg.proto2_value == 100); TEST(msg.proto3_value == 200); if (!pb_decode(&istream, MixedMessage_fields, &msg)) { fprintf(stderr, "pb_decode() failed: %s\n", PB_GET_ERROR(&istream)); return 1; } TEST(msg.proto2_value == 0); TEST(msg.proto3_value == 0); } return status; }