aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/regression/issue_141/SConscript8
-rw-r--r--tests/regression/issue_141/testproto.expected7
-rw-r--r--tests/regression/issue_141/testproto.proto50
3 files changed, 65 insertions, 0 deletions
diff --git a/tests/regression/issue_141/SConscript b/tests/regression/issue_141/SConscript
new file mode 100644
index 00000000..b6526bed
--- /dev/null
+++ b/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/tests/regression/issue_141/testproto.expected b/tests/regression/issue_141/testproto.expected
new file mode 100644
index 00000000..75bc195c
--- /dev/null
+++ b/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/tests/regression/issue_141/testproto.proto b/tests/regression/issue_141/testproto.proto
new file mode 100644
index 00000000..21598b45
--- /dev/null
+++ b/tests/regression/issue_141/testproto.proto
@@ -0,0 +1,50 @@
+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;
+}