aboutsummaryrefslogtreecommitdiff
path: root/lib/cmark/api_test/harness.c
diff options
context:
space:
mode:
authorFelix (xq) Queißner <git@mq32.de>2020-06-09 18:27:38 +0200
committerFelix (xq) Queißner <git@mq32.de>2020-06-09 18:27:38 +0200
commitde8fd9328e9deb0d1ec596d7486686ea3cb688c2 (patch)
tree9c25d7568dee522c1d2ed7b6d238d1dad54163f6 /lib/cmark/api_test/harness.c
parent661ddc244793102ee0720871c4edcd64f80bc744 (diff)
downloadkristall-de8fd9328e9deb0d1ec596d7486686ea3cb688c2.tar.gz
Includes cmark markdown parser library.
Diffstat (limited to 'lib/cmark/api_test/harness.c')
-rw-r--r--lib/cmark/api_test/harness.c83
1 files changed, 83 insertions, 0 deletions
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 <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_failed, num_skipped);
+
+ if (test_ok(runner)) {
+ fprintf(stderr, "PASS\n");
+ } else {
+ fprintf(stderr, "FAIL\n");
+ }
+}