diff options
| author | Gertjan van den Burg <burg@ese.eur.nl> | 2016-09-20 17:08:25 +0200 |
|---|---|---|
| committer | Gertjan van den Burg <burg@ese.eur.nl> | 2016-09-20 17:08:25 +0200 |
| commit | 3ac228093889d51b8d92795c2a7a7aa8748c8c28 (patch) | |
| tree | af052abbcba656f17c26732a79297234df2536ad | |
| parent | Change globals.h to gensvm_globals.h (diff) | |
| download | gensvm-3ac228093889d51b8d92795c2a7a7aa8748c8c28.tar.gz gensvm-3ac228093889d51b8d92795c2a7a7aa8748c8c28.zip | |
Unit tests for printing and removal of gensvm_print_string
Using gensvm_print_string seemed unnecessary, so removed it
| -rw-r--r-- | src/gensvm_print.c | 36 | ||||
| -rw-r--r-- | tests/data/test_err_print.txt | 2 | ||||
| -rw-r--r-- | tests/data/test_note_print.txt | 2 | ||||
| -rw-r--r-- | tests/src/test_gensvm_print.c | 90 |
4 files changed, 102 insertions, 28 deletions
diff --git a/src/gensvm_print.c b/src/gensvm_print.c index 9ac210e..596a055 100644 --- a/src/gensvm_print.c +++ b/src/gensvm_print.c @@ -1,8 +1,8 @@ /** - * @file util.c + * @file gensvm_print.c * @author Gertjan van den Burg * @date January, 2014 - * @brief Utility functions + * @brief Various print functions for printing to output streams * * @details * This file contains several utility functions for coordinating input and @@ -15,8 +15,7 @@ FILE *GENSVM_OUTPUT_FILE = NULL; ///< The #GENSVM_OUTPUT_FILE specifies the ///< output stream to which all output is ///< written. This is done through the - ///< internal (!) - ///< function gensvm_print_string(). The + ///< function note(). The ///< advantage of using a global output ///< stream variable is that the output can ///< temporarily be suppressed by importing @@ -31,34 +30,12 @@ FILE *GENSVM_ERROR_FILE = NULL; ///< The #GENSVM_ERROR_FILE specifies the ///< output is written. /** - * @brief Print a given string to the specified output stream - * - * @details - * This function is used to print a given string to the output stream - * specified by #GENSVM_OUTPUT_FILE. The stream is flushed after the string - * is written to the stream. If #GENSVM_OUTPUT_FILE is NULL, nothing is - * written. Note that this function is only used by note(), it should never be - * used directly. - * - * @param[in] s string to write to the stream - * - */ -static void gensvm_print_string(const char *s) -{ - if (GENSVM_OUTPUT_FILE != NULL) { - fputs(s, GENSVM_OUTPUT_FILE); - fflush(GENSVM_OUTPUT_FILE); - } -} - -/** * @brief Parse a formatted string and write to the output stream * * @details * This function is a replacement of fprintf(), such that the output stream * does not have to be specified at each function call. The functionality is - * exactly the same however. Writing the formatted string to the output stream - * is handled by gensvm_print_string(). + * exactly the same however. * * @param[in] fmt String format * @param[in] ... variable argument list for the string format @@ -71,7 +48,10 @@ void note(const char *fmt,...) va_start(ap,fmt); vsprintf(buf,fmt,ap); va_end(ap); - (*gensvm_print_string)(buf); + if (GENSVM_OUTPUT_FILE != NULL) { + fputs(buf, GENSVM_OUTPUT_FILE); + fflush(GENSVM_OUTPUT_FILE); + } } /** diff --git a/tests/data/test_err_print.txt b/tests/data/test_err_print.txt new file mode 100644 index 0000000..4909594 --- /dev/null +++ b/tests/data/test_err_print.txt @@ -0,0 +1,2 @@ +This is some text. +This is formatted text with 1.23. diff --git a/tests/data/test_note_print.txt b/tests/data/test_note_print.txt new file mode 100644 index 0000000..4909594 --- /dev/null +++ b/tests/data/test_note_print.txt @@ -0,0 +1,2 @@ +This is some text. +This is formatted text with 1.23. diff --git a/tests/src/test_gensvm_print.c b/tests/src/test_gensvm_print.c new file mode 100644 index 0000000..761f820 --- /dev/null +++ b/tests/src/test_gensvm_print.c @@ -0,0 +1,90 @@ +/** + * @file test_gensvm_print.c + * @author Gertjan van den Burg + * @date September, 2016 + * @brief Unit tests for gensvm_print.c functions + */ + +#include "minunit.h" +#include "gensvm_print.h" + +extern FILE *GENSVM_OUTPUT_FILE; +extern FILE *GENSVM_ERROR_FILE; + +char *test_note() +{ + FILE *fid = NULL; + GENSVM_OUTPUT_FILE = fopen("./data/test_note_print.txt", "w"); + + // start test code // + note("This is some text.\n"); + note("This is %s with %.2f.\n", "formatted text", 1.231234); + + // close the output stream + fclose(GENSVM_OUTPUT_FILE); + GENSVM_OUTPUT_FILE = NULL; + + note("This is some more text.\n"); + note("This shouldn't appear in the output file.\n"); + + char buffer[MAX_LINE_LENGTH]; + fid = fopen("./data/test_note_print.txt", "r"); + + fgets(buffer, MAX_LINE_LENGTH, fid); + mu_assert(strcmp(buffer, "This is some text.\n") == 0, + "Line doesn't contain expected content (1)"); + + fgets(buffer, MAX_LINE_LENGTH, fid); + mu_assert(strcmp(buffer, "This is formatted text with 1.23.\n") == 0, + "Line doesn't contain expected content (2)"); + + fclose(fid); + + // end test code // + + return NULL; +} + +char *test_err() +{ + FILE *fid = NULL; + GENSVM_ERROR_FILE = fopen("./data/test_err_print.txt", "w"); + + // start test code // + err("This is some text.\n"); + err("This is %s with %.2f.\n", "formatted text", 1.231234); + + // close the output stream + fclose(GENSVM_ERROR_FILE); + GENSVM_ERROR_FILE = NULL; + + err("This is some more text.\n"); + err("This shouldn't appear in the output file.\n"); + + char buffer[MAX_LINE_LENGTH]; + fid = fopen("./data/test_err_print.txt", "r"); + + fgets(buffer, MAX_LINE_LENGTH, fid); + mu_assert(strcmp(buffer, "This is some text.\n") == 0, + "Line doesn't contain expected content (1)"); + + fgets(buffer, MAX_LINE_LENGTH, fid); + mu_assert(strcmp(buffer, "This is formatted text with 1.23.\n") == 0, + "Line doesn't contain expected content (2)"); + + fclose(fid); + + // end test code // + return NULL; +} + +char *all_tests() +{ + mu_suite_start(); + mu_run_test(test_note); + mu_run_test(test_err); + + return NULL; +} + +RUN_TESTS(all_tests); |
