summaryrefslogtreecommitdiff
path: root/api_test/main.c
diff options
context:
space:
mode:
authorNick Wellnhofer <wellnhofer@aevum.de>2014-11-18 18:37:56 +0100
committerNick Wellnhofer <wellnhofer@aevum.de>2014-11-18 18:43:04 +0100
commit8dba3f7f3591f4271522835cb2057acf4ae56f53 (patch)
tree8bf044f7c0fa0e13925db0c64e8720a86c0b2336 /api_test/main.c
parent3f9fec6998fccabe5d61bfe84b9d2431f9d5ae53 (diff)
Start with tests for the C API
The C API tests can be run individually via build/api_test/api_test Or together with the spec tests via cmake --build build --target test
Diffstat (limited to 'api_test/main.c')
-rw-r--r--api_test/main.c57
1 files changed, 57 insertions, 0 deletions
diff --git a/api_test/main.c b/api_test/main.c
new file mode 100644
index 0000000..051d32b
--- /dev/null
+++ b/api_test/main.c
@@ -0,0 +1,57 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include <cmark.h>
+
+#include "harness.h"
+
+static void
+create_tree(test_batch_runner *runner)
+{
+ cmark_node *doc = cmark_node_new(CMARK_NODE_DOCUMENT);
+
+ cmark_node *p = cmark_node_new(CMARK_NODE_PARAGRAPH);
+ OK(runner, cmark_node_append_child(doc, p), "append1");
+ INT_EQ(runner, cmark_node_check(doc), 0, "append1 consistent");
+
+ cmark_node *emph = cmark_node_new(CMARK_NODE_EMPH);
+ OK(runner, cmark_node_prepend_child(p, emph), "prepend1");
+ INT_EQ(runner, cmark_node_check(doc), 0, "prepend1 consistent");
+
+ cmark_node *str1 = cmark_node_new(CMARK_NODE_STRING);
+ cmark_node_set_content(str1, "Hello, ");
+ OK(runner, cmark_node_prepend_child(p, str1), "prepend2");
+ INT_EQ(runner, cmark_node_check(doc), 0, "prepend2 consistent");
+
+ cmark_node *str3 = cmark_node_new(CMARK_NODE_STRING);
+ cmark_node_set_content(str3, "!");
+ OK(runner, cmark_node_append_child(p, str3), "append2");
+ INT_EQ(runner, cmark_node_check(doc), 0, "append2 consistent");
+
+ cmark_node *str2 = cmark_node_new(CMARK_NODE_STRING);
+ cmark_node_set_content(str2, "world");
+ OK(runner, cmark_node_append_child(emph, str2), "append3");
+ INT_EQ(runner, cmark_node_check(doc), 0, "append3 consistent");
+
+ char *html = cmark_render_html(doc);
+ STR_EQ(runner, html, "<p>Hello, <em>world</em>!</p>\n",
+ "render_html");
+ free(html);
+
+ cmark_node_destroy(doc);
+}
+
+int main() {
+ int retval;
+ test_batch_runner *runner = test_batch_runner_new();
+
+ create_tree(runner);
+
+ test_print_summary(runner);
+ retval = test_ok(runner) ? 0 : 1;
+ free(runner);
+
+ return retval;
+}
+