diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/Makefile | 4 | ||||
-rw-r--r-- | tests/test_decode_extensions.c | 35 | ||||
-rw-r--r-- | tests/test_encode_extensions.c | 2 |
3 files changed, 39 insertions, 2 deletions
diff --git a/tests/Makefile b/tests/Makefile index dc564c28..9696b794 100644 --- a/tests/Makefile +++ b/tests/Makefile @@ -8,7 +8,7 @@ TESTS= decode_unittests encode_unittests \ test_decode_callbacks test_encode_callbacks \ test_missing_fields test_no_messages test_funny_name \ test_multiple_files test_cxxcompile test_options \ - bc_encode bc_decode test_encode_extensions + bc_encode bc_decode test_encode_extensions test_decode_extensions # More strict checks for the core part of nanopb CC_VERSION=$(shell $(CC) -v 2>&1) @@ -85,6 +85,7 @@ test_funny_name: funny-proto+name.pb.h funny-proto+name.pb.o bc_encode: bc_alltypes.pb.o pb_encode.o bc_encode.o bc_decode: bc_alltypes.pb.o pb_decode.o bc_decode.o test_encode_extensions: test_encode_extensions.c pb_encode.o alltypes.pb.o extensions.pb.o +test_decode_extensions: test_decode_extensions.c pb_decode.o alltypes.pb.o extensions.pb.o %.pb: %.proto protoc -I. -I../generator -I/usr/include -o$@ $< @@ -126,6 +127,7 @@ run_unittests: $(TESTS) ./test_encode3_buf 1 | ./test_decode3_buf 1 ./test_decode3 < alltypes_with_extra_fields.pb ./bc_encode | ./bc_decode + ./test_encode_extensions | ./test_decode_extensions ./test_missing_fields diff --git a/tests/test_decode_extensions.c b/tests/test_decode_extensions.c new file mode 100644 index 00000000..b384c337 --- /dev/null +++ b/tests/test_decode_extensions.c @@ -0,0 +1,35 @@ +/* Test decoding of extension fields. */ + +#include <stdio.h> +#include <string.h> +#include <stdlib.h> +#include <pb_decode.h> +#include "alltypes.pb.h" +#include "extensions.pb.h" + +int main(int argc, char **argv) +{ + uint8_t buffer[1024]; + size_t count = fread(buffer, 1, sizeof(buffer), stdin); + pb_istream_t stream = pb_istream_from_buffer(buffer, count); + + AllTypes alltypes = {}; + int32_t extensionfield1; + pb_extension_t ext1 = {&AllTypes_extensionfield1, &extensionfield1, NULL}; + alltypes.extensions = &ext1; + + if (!pb_decode(&stream, AllTypes_fields, &alltypes)) + { + printf("Parsing failed: %s\n", PB_GET_ERROR(&stream)); + return 1; + } + + if (extensionfield1 != 12345) + { + printf("Wrong value for extension field: %d\n", extensionfield1); + return 2; + } + + return 0; +} + diff --git a/tests/test_encode_extensions.c b/tests/test_encode_extensions.c index a3500d7d..c889dec6 100644 --- a/tests/test_encode_extensions.c +++ b/tests/test_encode_extensions.c @@ -10,7 +10,7 @@ int main(int argc, char **argv) { - AllTypes alltypes = {0}; + AllTypes alltypes = {}; int32_t extensionfield1 = 12345; pb_extension_t ext1 = {&AllTypes_extensionfield1, &extensionfield1, NULL}; |