summaryrefslogtreecommitdiffstats
path: root/libs/nanopb/tests/multiple_files
diff options
context:
space:
mode:
Diffstat (limited to 'libs/nanopb/tests/multiple_files')
-rw-r--r--libs/nanopb/tests/multiple_files/SConscript16
-rw-r--r--libs/nanopb/tests/multiple_files/multifile1.options1
-rw-r--r--libs/nanopb/tests/multiple_files/multifile1.proto34
-rw-r--r--libs/nanopb/tests/multiple_files/multifile2.proto22
-rw-r--r--libs/nanopb/tests/multiple_files/subdir/multifile2.proto25
-rw-r--r--libs/nanopb/tests/multiple_files/test_multiple_files.c30
6 files changed, 128 insertions, 0 deletions
diff --git a/libs/nanopb/tests/multiple_files/SConscript b/libs/nanopb/tests/multiple_files/SConscript
new file mode 100644
index 00000000..b1281e17
--- /dev/null
+++ b/libs/nanopb/tests/multiple_files/SConscript
@@ -0,0 +1,16 @@
+# Test that multiple .proto files don't cause name collisions.
+
+Import("env")
+
+incpath = env.Clone()
+incpath.Append(PROTOCPATH = '#multiple_files')
+incpath.Append(CPPPATH = '$BUILD/multiple_files')
+
+incpath.NanopbProto(["multifile1", "multifile1.options"])
+incpath.NanopbProto("multifile2")
+incpath.NanopbProto("subdir/multifile2")
+test = incpath.Program(["test_multiple_files.c", "multifile1.pb.c",
+ "multifile2.pb.c", "subdir/multifile2.pb.c"])
+
+env.RunTest(test)
+
diff --git a/libs/nanopb/tests/multiple_files/multifile1.options b/libs/nanopb/tests/multiple_files/multifile1.options
new file mode 100644
index 00000000..c44d2669
--- /dev/null
+++ b/libs/nanopb/tests/multiple_files/multifile1.options
@@ -0,0 +1 @@
+StaticMessage.repint32 max_count:5
diff --git a/libs/nanopb/tests/multiple_files/multifile1.proto b/libs/nanopb/tests/multiple_files/multifile1.proto
new file mode 100644
index 00000000..18f2c672
--- /dev/null
+++ b/libs/nanopb/tests/multiple_files/multifile1.proto
@@ -0,0 +1,34 @@
+syntax = "proto2";
+
+message SubMessage {
+ optional string stringvalue = 1;
+ repeated int32 int32value = 2;
+ repeated fixed32 fixed32value = 3;
+ repeated fixed64 fixed64value = 4;
+}
+
+message TestMessage {
+ optional string stringvalue = 1;
+ repeated int32 int32value = 2;
+ repeated fixed32 fixed32value = 3;
+ repeated fixed64 fixed64value = 4;
+ optional SubMessage submsg = 5;
+ repeated string repeatedstring = 6;
+}
+
+message StaticMessage {
+ repeated fixed32 repint32 = 1;
+}
+
+enum SignedEnum {
+ SE_MIN = -128;
+ SE_MAX = 127;
+}
+
+enum UnsignedEnum {
+ UE_MIN = 0;
+ UE_MAX = 255;
+}
+
+
+
diff --git a/libs/nanopb/tests/multiple_files/multifile2.proto b/libs/nanopb/tests/multiple_files/multifile2.proto
new file mode 100644
index 00000000..4af45fd9
--- /dev/null
+++ b/libs/nanopb/tests/multiple_files/multifile2.proto
@@ -0,0 +1,22 @@
+// Test if including generated header file for this file + implicit include of
+// multifile2.pb.h still compiles. Used with test_compiles.c.
+syntax = "proto2";
+
+import "multifile1.proto";
+
+message Callback2Message {
+ required TestMessage tstmsg = 1;
+ required SubMessage submsg = 2;
+}
+
+message OneofMessage {
+ oneof msgs {
+ StaticMessage tstmsg = 1;
+ }
+}
+
+message Enums {
+ required SignedEnum senum = 1;
+ required UnsignedEnum uenum = 2;
+}
+
diff --git a/libs/nanopb/tests/multiple_files/subdir/multifile2.proto b/libs/nanopb/tests/multiple_files/subdir/multifile2.proto
new file mode 100644
index 00000000..847a9290
--- /dev/null
+++ b/libs/nanopb/tests/multiple_files/subdir/multifile2.proto
@@ -0,0 +1,25 @@
+syntax = "proto2";
+
+package subdir;
+
+import "multifile1.proto";
+
+message Callback2Message {
+ required TestMessage tstmsg = 1;
+ required SubMessage submsg = 2;
+}
+
+message OneofMessage {
+ oneof msgs {
+ StaticMessage tstmsg = 1;
+ }
+}
+
+message Enums {
+ required SignedEnum senum = 1;
+ required UnsignedEnum uenum = 2;
+}
+
+message SubdirMessage {
+ required int32 foo = 1 [default = 15];
+}
diff --git a/libs/nanopb/tests/multiple_files/test_multiple_files.c b/libs/nanopb/tests/multiple_files/test_multiple_files.c
new file mode 100644
index 00000000..70a3e596
--- /dev/null
+++ b/libs/nanopb/tests/multiple_files/test_multiple_files.c
@@ -0,0 +1,30 @@
+/*
+ * Tests if this still compiles when multiple .proto files are involved.
+ */
+
+#include <stdio.h>
+#include <pb_encode.h>
+#include "unittests.h"
+#include "multifile2.pb.h"
+#include "subdir/multifile2.pb.h"
+
+int main()
+{
+ int status = 0;
+
+ /* Test that included file options are properly loaded */
+ TEST(OneofMessage_size == 27);
+
+ /* Check that enum signedness is detected properly */
+ TEST(PB_LTYPE(Enums_fields[0].type) == PB_LTYPE_VARINT);
+ TEST(PB_LTYPE(Enums_fields[1].type) == PB_LTYPE_UVARINT);
+
+ /* Test that subdir file is correctly included */
+ {
+ subdir_SubdirMessage foo = subdir_SubdirMessage_init_default;
+ TEST(foo.foo == 15);
+ /* TEST(subdir_OneofMessage_size == 27); */ /* TODO: Issue #172 */
+ }
+
+ return status;
+}