From 7aef8c6926ba09c089f52b891fdc1cda5d5ce617 Mon Sep 17 00:00:00 2001 From: Matt Durak Date: Tue, 10 Mar 2026 12:26:30 -0700 Subject: [PATCH 1/4] Update deps + parameterized test refactoring - Update deps/c-testrunnerswitcher to master (adds PARAMETERIZED_TEST_FUNCTION support) - Update deps/ctest to master (adds CTEST_PARAMETERIZED_TEST_FUNCTION) - Refactor azure_base64_ut: consolidate 6 identical Azure_Base64_Decode_invalid_length_fails tests into a single PARAMETERIZED_TEST_FUNCTION Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- deps/c-testrunnerswitcher | 2 +- deps/ctest | 2 +- tests/azure_base64_ut/azure_base64_ut.c | 81 +++---------------------- 3 files changed, 11 insertions(+), 74 deletions(-) diff --git a/deps/c-testrunnerswitcher b/deps/c-testrunnerswitcher index 095648ce..48b0066e 160000 --- a/deps/c-testrunnerswitcher +++ b/deps/c-testrunnerswitcher @@ -1 +1 @@ -Subproject commit 095648cece8d0a20ba24032145924da21dc7f473 +Subproject commit 48b0066eef2dd726ba0ea48189923060aacfb449 diff --git a/deps/ctest b/deps/ctest index e021764c..4b886570 160000 --- a/deps/ctest +++ b/deps/ctest @@ -1 +1 @@ -Subproject commit e021764c05e8d863d0ddf432ac0d1ccd03671bea +Subproject commit 4b886570c53fbca2609e416b42a0e8aedec17ae3 diff --git a/tests/azure_base64_ut/azure_base64_ut.c b/tests/azure_base64_ut/azure_base64_ut.c index d7ac1806..5ec640c3 100644 --- a/tests/azure_base64_ut/azure_base64_ut.c +++ b/tests/azure_base64_ut/azure_base64_ut.c @@ -1744,86 +1744,23 @@ TEST_FUNCTION(Azure_Base64_Decode_zero_length_returns_zero_length) } /*Tests_SRS_BASE64_06_011: [If the source string has an invalid length for a base 64 encoded string then Azure_Base64_Decode shall return NULL.]*/ -TEST_FUNCTION(Azure_Base64_Decode_invalid_length_fails_1) +PARAMETERIZED_TEST_FUNCTION(Azure_Base64_Decode_invalid_length_fails, + ARGS(const char*, invalid_input), + CASE(("1"), length_1), + CASE(("12"), length_2), + CASE(("123"), length_3), + CASE(("12345"), length_5), + CASE(("123456"), length_6), + CASE(("1234567"), length_7)) { ///Arrange BUFFER_HANDLE result; ///act - result = Azure_Base64_Decode("1"); + result = Azure_Base64_Decode(invalid_input); ///assert ASSERT_IS_NULL(result); - -} - -/*Tests_SRS_BASE64_06_011: [If the source string has an invalid length for a base 64 encoded string then Azure_Base64_Decode shall return NULL.]*/ -TEST_FUNCTION(Azure_Base64_Decode_invalid_length_fails_2) -{ - ///Arrange - BUFFER_HANDLE result; - - ///act - result = Azure_Base64_Decode("12"); - - ///assert - ASSERT_IS_NULL(result); - -} - -/*Tests_SRS_BASE64_06_011: [If the source string has an invalid length for a base 64 encoded string then Azure_Base64_Decode shall return NULL.]*/ -TEST_FUNCTION(Azure_Base64_Decode_invalid_length_fails_3) -{ - ///Arrange - BUFFER_HANDLE result; - - ///act - result = Azure_Base64_Decode("123"); - - ///assert - ASSERT_IS_NULL(result); - -} - -/*Tests_SRS_BASE64_06_011: [If the source string has an invalid length for a base 64 encoded string then Azure_Base64_Decode shall return NULL.]*/ -TEST_FUNCTION(Azure_Base64_Decode_invalid_length_fails_4) -{ - ///Arrange - BUFFER_HANDLE result; - - ///act - result = Azure_Base64_Decode("12345"); - - ///assert - ASSERT_IS_NULL(result); - -} - -/*Tests_SRS_BASE64_06_011: [If the source string has an invalid length for a base 64 encoded string then Azure_Base64_Decode shall return NULL.]*/ -TEST_FUNCTION(Azure_Base64_Decode_invalid_length_fails_5) -{ - ///Arrange - BUFFER_HANDLE result; - - ///act - result = Azure_Base64_Decode("123456"); - - ///assert - ASSERT_IS_NULL(result); -} - -/*Tests_SRS_BASE64_06_011: [If the source string has an invalid length for a base 64 encoded string then Azure_Base64_Decode shall return NULL.]*/ -TEST_FUNCTION(Azure_Base64_Decode_invalid_length_fails_6) -{ - ///Arrange - BUFFER_HANDLE result; - - ///act - result = Azure_Base64_Decode("1234567"); - - ///assert - ASSERT_IS_NULL(result); - } /*Tests_SRS_BASE64_06_010: [If there is any memory allocation failure during the decode then Azure_Base64_Decode shall return NULL.]*/ From 0917950a904e68e05d855058e35a1cdac27a73ca Mon Sep 17 00:00:00 2001 From: Matt Durak Date: Tue, 10 Mar 2026 14:35:37 -0700 Subject: [PATCH 2/4] Additional parameterized test refactoring Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- .../flags_to_string_int/flags_to_string_int.c | 104 ++---------------- 1 file changed, 11 insertions(+), 93 deletions(-) diff --git a/tests/flags_to_string_int/flags_to_string_int.c b/tests/flags_to_string_int/flags_to_string_int.c index d5a3781d..6dcb2d49 100644 --- a/tests/flags_to_string_int/flags_to_string_int.c +++ b/tests/flags_to_string_int/flags_to_string_int.c @@ -31,106 +31,24 @@ TEST_FUNCTION_CLEANUP(cleans) { } -TEST_FUNCTION(collection_one_flag_one) +PARAMETERIZED_TEST_FUNCTION(collection_one_flags_to_string, // no-srs + ARGS(uint32_t, flags_value, const char*, expected_string), + CASE((1, "FLAG_ONE"), flag_one), + CASE((2, "FLAG_TWO"), flag_two), + CASE((3, "FLAG_ONE | FLAG_TWO"), flag_one_and_two), + CASE((0, ""), zero), + CASE((4, "UNKNOWN_FLAG(0x00000004)"), unknown_flag), + CASE((13, "FLAG_ONE | UNKNOWN_FLAG(0x0000000c)"), known_and_unknown_flag), + CASE((15, "FLAG_ONE | FLAG_TWO | UNKNOWN_FLAG(0x0000000c)"), all_known_and_unknown_flag)) { ///arrange ///act - char* result = FLAGS_TO_STRING(COLLECTION_ONE)(1); - - ///assert - ASSERT_IS_NOT_NULL(result); - ASSERT_ARE_EQUAL(char_ptr, "FLAG_ONE", result); - - ///clean - free(result); -} - -TEST_FUNCTION(collection_one_flag_two) -{ - ///arrange - - ///act - char* result = FLAGS_TO_STRING(COLLECTION_ONE)(2); - - ///assert - ASSERT_IS_NOT_NULL(result); - ASSERT_ARE_EQUAL(char_ptr, "FLAG_TWO", result); - - ///clean - free(result); -} - -TEST_FUNCTION(collection_one_flag_one_and_two) -{ - ///arrange - - ///act - char* result = FLAGS_TO_STRING(COLLECTION_ONE)(1 | 2); - - ///assert - ASSERT_IS_NOT_NULL(result); - ASSERT_ARE_EQUAL(char_ptr, "FLAG_ONE | FLAG_TWO", result); - - ///clean - free(result); -} - -TEST_FUNCTION(collection_one_zero) -{ - ///arrange - - ///act - char* result = FLAGS_TO_STRING(COLLECTION_ONE)(0); - - ///assert - ASSERT_IS_NOT_NULL(result); - ASSERT_ARE_EQUAL(char_ptr, "", result); - - ///clean - free(result); -} - -TEST_FUNCTION(collection_one_unknown_flag) -{ - ///arrange - - ///act - char* result = FLAGS_TO_STRING(COLLECTION_ONE)(4); - - ///assert - ASSERT_IS_NOT_NULL(result); - ASSERT_ARE_EQUAL(char_ptr, "UNKNOWN_FLAG(0x00000004)", result); - - ///clean - free(result); -} - -TEST_FUNCTION(collection_one_known_and_unknown_flag) -{ - ///arrange - - ///act - char* result = FLAGS_TO_STRING(COLLECTION_ONE)(13); - - ///assert - ASSERT_IS_NOT_NULL(result); - ASSERT_ARE_EQUAL(char_ptr, "FLAG_ONE | UNKNOWN_FLAG(0x0000000c)", result); - - ///clean - free(result); -} - -TEST_FUNCTION(collection_one_all_known_and_unknown_flag) -{ - ///arrange - - ///act - char* result = FLAGS_TO_STRING(COLLECTION_ONE)(15); + char* result = FLAGS_TO_STRING(COLLECTION_ONE)(flags_value); ///assert ASSERT_IS_NOT_NULL(result); - ASSERT_ARE_EQUAL(char_ptr, "FLAG_ONE | FLAG_TWO | UNKNOWN_FLAG(0x0000000c)", result); + ASSERT_ARE_EQUAL(char_ptr, expected_string, result); ///clean free(result); From 130e64f4f9720ab30c56b9b55ea947625025365e Mon Sep 17 00:00:00 2001 From: Matt Durak Date: Tue, 10 Mar 2026 22:19:22 -0700 Subject: [PATCH 3/4] Fix: remove no-srs comments from test functions Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- tests/flags_to_string_int/flags_to_string_int.c | 2 +- tests/reals_ut/c_util_reals_ut.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/flags_to_string_int/flags_to_string_int.c b/tests/flags_to_string_int/flags_to_string_int.c index 6dcb2d49..c37a0752 100644 --- a/tests/flags_to_string_int/flags_to_string_int.c +++ b/tests/flags_to_string_int/flags_to_string_int.c @@ -31,7 +31,7 @@ TEST_FUNCTION_CLEANUP(cleans) { } -PARAMETERIZED_TEST_FUNCTION(collection_one_flags_to_string, // no-srs +PARAMETERIZED_TEST_FUNCTION(collection_one_flags_to_string ARGS(uint32_t, flags_value, const char*, expected_string), CASE((1, "FLAG_ONE"), flag_one), CASE((2, "FLAG_TWO"), flag_two), diff --git a/tests/reals_ut/c_util_reals_ut.c b/tests/reals_ut/c_util_reals_ut.c index 65105922..438d002b 100644 --- a/tests/reals_ut/c_util_reals_ut.c +++ b/tests/reals_ut/c_util_reals_ut.c @@ -7,7 +7,7 @@ BEGIN_TEST_SUITE(TEST_SUITE_NAME_FROM_CMAKE) // this test makes sure that the mappings work // (there is a real_ function corresponding to the original) -TEST_FUNCTION(check_all_c_util_reals) // no-srs +TEST_FUNCTION(check_all_c_util_reals) { // arrange From c5b39d00efcea05ee38789b5cdc0ad4c3879d011 Mon Sep 17 00:00:00 2001 From: Matt Durak Date: Tue, 10 Mar 2026 23:34:49 -0700 Subject: [PATCH 4/4] Fix missing comma in PARAMETERIZED_TEST_FUNCTION and restore // no-srs - Added missing comma between function name and ARGS in flags_to_string_int.c - Restored // no-srs comment on TEST_FUNCTION in c_util_reals_ut.c Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- tests/flags_to_string_int/flags_to_string_int.c | 2 +- tests/reals_ut/c_util_reals_ut.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/flags_to_string_int/flags_to_string_int.c b/tests/flags_to_string_int/flags_to_string_int.c index c37a0752..2844faa0 100644 --- a/tests/flags_to_string_int/flags_to_string_int.c +++ b/tests/flags_to_string_int/flags_to_string_int.c @@ -31,7 +31,7 @@ TEST_FUNCTION_CLEANUP(cleans) { } -PARAMETERIZED_TEST_FUNCTION(collection_one_flags_to_string +PARAMETERIZED_TEST_FUNCTION(collection_one_flags_to_string, ARGS(uint32_t, flags_value, const char*, expected_string), CASE((1, "FLAG_ONE"), flag_one), CASE((2, "FLAG_TWO"), flag_two), diff --git a/tests/reals_ut/c_util_reals_ut.c b/tests/reals_ut/c_util_reals_ut.c index 438d002b..65105922 100644 --- a/tests/reals_ut/c_util_reals_ut.c +++ b/tests/reals_ut/c_util_reals_ut.c @@ -7,7 +7,7 @@ BEGIN_TEST_SUITE(TEST_SUITE_NAME_FROM_CMAKE) // this test makes sure that the mappings work // (there is a real_ function corresponding to the original) -TEST_FUNCTION(check_all_c_util_reals) +TEST_FUNCTION(check_all_c_util_reals) // no-srs { // arrange