From d2c500836cbda3e38e5b351335c5037ecf25aac3 Mon Sep 17 00:00:00 2001 From: Peter van der Perk Date: Tue, 23 Feb 2021 17:59:35 +0100 Subject: [PATCH] Added serialization size test for override capacity --- src/nunavut/lang/c/templates/definitions.j2 | 4 ++-- src/nunavut/lang/c/templates/serialization.j2 | 2 +- .../c/suite/test_override_variable_array_capacity.c | 11 +++++++++++ 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/src/nunavut/lang/c/templates/definitions.j2 b/src/nunavut/lang/c/templates/definitions.j2 index d2b30c8c..360efba6 100644 --- a/src/nunavut/lang/c/templates/definitions.j2 +++ b/src/nunavut/lang/c/templates/definitions.j2 @@ -51,8 +51,8 @@ static_assert({{ t | full_reference_name }}_EXTENT_BYTES_ >= {# -#} {%- endif %} #define {{ t | full_reference_name }}_{{ f.name }}_ARRAY_CAPACITY_ {{ f.data_type.capacity }}U {%- if options.enable_override_variable_array_capacity and f.data_type is VariableLengthArrayType %} -#elif !defined(reg_drone_service_battery_Status_0_2_DISABLE_SERIALIZATION_BUFFER_CHECK) -# define reg_drone_service_battery_Status_0_2_DISABLE_SERIALIZATION_BUFFER_CHECK +#elif !defined({{ t | full_reference_name }}_DISABLE_SERIALIZATION_BUFFER_CHECK_) +# define {{ t | full_reference_name }}_DISABLE_SERIALIZATION_BUFFER_CHECK_ #endif #if {{ t | full_reference_name }}_{{ f.name }}_ARRAY_CAPACITY_ > {{ f.data_type.capacity }}U # error {{ t | full_reference_name }}_{{ f.name }}_ARRAY_CAPACITY_ > {{ f.data_type.capacity }}U diff --git a/src/nunavut/lang/c/templates/serialization.j2 b/src/nunavut/lang/c/templates/serialization.j2 index b0547e4e..baf4f8df 100644 --- a/src/nunavut/lang/c/templates/serialization.j2 +++ b/src/nunavut/lang/c/templates/serialization.j2 @@ -29,7 +29,7 @@ {% macro _serialize_impl(t) %} const {{ typename_unsigned_length }} capacity_bytes = *inout_buffer_size_bytes; {%- if options.enable_override_variable_array_capacity %} -#ifndef reg_drone_service_battery_Status_0_2_DISABLE_SERIALIZATION_BUFFER_CHECK +#ifndef {{ t | full_reference_name }}_DISABLE_SERIALIZATION_BUFFER_CHECK_ {% endif %} if ((8U * ({{ typename_unsigned_bit_length }}) capacity_bytes) < {{ t.inner_type.bit_length_set|max }}UL) { diff --git a/verification/c/suite/test_override_variable_array_capacity.c b/verification/c/suite/test_override_variable_array_capacity.c index 796c2976..f4f9ee43 100644 --- a/verification/c/suite/test_override_variable_array_capacity.c +++ b/verification/c/suite/test_override_variable_array_capacity.c @@ -17,6 +17,7 @@ static void testPrimitiveArrayVariableOverride(void) { regulated_basics_PrimitiveArrayVariable_0_1 ref; + uint8_t buf[regulated_basics_PrimitiveArrayVariable_0_1_SERIALIZATION_BUFFER_SIZE_BYTES_ - 1]; #if NUNAVUT_SUPPORT_LANGUAGE_OPTION_ENABLE_OVERRIDE_VARIABLE_ARRAY_CAPACITY == 1 TEST_ASSERT_EQUAL(sizeof(ref.a_u64.elements[0]) * OVERRIDE_SIZE, sizeof(ref.a_u64.elements)); @@ -29,6 +30,16 @@ static void testPrimitiveArrayVariableOverride(void) regulated_basics_PrimitiveArrayVariable_0_1_n_f32_ARRAY_CAPACITY_, sizeof(ref.n_f64.elements)); #endif + + size_t size = sizeof(buf); + +#if NUNAVUT_SUPPORT_LANGUAGE_OPTION_ENABLE_OVERRIDE_VARIABLE_ARRAY_CAPACITY == 1 + TEST_ASSERT_EQUAL(NUNAVUT_SUCCESS, + regulated_basics_PrimitiveArrayVariable_0_1_serialize_(&ref, &buf[0], &size)); +#else + TEST_ASSERT_EQUAL(-NUNAVUT_ERROR_SERIALIZATION_BUFFER_TOO_SMALL, + regulated_basics_PrimitiveArrayVariable_0_1_serialize_(&ref, &buf[0], &size)); +#endif } void setUp(void)