#include "sort_by_tag.pb.h" #include #include #include "unittests.h" int main() { int status = 0; size_t msglen; pb_byte_t buf[256]; { pb_ostream_t ostream = pb_ostream_from_buffer(buf, sizeof(buf)); Unsorted msg = Unsorted_init_zero; COMMENT("Test encoding with unsorted structure"); TEST(&msg.first < &msg.oneof.second); TEST(&msg.oneof.second < &msg.last); msg.first = 101; msg.which_oneof = Unsorted_second_tag; msg.oneof.second = 102; msg.last = 103; if (!pb_encode(&ostream, Unsorted_fields, &msg)) { fprintf(stderr, "Encoding failed: %s\n", PB_GET_ERROR(&ostream)); return 1; } msglen = ostream.bytes_written; } { pb_istream_t istream = pb_istream_from_buffer(buf, msglen); Sorted msg = Sorted_init_zero; COMMENT("Test decoding with sorted structure"); if (!pb_decode(&istream, Sorted_fields, &msg)) { fprintf(stderr, "Decoding failed: %s\n", PB_GET_ERROR(&istream)); return 2; } TEST(msg.first == 101); TEST(msg.which_oneof == Sorted_second_tag); TEST(msg.oneof.second == 102); TEST(msg.last == 103); TEST(&msg.first > &msg.oneof.second); TEST(&msg.oneof.second > &msg.last); } return status; }