diff options
author | Romain Forlot <romain.forlot@iot.bzh> | 2017-05-19 16:20:02 +0200 |
---|---|---|
committer | Romain Forlot <romain.forlot@iot.bzh> | 2017-05-19 16:20:02 +0200 |
commit | 2d574dc77f68ecb5150016989900860e8b74be50 (patch) | |
tree | d691a8345a58dcd080131c58d028f77df51a45ed /CAN-binder/libs/nanopb/tests/regression/issue_247 | |
parent | 48a2605965af1f05ba7f01f6e8c1758a4c9b0522 (diff) | |
parent | 278ffb890e3d8722e4c7d824baaf221a1e375fc4 (diff) |
Add 'CAN-binder/libs/nanopb/' from commit '278ffb890e3d8722e4c7d824baaf221a1e375fc4'
git-subtree-dir: CAN-binder/libs/nanopb
git-subtree-mainline: 48a2605965af1f05ba7f01f6e8c1758a4c9b0522
git-subtree-split: 278ffb890e3d8722e4c7d824baaf221a1e375fc4
Diffstat (limited to 'CAN-binder/libs/nanopb/tests/regression/issue_247')
3 files changed, 58 insertions, 0 deletions
diff --git a/CAN-binder/libs/nanopb/tests/regression/issue_247/SConscript b/CAN-binder/libs/nanopb/tests/regression/issue_247/SConscript new file mode 100644 index 0000000..b41e9f2 --- /dev/null +++ b/CAN-binder/libs/nanopb/tests/regression/issue_247/SConscript @@ -0,0 +1,14 @@ +# Test that pb_check_proto3_default_value() correctly skips padding +# bytes in submessage structures. + +Import("env") + +env.NanopbProto("padding") + +p = env.Program(["padding.c", + "padding.pb.c", + "$COMMON/pb_encode.o", + "$COMMON/pb_common.o"]) + +env.RunTest(p) + diff --git a/CAN-binder/libs/nanopb/tests/regression/issue_247/padding.c b/CAN-binder/libs/nanopb/tests/regression/issue_247/padding.c new file mode 100644 index 0000000..8860179 --- /dev/null +++ b/CAN-binder/libs/nanopb/tests/regression/issue_247/padding.c @@ -0,0 +1,32 @@ +#include <pb_encode.h> +#include <unittests.h> +#include <string.h> +#include "padding.pb.h" + +int main() +{ + int status = 0; + + TestMessage msg; + + /* Set padding bytes to garbage */ + memset(&msg, 0xAA, sizeof(msg)); + + /* Set all meaningful fields to 0 */ + msg.submsg.boolfield = false; + msg.submsg.intfield = 0; + + /* Test encoding */ + { + pb_byte_t buf[128] = {0}; + pb_ostream_t stream = pb_ostream_from_buffer(buf, sizeof(buf)); + TEST(pb_encode(&stream, TestMessage_fields, &msg)); + + /* Because all fields have zero values, proto3 encoder + * shouldn't write out anything. */ + TEST(stream.bytes_written == 0); + } + + return status; +} + diff --git a/CAN-binder/libs/nanopb/tests/regression/issue_247/padding.proto b/CAN-binder/libs/nanopb/tests/regression/issue_247/padding.proto new file mode 100644 index 0000000..20bddac --- /dev/null +++ b/CAN-binder/libs/nanopb/tests/regression/issue_247/padding.proto @@ -0,0 +1,12 @@ +syntax = "proto3"; +import "nanopb.proto"; + +message SubMessage { + bool boolfield = 1; + int64 intfield = 2; +} + +message TestMessage { + SubMessage submsg = 1; +} + |