From de8fd9328e9deb0d1ec596d7486686ea3cb688c2 Mon Sep 17 00:00:00 2001 From: "Felix (xq) Queißner" Date: Tue, 9 Jun 2020 18:27:38 +0200 Subject: Includes cmark markdown parser library. --- lib/cmark/api_test/harness.c | 83 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 lib/cmark/api_test/harness.c (limited to 'lib/cmark/api_test/harness.c') diff --git a/lib/cmark/api_test/harness.c b/lib/cmark/api_test/harness.c new file mode 100644 index 0000000..f6fd0bc --- /dev/null +++ b/lib/cmark/api_test/harness.c @@ -0,0 +1,83 @@ +#include +#include +#include +#include + +#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_failed, num_skipped); + + if (test_ok(runner)) { + fprintf(stderr, "PASS\n"); + } else { + fprintf(stderr, "FAIL\n"); + } +} -- cgit v1.2.3