From 5a7bba809357aaa593ef9f807904062a29ca62c1 Mon Sep 17 00:00:00 2001 From: Michael Vetter Date: Mon, 23 Feb 2026 18:36:52 +0100 Subject: [PATCH] tests: Add test for string_to_verbosity() --- tests/unittests/test_common.c | 62 +++++++++++++++++++++++++++++++++++ tests/unittests/test_common.h | 1 + tests/unittests/unittests.c | 1 + 3 files changed, 64 insertions(+) diff --git a/tests/unittests/test_common.c b/tests/unittests/test_common.c index 67901443..e6b59956 100644 --- a/tests/unittests/test_common.c +++ b/tests/unittests/test_common.c @@ -353,6 +353,68 @@ void test_get_expanded_path(void** state) { g_free(expanded_path); } +void test_string_to_verbosity(void** state) { + int verbosity; + gchar* err_msg = NULL; + gboolean result; + + // Valid input string (0) + result = string_to_verbosity("0", &verbosity, &err_msg); + assert_true(result); + assert_int_equal(0, verbosity); + assert_null(err_msg); + g_free(err_msg); err_msg = NULL; // Clear for next test + + // Valid input string (1) + result = string_to_verbosity("1", &verbosity, &err_msg); + assert_true(result); + assert_int_equal(1, verbosity); + assert_null(err_msg); + g_free(err_msg); err_msg = NULL; + + // Valid input string (3) + result = string_to_verbosity("3", &verbosity, &err_msg); + assert_true(result); + assert_int_equal(3, verbosity); + assert_null(err_msg); + g_free(err_msg); err_msg = NULL; + + // Invalid input string (not a number) + result = string_to_verbosity("profanity", &verbosity, &err_msg); + assert_false(result); + assert_string_equal("Could not convert \"profanity\" to a number.", err_msg); + g_free(err_msg); + err_msg = NULL; + + // Valid input string, out of range (too low) + result = string_to_verbosity("-1", &verbosity, &err_msg); + assert_false(result); + assert_string_equal("Value -1 out of range. Must be in 0..3.", err_msg); + g_free(err_msg); err_msg = NULL; + + // Valid input string, out of range (too high) + result = string_to_verbosity("4", &verbosity, &err_msg); + assert_false(result); + assert_string_equal("Value 4 out of range. Must be in 0..3.", err_msg); + g_free(err_msg); err_msg = NULL; + + // NULL input string + result = string_to_verbosity(NULL, &verbosity, &err_msg); + assert_false(result); + assert_string_equal("'str' input pointer can not be NULL", err_msg); + g_free(err_msg); err_msg = NULL; + + // Empty input string + result = string_to_verbosity("", &verbosity, &err_msg); + assert_false(result); + assert_string_equal("Could not convert \"\" to a number.", err_msg); + g_free(err_msg); err_msg = NULL; + + // err_msg is NULL + result = string_to_verbosity("abc", &verbosity, NULL); + assert_false(result); +} + typedef struct { char* template; diff --git a/tests/unittests/test_common.h b/tests/unittests/test_common.h index 32feed02..044534a6 100644 --- a/tests/unittests/test_common.h +++ b/tests/unittests/test_common.h @@ -35,3 +35,4 @@ void prof_occurrences_of_large_message_tests(void** state); void unique_filename_from_url_td(void** state); void format_call_external_argv_td(void** state); void test_get_expanded_path(void** state); +void test_string_to_verbosity(void** state); diff --git a/tests/unittests/unittests.c b/tests/unittests/unittests.c index e64ea002..693857eb 100644 --- a/tests/unittests/unittests.c +++ b/tests/unittests/unittests.c @@ -94,6 +94,7 @@ main(int argc, char* argv[]) cmocka_unit_test(strip_quotes_strips_both), cmocka_unit_test(format_call_external_argv_td), cmocka_unit_test(unique_filename_from_url_td), + cmocka_unit_test(test_string_to_verbosity), cmocka_unit_test(test_get_expanded_path), cmocka_unit_test(clear_empty),