diff options
author | Joseph Hunkeler <jhunkeler@users.noreply.github.com> | 2020-03-24 12:35:30 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-03-24 12:35:30 -0400 |
commit | ae3eb38592cb40011fd026d3c7c64ebc022bedca (patch) | |
tree | 5b576d374cc2d12bc5593c8b09adaa25c4453346 /tests/test_str_print_banner.c | |
parent | ccaeb7092b5ad40b1b3833c987ba3ec4d47f0bb8 (diff) | |
parent | 239251d34af9137acf7e84c6969e118d3b0593c0 (diff) | |
download | spmc-ae3eb38592cb40011fd026d3c7c64ebc022bedca.tar.gz |
Merge pull request #2 from jhunkeler/ctest
Implement ctest testing
Diffstat (limited to 'tests/test_str_print_banner.c')
-rw-r--r-- | tests/test_str_print_banner.c | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/tests/test_str_print_banner.c b/tests/test_str_print_banner.c new file mode 100644 index 0000000..0ca09fd --- /dev/null +++ b/tests/test_str_print_banner.c @@ -0,0 +1,43 @@ +#include "spm.h" +#include "framework.h" + +const char *testFmt = "case %zu: '%s' is length %zu, expected %zu\n"; +const char *testFmtChars = "case %zu: '%s' got '%c' (pos: %zu), expected '%c'\n"; + +int main(int argc, char *argv[]) { + const int max_banner = 'z'; + const int max_banner_len = 80; + char buf[BUFSIZ] = {0,}; + char *buffer = buf; + int stdout_save = 0; + + fflush(stdout); + for (size_t i = 'A', letters = 'A'; i <= max_banner; i++, letters++) { + char letter[1]; + size_t buffer_len = 0; + + // Assign letter character + sprintf(letter, "%c", (int)letters); + + // Redirect stdout + stdout_save = dup(STDOUT_FILENO); + freopen("/dev/null", "w", stdout); + setvbuf(stdout, buffer, _IOLBF, sizeof(buf)); + + // Do test + print_banner(letter, i); + fflush(stdout); + + strip(buffer); + buffer_len = strlen(buffer); + + myassert(buffer_len == i, testFmt, i, buffer, buffer_len, i); + for (size_t j = 0; j < buffer_len; j++) { + myassert(buffer[j] == (int)letters, testFmtChars, i, buffer, j, buffer[j], (int)letters, buffer[j]); + } + + // Restore stdout + dup2(stdout_save, STDOUT_FILENO); + setvbuf(stdout, NULL, _IONBF, 0); + } +}
\ No newline at end of file |