MCPcopy Create free account
hub / github.com/commonmark/cmark / create_tree

Function create_tree

api_test/main.c:348–420  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

346}
347
348static void create_tree(test_batch_runner *runner) {
349 char *html;
350 cmark_node *doc = cmark_node_new(CMARK_NODE_DOCUMENT);
351
352 cmark_node *p = cmark_node_new(CMARK_NODE_PARAGRAPH);
353 OK(runner, !cmark_node_insert_before(doc, p), "insert before root fails");
354 OK(runner, !cmark_node_insert_after(doc, p), "insert after root fails");
355 OK(runner, cmark_node_append_child(doc, p), "append1");
356 INT_EQ(runner, cmark_node_check(doc, NULL), 0, "append1 consistent");
357 OK(runner, cmark_node_parent(p) == doc, "node_parent");
358
359 cmark_node *emph = cmark_node_new(CMARK_NODE_EMPH);
360 OK(runner, cmark_node_prepend_child(p, emph), "prepend1");
361 INT_EQ(runner, cmark_node_check(doc, NULL), 0, "prepend1 consistent");
362
363 cmark_node *str1 = cmark_node_new(CMARK_NODE_TEXT);
364 cmark_node_set_literal(str1, "Hello, ");
365 OK(runner, cmark_node_prepend_child(p, str1), "prepend2");
366 INT_EQ(runner, cmark_node_check(doc, NULL), 0, "prepend2 consistent");
367
368 cmark_node *str3 = cmark_node_new(CMARK_NODE_TEXT);
369 cmark_node_set_literal(str3, "!");
370 OK(runner, cmark_node_append_child(p, str3), "append2");
371 INT_EQ(runner, cmark_node_check(doc, NULL), 0, "append2 consistent");
372
373 cmark_node *str2 = cmark_node_new(CMARK_NODE_TEXT);
374 cmark_node_set_literal(str2, "world");
375 OK(runner, cmark_node_append_child(emph, str2), "append3");
376 INT_EQ(runner, cmark_node_check(doc, NULL), 0, "append3 consistent");
377
378 html = cmark_render_html(doc, CMARK_OPT_DEFAULT);
379 STR_EQ(runner, html, "<p>Hello, <em>world</em>!</p>\n", "render_html");
380 free(html);
381
382 OK(runner, cmark_node_insert_before(str1, str3), "ins before1");
383 INT_EQ(runner, cmark_node_check(doc, NULL), 0, "ins before1 consistent");
384 // 31e
385 OK(runner, cmark_node_first_child(p) == str3, "ins before1 works");
386
387 OK(runner, cmark_node_insert_before(str1, emph), "ins before2");
388 INT_EQ(runner, cmark_node_check(doc, NULL), 0, "ins before2 consistent");
389 // 3e1
390 OK(runner, cmark_node_last_child(p) == str1, "ins before2 works");
391
392 OK(runner, cmark_node_insert_after(str1, str3), "ins after1");
393 INT_EQ(runner, cmark_node_check(doc, NULL), 0, "ins after1 consistent");
394 // e13
395 OK(runner, cmark_node_next(str1) == str3, "ins after1 works");
396
397 OK(runner, cmark_node_insert_after(str1, emph), "ins after2");
398 INT_EQ(runner, cmark_node_check(doc, NULL), 0, "ins after2 consistent");
399 // 1e3
400 OK(runner, cmark_node_previous(emph) == str1, "ins after2 works");
401
402 cmark_node *str4 = cmark_node_new(CMARK_NODE_TEXT);
403 cmark_node_set_literal(str4, "brzz");
404 OK(runner, cmark_node_replace(str1, str4), "replace");
405 // The replaced node is not freed

Callers 1

mainFunction · 0.85

Calls 15

cmark_node_newFunction · 0.85
OKFunction · 0.85
cmark_node_insert_beforeFunction · 0.85
cmark_node_insert_afterFunction · 0.85
cmark_node_append_childFunction · 0.85
INT_EQFunction · 0.85
cmark_node_checkFunction · 0.85
cmark_node_parentFunction · 0.85
cmark_node_prepend_childFunction · 0.85
cmark_node_set_literalFunction · 0.85
cmark_render_htmlFunction · 0.85
STR_EQFunction · 0.85

Tested by

no test coverage detected