diff options
Diffstat (limited to 'CAN-binder/libs/nanopb/tests/regression/issue_141')
3 files changed, 67 insertions, 0 deletions
diff --git a/CAN-binder/libs/nanopb/tests/regression/issue_141/SConscript b/CAN-binder/libs/nanopb/tests/regression/issue_141/SConscript new file mode 100644 index 0000000..b6526be --- /dev/null +++ b/CAN-binder/libs/nanopb/tests/regression/issue_141/SConscript @@ -0,0 +1,8 @@ +# Regression test for issue 141: wrong encoded size #define for oneof messages + +Import("env") + +env.NanopbProto("testproto") +env.Object('testproto.pb.c') +env.Match(['testproto.pb.h', 'testproto.expected']) + diff --git a/CAN-binder/libs/nanopb/tests/regression/issue_141/testproto.expected b/CAN-binder/libs/nanopb/tests/regression/issue_141/testproto.expected new file mode 100644 index 0000000..75bc195 --- /dev/null +++ b/CAN-binder/libs/nanopb/tests/regression/issue_141/testproto.expected @@ -0,0 +1,7 @@ +define SubMessage_size \s* 88 +define OneOfMessage_size \s* 113 +define topMessage_size \s* 70 +define MyMessage1_size \s* 46 +define MyMessage2_size \s* 8 +define MyMessage3_size \s* 5 +define MyMessage4_size \s* 18 diff --git a/CAN-binder/libs/nanopb/tests/regression/issue_141/testproto.proto b/CAN-binder/libs/nanopb/tests/regression/issue_141/testproto.proto new file mode 100644 index 0000000..a445c68 --- /dev/null +++ b/CAN-binder/libs/nanopb/tests/regression/issue_141/testproto.proto @@ -0,0 +1,52 @@ +syntax = "proto2"; + +import 'nanopb.proto'; + +message SubMessage +{ + repeated int32 array = 1 [(nanopb).max_count = 8]; +} + +message OneOfMessage +{ + required int32 prefix = 1; + oneof values + { + int32 first = 5; + string second = 6 [(nanopb).max_size = 8]; + SubMessage third = 7; + } + required int32 suffix = 99; +} + +message topMessage { + required int32 start = 1; + oneof msg { + MyMessage1 msg1 = 2; + MyMessage2 msg2 = 3; + } + required int32 end = 4; +} + +message MyMessage1 { + required uint32 n1 = 1; + required uint32 n2 = 2; + required string s = 3 [(nanopb).max_size = 32]; +} + +message MyMessage2 { + required uint32 num = 1; + required bool b = 2; +} + +message MyMessage3 { + required bool bbb = 1; + required string ss = 2 [(nanopb).max_size = 1]; +} + +message MyMessage4 { + required bool bbbb = 1; + required string sss = 2 [(nanopb).max_size = 2]; + required uint32 num = 3; + required uint32 num2 = 4; +} |