From 423c03b626a861a7b3a08a2d411e23aefd58827b Mon Sep 17 00:00:00 2001 From: Marco Nilsson Date: Thu, 11 Jan 2024 15:53:03 +0100 Subject: Add additional test. One test that will cause the build to fail if sizing is emitted on repeated fields, and one test that verifies that sizing _is_ emitted on repeated fields with fixed sizes. --- tests/cxx_descriptor/SConscript | 2 +- tests/cxx_descriptor/message.proto | 12 ++++++++++++ tests/cxx_descriptor/message_descriptor.cc | 2 ++ 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/tests/cxx_descriptor/SConscript b/tests/cxx_descriptor/SConscript index 1b609b7..3a798ae 100644 --- a/tests/cxx_descriptor/SConscript +++ b/tests/cxx_descriptor/SConscript @@ -24,5 +24,5 @@ for std in ["c++03", "c++11", "c++14", "c++17", "c++20"]: o1 = e.Object('message_descriptor_{}'.format(std), 'message_descriptor.cc') o2 = e.Object('message.pb_{}'.format(std), 'message.pb.c') - p = e.Program([o1, o2]) + p = e.Program([o1, o2, "$COMMON/pb_common.o"]) e.RunTest(p) diff --git a/tests/cxx_descriptor/message.proto b/tests/cxx_descriptor/message.proto index 74f6b67..bf074e8 100644 --- a/tests/cxx_descriptor/message.proto +++ b/tests/cxx_descriptor/message.proto @@ -20,3 +20,15 @@ message MyMessageWithoutMsgid { optional uint32 field = 1; } +// This message is not used in the tests but is rather a sentry message that +// will trigger a build failure if the generator decides to create a size +// variable for fields which are not size bound. Note that this only works as +// long as the C++ interface for sizing wraps the C interface. +message MyMessageWithoutSize { + repeated uint32 field = 1; +} + +message MyMessageWithSizeBoundRepeatedFields { + option (nanopb_msgopt).max_count = 100; + repeated uint32 field = 1; +} diff --git a/tests/cxx_descriptor/message_descriptor.cc b/tests/cxx_descriptor/message_descriptor.cc index 0644834..149000b 100644 --- a/tests/cxx_descriptor/message_descriptor.cc +++ b/tests/cxx_descriptor/message_descriptor.cc @@ -21,6 +21,8 @@ extern "C" int main() { TEST(MessageDescriptor::size == MyNonEmptyMessage_size); + TEST(MessageDescriptor::size == + MyMessageWithSizeBoundRepeatedFields_size); TEST(MessageDescriptor::fields() == MyEmptyMessage_fields); TEST(MessageDescriptor::fields() == -- cgit v1.2.3