diff options
author | John MacFarlane <fiddlosopher@gmail.com> | 2014-11-18 16:45:11 -0800 |
---|---|---|
committer | John MacFarlane <fiddlosopher@gmail.com> | 2014-11-18 16:45:11 -0800 |
commit | 9370b2cfd9b6382164ab7bde36a59409d32ae498 (patch) | |
tree | 5a371e5c14340531753e446a0b84a75bab87ec29 /api_test/harness.c | |
parent | 47580cbda73fa6ad984dc4690625eb27b54bc563 (diff) | |
parent | 1d39b50d8889155de11df40f7e89bec09e0c4681 (diff) |
Merge branch 'api_tests' of https://github.com/nwellnhof/CommonMark into nwellnhof-api_tests
Diffstat (limited to 'api_test/harness.c')
-rw-r--r-- | api_test/harness.c | 102 |
1 files changed, 102 insertions, 0 deletions
diff --git a/api_test/harness.c b/api_test/harness.c new file mode 100644 index 0000000..6b38d41 --- /dev/null +++ b/api_test/harness.c @@ -0,0 +1,102 @@ +#include <stdarg.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +#include "harness.h" + +test_batch_runner* +test_batch_runner_new() +{ + return (test_batch_runner *)calloc(1, sizeof(test_batch_runner)); +} + +static void +test_result(test_batch_runner *runner, int cond, const char *msg, va_list ap) +{ + ++runner->test_num; + + if (cond) { + ++runner->num_passed; + } + else { + fprintf(stderr, "FAILED test %d: ", runner->test_num); + vfprintf(stderr, msg, ap); + fprintf(stderr, "\n"); + ++runner->num_failed; + } +} + +void +SKIP(test_batch_runner *runner, int num_tests) +{ + runner->test_num += num_tests; + runner->num_skipped += num_tests; +} + +void +OK(test_batch_runner *runner, int cond, const char *msg, ...) +{ + va_list ap; + va_start(ap, msg); + test_result(runner, cond, msg, ap); + va_end(ap); +} + +void +INT_EQ(test_batch_runner *runner, int got, int expected, const char *msg, ...) +{ + int cond = got == expected; + + va_list ap; + va_start(ap, msg); + test_result(runner, cond, msg, ap); + va_end(ap); + + if (!cond) { + fprintf(stderr, " Got: %d\n", got); + fprintf(stderr, " Expected: %d\n", expected); + } +} + +void +STR_EQ(test_batch_runner *runner, const char *got, const char *expected, + const char *msg, ...) +{ + int cond = strcmp(got, expected) == 0; + + va_list ap; + va_start(ap, msg); + test_result(runner, cond, msg, ap); + va_end(ap); + + if (!cond) { + fprintf(stderr, " Got: \"%s\"\n", got); + fprintf(stderr, " Expected: \"%s\"\n", expected); + } +} + +int +test_ok(test_batch_runner *runner) +{ + return runner->num_failed == 0; +} + +void +test_print_summary(test_batch_runner *runner) +{ + int num_passed = runner->num_passed; + int num_skipped = runner->num_skipped; + int num_failed = runner->num_failed; + + fprintf(stderr, "%d tests passed, %d failed, %d skipped\n", + num_passed, num_skipped, num_failed); + + if (test_ok(runner)) { + fprintf(stderr, "PASS\n"); + } + else { + fprintf(stderr, "FAIL\n"); + } +} + |