From 7b828461ed68a2a53b0e4fdb94c8d69eeb04232a Mon Sep 17 00:00:00 2001 From: Thomas Jensen Date: Fri, 5 Nov 2021 21:48:50 +0100 Subject: [PATCH] Add unit tests for different input and output file situations --- src/cmdline.c | 4 +-- utest/cmdline_test.c | 66 ++++++++++++++++++++++++++++++++++++++++++-- utest/cmdline_test.h | 6 ++++ utest/dummy_in.txt | 1 + utest/main.c | 7 ++++- 5 files changed, 79 insertions(+), 5 deletions(-) create mode 100644 utest/dummy_in.txt diff --git a/src/cmdline.c b/src/cmdline.c index b1561f3..0459403 100644 --- a/src/cmdline.c +++ b/src/cmdline.c @@ -69,8 +69,8 @@ extern int optind; /* for getopt() */ */ static void usage_short(FILE *st) { - fprintf(st, "Usage: %s [options] [infile [outfile]]\n", PROJECT); - fprintf(st, "Try `%s -h' for more information.\n", PROJECT); + bx_fprintf(st, "Usage: %s [options] [infile [outfile]]\n", PROJECT); + bx_fprintf(st, "Try `%s -h' for more information.\n", PROJECT); } diff --git a/utest/cmdline_test.c b/utest/cmdline_test.c index 2706e00..f247103 100644 --- a/utest/cmdline_test.c +++ b/utest/cmdline_test.c @@ -45,8 +45,8 @@ static opt_t *act(const int num_args, ...) if (num_args > 0) { va_list va; va_start(va, num_args); - char *arg; - while ((arg = va_arg(va, char *))) { + for (int i=0; iinfile); + assert_ptr_equal(stdout, actual->outfile); +} + + +void test_inputfiles_stdin(void **state) +{ + (void) state; /* unused */ + + opt_t *actual = act(1, "-"); + + assert_non_null(actual); + assert_ptr_equal(stdin, actual->infile); + assert_ptr_equal(stdout, actual->outfile); +} + + +void test_inputfiles_input_nonexistent(void **state) +{ + (void) state; /* unused */ + + opt_t *actual = act(1, "NON-EXISTENT"); + + assert_null(actual); // invalid option, so we would need to exit with error + assert_int_equal(1, collect_err_size); + assert_string_equal("boxes: Can\'t open input file -- NON-EXISTENT\n", collect_err[0]); +} + + +void test_inputfiles_actual_success(void **state) +{ + (void) state; /* unused */ + + opt_t *actual = act(2, "../utest/dummy_in.txt", "dummy_out.txt"); + + assert_non_null(actual); + assert_non_null(actual->infile); + assert_non_null(actual->outfile); +} + + /*EOF*/ /* vim: set cindent sw=4: */ diff --git a/utest/cmdline_test.h b/utest/cmdline_test.h index f6a0226..f71a419 100644 --- a/utest/cmdline_test.h +++ b/utest/cmdline_test.h @@ -57,6 +57,12 @@ void test_alignment_invalid_jX(void **state); void test_alignment_notset(void **state); void test_alignment_incomplete(void **state); +void test_inputfiles_illegal_third_file(void **state); +void test_inputfiles_stdin_stdout(void **state); +void test_inputfiles_stdin(void **state); +void test_inputfiles_input_nonexistent(void **state); +void test_inputfiles_actual_success(void **state); + #endif diff --git a/utest/dummy_in.txt b/utest/dummy_in.txt new file mode 100644 index 0000000..b5d0f8d --- /dev/null +++ b/utest/dummy_in.txt @@ -0,0 +1 @@ +Test fixture. Do not remove. diff --git a/utest/main.c b/utest/main.c index 4d8da39..68d5c39 100644 --- a/utest/main.c +++ b/utest/main.c @@ -73,7 +73,12 @@ int main(void) cmocka_unit_test_setup(test_alignment_invalid_vX, beforeTest), cmocka_unit_test_setup(test_alignment_invalid_jX, beforeTest), cmocka_unit_test_setup(test_alignment_notset, beforeTest), - cmocka_unit_test_setup(test_alignment_incomplete, beforeTest) + cmocka_unit_test_setup(test_alignment_incomplete, beforeTest), + cmocka_unit_test_setup(test_inputfiles_illegal_third_file, beforeTest), + cmocka_unit_test_setup(test_inputfiles_stdin_stdout, beforeTest), + cmocka_unit_test_setup(test_inputfiles_stdin, beforeTest), + cmocka_unit_test_setup(test_inputfiles_input_nonexistent, beforeTest), + cmocka_unit_test_setup(test_inputfiles_actual_success, beforeTest) }; const struct CMUnitTest regulex_tests[] = {