diff options
Diffstat (limited to 'tests/map/encode_map.c')
-rw-r--r-- | tests/map/encode_map.c | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/tests/map/encode_map.c b/tests/map/encode_map.c new file mode 100644 index 0000000..bd4ec12 --- /dev/null +++ b/tests/map/encode_map.c @@ -0,0 +1,37 @@ +/* Encode a message using map field */ + +#include <stdio.h> +#include <stdlib.h> +#include <pb_encode.h> +#include "map.pb.h" +#include "test_helpers.h" + +int main(int argc, char **argv) +{ + uint8_t buffer[MyMessage_size]; + MyMessage msg = MyMessage_init_zero; + pb_ostream_t stream; + + /* Fill in the map entries */ + msg.numbers_count = 3; + strncpy(msg.numbers[0].key, "one", sizeof(msg.numbers[0].key)); + strncpy(msg.numbers[1].key, "two", sizeof(msg.numbers[1].key)); + strncpy(msg.numbers[2].key, "seven", sizeof(msg.numbers[2].key)); + msg.numbers[0].value = 1; + msg.numbers[1].value = 2; + msg.numbers[2].value = 7; + + stream = pb_ostream_from_buffer(buffer, sizeof(buffer)); + + if (pb_encode(&stream, MyMessage_fields, &msg)) + { + SET_BINARY_MODE(stdout); + fwrite(buffer, 1, stream.bytes_written, stdout); + return 0; + } + else + { + fprintf(stderr, "Encoding failed: %s\n", PB_GET_ERROR(&stream)); + return 1; + } +} |