Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nanopb/nanopb.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJosh Strohminger <joshstrohminger@users.noreply.github.com>2023-08-17 01:41:39 +0300
committerPetteri Aimonen <jpa@github.mail.kapsi.fi>2023-08-17 14:14:39 +0300
commitf6c0f91ac4e0ab5f981e70faff21cf9e5f5a587f (patch)
tree8c39d5722c58ce63c387f7c1b6a4f0aa18950bc2
parent4838ca75349073e43c9634a0f1af6ecf49ea4511 (diff)
Add test for stripping package names across dependent proto files
-rw-r--r--tests/typename_mangling/SConscript8
-rw-r--r--tests/typename_mangling/test_strip_package_dependencies.c27
-rw-r--r--tests/typename_mangling/with_package_a.proto13
-rw-r--r--tests/typename_mangling/with_package_b.proto10
4 files changed, 58 insertions, 0 deletions
diff --git a/tests/typename_mangling/SConscript b/tests/typename_mangling/SConscript
index a3994f4..ee750ef 100644
--- a/tests/typename_mangling/SConscript
+++ b/tests/typename_mangling/SConscript
@@ -14,6 +14,14 @@ env.Command("strip_package.proto", "with_package.proto", Copy("$TARGET", "$SOURC
env.NanopbProto(["strip_package", "strip_package.options"])
env.Program(["test_strip_package.c", "strip_package.pb.c", '$COMMON/pb_common.o'])
+env.Command("strip_package_a.options", "with_package.options", set_mangling("M_STRIP_PACKAGE"))
+env.Command("strip_package_b.options", "with_package.options", set_mangling("M_STRIP_PACKAGE"))
+env.Command("strip_package_a.proto", "with_package_a.proto", Copy("$TARGET", "$SOURCE"))
+env.Command("strip_package_b.proto", "with_package_b.proto", Copy("$TARGET", "$SOURCE"))
+env.NanopbProto(["strip_package_a", "strip_package_a.options"])
+env.NanopbProto(["strip_package_b", "strip_package_b.options"])
+env.Program(["test_strip_package_dependencies.c", "strip_package_a.pb.c", "strip_package_b.pb.c", '$COMMON/pb_common.o'])
+
env.Command("flatten.options", "with_package.options", set_mangling("M_FLATTEN"))
env.Command("flatten.proto", "with_package.proto", Copy("$TARGET", "$SOURCE"))
env.NanopbProto(["flatten", "flatten.options"])
diff --git a/tests/typename_mangling/test_strip_package_dependencies.c b/tests/typename_mangling/test_strip_package_dependencies.c
new file mode 100644
index 0000000..0e2ceca
--- /dev/null
+++ b/tests/typename_mangling/test_strip_package_dependencies.c
@@ -0,0 +1,27 @@
+/*
+ * Tests if expected names are generated when M_STRIP_PACKAGE is used.
+ */
+
+#include <stdio.h>
+#include "unittests.h"
+#include "strip_package_b.pb.h"
+
+int main()
+{
+ MessageA msgA1 = package_a_MessageA_init_default;
+ package_a_MessageA msgA2 = MessageA_init_default;
+
+ MessageB msgB1 = package_b_MessageB_init_zero;
+ package_b_MessageB msgB2 = MessageB_init_zero;
+
+ package_a_EnumA e1 = EnumA_VALUE_A_0;
+ EnumA e2 = EnumA_VALUE_A_1;
+ e2 = _package_a_EnumA_MIN;
+ e2 = _EnumA_MIN;
+ e2 = _package_a_EnumA_MAX;
+ e2 = _EnumA_MAX;
+ e2 = _package_a_EnumA_ARRAYSIZE;
+ e2 = _EnumA_ARRAYSIZE;
+
+ return msgA1.enum_a_field + msgA2.enum_a_field + msgB1.nested_enum + msgB2.nested_enum + e1 + e2; /* marks variables as used */
+}
diff --git a/tests/typename_mangling/with_package_a.proto b/tests/typename_mangling/with_package_a.proto
new file mode 100644
index 0000000..4d68341
--- /dev/null
+++ b/tests/typename_mangling/with_package_a.proto
@@ -0,0 +1,13 @@
+syntax = "proto3";
+
+package package.a;
+
+enum EnumA {
+ VALUE_A_0 = 0;
+ VALUE_A_1 = 1;
+ VALUE_A_2 = 2;
+}
+
+message MessageA {
+ EnumA enum_a_field = 1;
+} \ No newline at end of file
diff --git a/tests/typename_mangling/with_package_b.proto b/tests/typename_mangling/with_package_b.proto
new file mode 100644
index 0000000..5cd2dfa
--- /dev/null
+++ b/tests/typename_mangling/with_package_b.proto
@@ -0,0 +1,10 @@
+syntax = "proto3";
+
+import "strip_package_a.proto";
+
+package package.b;
+
+message MessageB {
+ package.a.EnumA nested_enum = 1;
+ package.a.MessageA nested_message = 2;
+}