diff options
Diffstat (limited to 'CAN-binder/libs/nanopb/tests/oneof/decode_oneof.c')
-rw-r--r-- | CAN-binder/libs/nanopb/tests/oneof/decode_oneof.c | 131 |
1 files changed, 0 insertions, 131 deletions
diff --git a/CAN-binder/libs/nanopb/tests/oneof/decode_oneof.c b/CAN-binder/libs/nanopb/tests/oneof/decode_oneof.c deleted file mode 100644 index 37075cd..0000000 --- a/CAN-binder/libs/nanopb/tests/oneof/decode_oneof.c +++ /dev/null @@ -1,131 +0,0 @@ -/* Decode a message using oneof fields */ - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <pb_decode.h> -#include "oneof.pb.h" -#include "test_helpers.h" -#include "unittests.h" - -/* Test the 'OneOfMessage' */ -int test_oneof_1(pb_istream_t *stream, int option) -{ - OneOfMessage msg; - int status = 0; - - /* To better catch initialization errors */ - memset(&msg, 0xAA, sizeof(msg)); - - if (!pb_decode(stream, OneOfMessage_fields, &msg)) - { - printf("Decoding failed: %s\n", PB_GET_ERROR(stream)); - return 1; - } - - /* Check that the basic fields work normally */ - TEST(msg.prefix == 123); - TEST(msg.suffix == 321); - - /* Check that we got the right oneof according to command line */ - if (option == 1) - { - TEST(msg.which_values == OneOfMessage_first_tag); - TEST(msg.values.first == 999); - } - else if (option == 2) - { - TEST(msg.which_values == OneOfMessage_second_tag); - TEST(strcmp(msg.values.second, "abcd") == 0); - } - else if (option == 3) - { - TEST(msg.which_values == OneOfMessage_third_tag); - TEST(msg.values.third.array[0] == 1); - TEST(msg.values.third.array[1] == 2); - TEST(msg.values.third.array[2] == 3); - TEST(msg.values.third.array[3] == 4); - TEST(msg.values.third.array[4] == 5); - } - - return status; -} - - -/* Test the 'PlainOneOfMessage' */ -int test_oneof_2(pb_istream_t *stream, int option) -{ - PlainOneOfMessage msg = PlainOneOfMessage_init_zero; - int status = 0; - - if (!pb_decode(stream, PlainOneOfMessage_fields, &msg)) - { - printf("Decoding failed: %s\n", PB_GET_ERROR(stream)); - return 1; - } - - /* Check that we got the right oneof according to command line */ - if (option == 1) - { - TEST(msg.which_values == OneOfMessage_first_tag); - TEST(msg.values.first == 999); - } - else if (option == 2) - { - TEST(msg.which_values == OneOfMessage_second_tag); - TEST(strcmp(msg.values.second, "abcd") == 0); - } - else if (option == 3) - { - TEST(msg.which_values == OneOfMessage_third_tag); - TEST(msg.values.third.array[0] == 1); - TEST(msg.values.third.array[1] == 2); - TEST(msg.values.third.array[2] == 3); - TEST(msg.values.third.array[3] == 4); - TEST(msg.values.third.array[4] == 5); - } - - return status; -} - -int main(int argc, char **argv) -{ - uint8_t buffer[OneOfMessage_size]; - size_t count; - int option; - - if (argc != 2) - { - fprintf(stderr, "Usage: decode_oneof [number]\n"); - return 1; - } - option = atoi(argv[1]); - - SET_BINARY_MODE(stdin); - count = fread(buffer, 1, sizeof(buffer), stdin); - - if (!feof(stdin)) - { - printf("Message does not fit in buffer\n"); - return 1; - } - - { - int status = 0; - pb_istream_t stream; - - stream = pb_istream_from_buffer(buffer, count); - status = test_oneof_1(&stream, option); - - if (status != 0) - return status; - - stream = pb_istream_from_buffer(buffer, count); - status = test_oneof_2(&stream, option); - - if (status != 0) - return status; - } - - return 0; -} |