From f6c0f91ac4e0ab5f981e70faff21cf9e5f5a587f Mon Sep 17 00:00:00 2001 From: Josh Strohminger Date: Wed, 16 Aug 2023 15:41:39 -0700 Subject: Add test for stripping package names across dependent proto files --- tests/typename_mangling/SConscript | 8 +++++++ .../test_strip_package_dependencies.c | 27 ++++++++++++++++++++++ tests/typename_mangling/with_package_a.proto | 13 +++++++++++ tests/typename_mangling/with_package_b.proto | 10 ++++++++ 4 files changed, 58 insertions(+) create mode 100644 tests/typename_mangling/test_strip_package_dependencies.c create mode 100644 tests/typename_mangling/with_package_a.proto create mode 100644 tests/typename_mangling/with_package_b.proto 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 +#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; +} -- cgit v1.2.3