From bd46a95b93084ad1e3b3b729cc0f2d2ad87f1aca Mon Sep 17 00:00:00 2001 From: John Ericson Date: Thu, 18 Jan 2024 11:06:23 -0500 Subject: [PATCH] Test subdocument creation and rendering --- api_test/main.c | 59 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) diff --git a/api_test/main.c b/api_test/main.c index 899d586f2..97caf744d 100644 --- a/api_test/main.c +++ b/api_test/main.c @@ -912,6 +912,64 @@ static void test_feed_across_line_ending(test_batch_runner *runner) { cmark_node_free(document); } +static void sub_document(test_batch_runner *runner) { + cmark_node *doc = cmark_node_new(CMARK_NODE_NO_OP); + cmark_node *list = cmark_node_new(CMARK_NODE_LIST); + OK(runner, cmark_node_append_child(doc, list), "list"); + + { + static const char markdown[] = + "Hello “ \n"; + cmark_node *item = cmark_node_new(CMARK_NODE_ITEM); + OK(runner, cmark_node_append_child(list, item), "item0"); + cmark_node *sub_doc = cmark_parse_document(markdown, sizeof(markdown) - 1, CMARK_OPT_DEFAULT); + OK(runner, cmark_node_append_child(item, sub_doc), "append0"); + } + + { + static const char markdown[] = + "Bye “ \n"; + cmark_node *item = cmark_node_new(CMARK_NODE_ITEM); + OK(runner, cmark_node_append_child(list, item), "item1"); + cmark_node *sub_doc = cmark_parse_document(markdown, sizeof(markdown) - 1, CMARK_OPT_DEFAULT); + OK(runner, cmark_node_append_child(item, sub_doc), "append1"); + } + + char *xml = cmark_render_xml(doc, CMARK_OPT_DEFAULT); + STR_EQ(runner, xml, "\n" + "\n" + "\n" + " \n" + " \n" + " \n" + " Hello “ \n" + " \n" + " http://www.google.com\n" + " \n" + " \n" + " \n" + " \n" + " \n" + " Bye “ \n" + " \n" + " http://www.geocities.com\n" + " \n" + " \n" + " \n" + " \n" + "\n", + "nested document XML is as expected"); + free(xml); + + char *cmark = cmark_render_commonmark(doc, CMARK_OPT_DEFAULT, 0); + STR_EQ(runner, cmark, " - Hello “ \n" + "\n" + " - Bye “ \n", + "nested document CommonMark is as expected"); + + cmark_node_free(doc); +} + static void source_pos(test_batch_runner *runner) { static const char markdown[] = "# Hi *there*.\n" @@ -1094,6 +1152,7 @@ int main(void) { test_cplusplus(runner); test_safe(runner); test_feed_across_line_ending(runner); + sub_document(runner); source_pos(runner); source_pos_inlines(runner); ref_source_pos(runner);