aboutsummaryrefslogtreecommitdiffhomepage
path: root/third_party/nanopb/tests/multiple_files
diff options
context:
space:
mode:
authorGravatar Lukacs T. Berki <lberki@google.com>2016-04-01 15:34:12 +0200
committerGravatar Lukacs T. Berki <lberki@google.com>2016-04-06 14:30:37 +0200
commit8796230139f1be08c1cf21eb5571da563abce603 (patch)
tree3e490c4cf88c0979d78bf5db0c8c25ff0942d6e0 /third_party/nanopb/tests/multiple_files
parent168031d21624741411ac238373cbd8544b8948df (diff)
Add nanopb to the set of third-party libraries.
This is needed for gRPC. Change-Id: I68c6b500d0e26742a25afef1754f5fcabf959ef0
Diffstat (limited to 'third_party/nanopb/tests/multiple_files')
-rw-r--r--third_party/nanopb/tests/multiple_files/SConscript13
-rw-r--r--third_party/nanopb/tests/multiple_files/multifile1.options1
-rw-r--r--third_party/nanopb/tests/multiple_files/multifile1.proto34
-rw-r--r--third_party/nanopb/tests/multiple_files/multifile2.proto22
-rw-r--r--third_party/nanopb/tests/multiple_files/test_multiple_files.c22
5 files changed, 92 insertions, 0 deletions
diff --git a/third_party/nanopb/tests/multiple_files/SConscript b/third_party/nanopb/tests/multiple_files/SConscript
new file mode 100644
index 0000000000..1689f4822a
--- /dev/null
+++ b/third_party/nanopb/tests/multiple_files/SConscript
@@ -0,0 +1,13 @@
+# Test that multiple .proto files don't cause name collisions.
+
+Import("env")
+
+incpath = env.Clone()
+incpath.Append(PROTOCPATH = '#multiple_files')
+
+incpath.NanopbProto(["multifile1", "multifile1.options"])
+incpath.NanopbProto("multifile2")
+test = incpath.Program(["test_multiple_files.c", "multifile1.pb.c", "multifile2.pb.c"])
+
+env.RunTest(test)
+
diff --git a/third_party/nanopb/tests/multiple_files/multifile1.options b/third_party/nanopb/tests/multiple_files/multifile1.options
new file mode 100644
index 0000000000..c44d266940
--- /dev/null
+++ b/third_party/nanopb/tests/multiple_files/multifile1.options
@@ -0,0 +1 @@
+StaticMessage.repint32 max_count:5
diff --git a/third_party/nanopb/tests/multiple_files/multifile1.proto b/third_party/nanopb/tests/multiple_files/multifile1.proto
new file mode 100644
index 0000000000..18f2c672ce
--- /dev/null
+++ b/third_party/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/third_party/nanopb/tests/multiple_files/multifile2.proto b/third_party/nanopb/tests/multiple_files/multifile2.proto
new file mode 100644
index 0000000000..4af45fd9ac
--- /dev/null
+++ b/third_party/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/third_party/nanopb/tests/multiple_files/test_multiple_files.c b/third_party/nanopb/tests/multiple_files/test_multiple_files.c
new file mode 100644
index 0000000000..292b8d7c61
--- /dev/null
+++ b/third_party/nanopb/tests/multiple_files/test_multiple_files.c
@@ -0,0 +1,22 @@
+/*
+ * 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"
+
+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);
+
+ return status;
+}