From 84d051f1e5b7d059e5697c459a1d49bf77fec4b0 Mon Sep 17 00:00:00 2001 From: Thomas Jensen Date: Thu, 4 Nov 2021 21:53:35 +0100 Subject: [PATCH] Add unit tests for '-k' option parsing --- src/cmdline.c | 2 +- utest/cmdline_test.c | 45 ++++++++++++++++++++++++++++++++++++++++++++ utest/cmdline_test.h | 5 +++++ utest/main.c | 6 +++++- 4 files changed, 56 insertions(+), 2 deletions(-) diff --git a/src/cmdline.c b/src/cmdline.c index 9b393ab..cfdd8c1 100644 --- a/src/cmdline.c +++ b/src/cmdline.c @@ -327,7 +327,7 @@ static int killblank(opt_t *result, char *optarg) result->killblank = 0; } else { - fprintf(stderr, "%s: -k: invalid parameter\n", PROJECT); + bx_fprintf(stderr, "%s: -k: invalid parameter\n", PROJECT); return 1; } } diff --git a/utest/cmdline_test.c b/utest/cmdline_test.c index 7d10a01..3e26f03 100644 --- a/utest/cmdline_test.c +++ b/utest/cmdline_test.c @@ -118,4 +118,49 @@ void test_indentmode_text(void **state) } +void test_killblank_true(void **state) +{ + (void) state; /* unused */ + + opt_t *actual = act(2, "-k", "true"); + + assert_non_null(actual); + assert_int_equal(1, (int) actual->killblank); +} + + +void test_killblank_false(void **state) +{ + (void) state; /* unused */ + + opt_t *actual = act(2, "-k", "false"); + + assert_non_null(actual); + assert_int_equal(0, (int) actual->killblank); +} + + +void test_killblank_invalid(void **state) +{ + (void) state; /* unused */ + + opt_t *actual = act(2, "-k", "INVALID"); + + assert_null(actual); // invalid option, so we would need to exit with error + assert_int_equal(1, collect_err_size); + assert_string_equal("boxes: -k: invalid parameter\n", collect_err[0]); +} + + +void test_killblank_multiple(void **state) +{ + (void) state; /* unused */ + + opt_t *actual = act(4, "-k", "true", "-k", "false"); // first one wins + + assert_non_null(actual); + assert_int_equal(1, (int) actual->killblank); +} + + /*EOF*/ /* vim: set cindent sw=4: */ diff --git a/utest/cmdline_test.h b/utest/cmdline_test.h index 060e59e..b754e8b 100644 --- a/utest/cmdline_test.h +++ b/utest/cmdline_test.h @@ -32,6 +32,11 @@ void test_indentmode_invalid_short(void **state); void test_indentmode_box(void **state); void test_indentmode_text(void **state); +void test_killblank_true(void **state); +void test_killblank_false(void **state); +void test_killblank_invalid(void **state); +void test_killblank_multiple(void **state); + #endif diff --git a/utest/main.c b/utest/main.c index c603441..5cfd0c5 100644 --- a/utest/main.c +++ b/utest/main.c @@ -52,7 +52,11 @@ int main(void) cmocka_unit_test_setup(test_indentmode_invalid_long, beforeTest), cmocka_unit_test_setup(test_indentmode_invalid_short, beforeTest), cmocka_unit_test_setup(test_indentmode_box, beforeTest), - cmocka_unit_test_setup(test_indentmode_text, beforeTest) + cmocka_unit_test_setup(test_indentmode_text, beforeTest), + cmocka_unit_test_setup(test_killblank_true, beforeTest), + cmocka_unit_test_setup(test_killblank_false, beforeTest), + cmocka_unit_test_setup(test_killblank_invalid, beforeTest), + cmocka_unit_test_setup(test_killblank_multiple, beforeTest) }; const struct CMUnitTest regulex_tests[] = {