diff options
Diffstat (limited to 'src/test/minunit.h')
-rw-r--r-- | src/test/minunit.h | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/src/test/minunit.h b/src/test/minunit.h new file mode 100644 index 0000000..b1bfda7 --- /dev/null +++ b/src/test/minunit.h @@ -0,0 +1,41 @@ +#ifndef MINUNIT_H +#define MINUNIT_H + +#include <stdio.h> + +#define STR_IMPL(x) #x +#define STR(x) STR_IMPL(x) + +#define MU_INDENT " " + +/* minunit testing macros from /www.jera.com/techinfo/jtns/jtn002.html */ +#define mu_assert(test, message) do { if (!(test)) return message "\n" MU_INDENT "[" __FILE__ ":" STR(__LINE__) "]"; } while (0) +#define mu_assert_equal(a, b) mu_assert(a == b, "'" #a "' is not equal to '" #b "'") +#define mu_assert_unequal(a, b) mu_assert(a != b, "'" #a "' is equal to '" #b "'") +#define mu_assert_streq(a, b) mu_assert(strcmp(a, b) == 0, "'" #a "' is not equal to '" #b "'") + +#define mu_run_test(name, test) do { \ + const char *message = test(); \ + tests_run++; \ + if (message) { \ + printf(MU_INDENT "test '%s' failed: %s\n", name, message); \ + tests_failed++; \ + } \ + } while (0) +#define mu_run_suite(suite) do { \ + int tests_run_old = tests_run; \ + printf("suite: " #suite "\n"); \ + suite(); \ + printf(MU_INDENT "ran %d tests\n\n", \ + tests_run - tests_run_old); \ + } while(0) +#define mu_tests_finished() do { \ + printf("ran %d tests, %d failed\n", tests_run, tests_failed); \ + return tests_failed; \ + } while(0) + +#define mu_test const char * + +extern int tests_run, tests_failed; + +#endif |