aboutsummaryrefslogtreecommitdiff
path: root/api_test/main.c
blob: 9f1059f29cf21e81d7953d1a96c5236efe5bfadc (plain)
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include "cmark.h"
  5. #include "node.h"
  6. #include "harness.h"
  7. static void
  8. create_tree(test_batch_runner *runner)
  9. {
  10. char *html;
  11. cmark_node *doc = cmark_node_new(CMARK_NODE_DOCUMENT);
  12. cmark_node *p = cmark_node_new(CMARK_NODE_PARAGRAPH);
  13. OK(runner, cmark_node_append_child(doc, p), "append1");
  14. INT_EQ(runner, cmark_node_check(doc), 0, "append1 consistent");
  15. cmark_node *emph = cmark_node_new(CMARK_NODE_EMPH);
  16. OK(runner, cmark_node_prepend_child(p, emph), "prepend1");
  17. INT_EQ(runner, cmark_node_check(doc), 0, "prepend1 consistent");
  18. cmark_node *str1 = cmark_node_new(CMARK_NODE_STRING);
  19. cmark_node_set_string_content(str1, "Hello, ");
  20. OK(runner, cmark_node_prepend_child(p, str1), "prepend2");
  21. INT_EQ(runner, cmark_node_check(doc), 0, "prepend2 consistent");
  22. cmark_node *str3 = cmark_node_new(CMARK_NODE_STRING);
  23. cmark_node_set_string_content(str3, "!");
  24. OK(runner, cmark_node_append_child(p, str3), "append2");
  25. INT_EQ(runner, cmark_node_check(doc), 0, "append2 consistent");
  26. cmark_node *str2 = cmark_node_new(CMARK_NODE_STRING);
  27. cmark_node_set_string_content(str2, "world");
  28. OK(runner, cmark_node_append_child(emph, str2), "append3");
  29. INT_EQ(runner, cmark_node_check(doc), 0, "append3 consistent");
  30. html = (char *)cmark_render_html(doc);
  31. STR_EQ(runner, html, "<p>Hello, <em>world</em>!</p>\n",
  32. "render_html");
  33. free(html);
  34. OK(runner, cmark_node_insert_before(str1, str3), "ins before1");
  35. INT_EQ(runner, cmark_node_check(doc), 0, "ins before1 consistent");
  36. // 31e
  37. OK(runner, cmark_node_first_child(p) == str3, "ins before1 works");
  38. OK(runner, cmark_node_insert_before(str1, emph), "ins before2");
  39. INT_EQ(runner, cmark_node_check(doc), 0, "ins before2 consistent");
  40. // 3e1
  41. OK(runner, cmark_node_last_child(p) == str1, "ins before2 works");
  42. OK(runner, cmark_node_insert_after(str1, str3), "ins after1");
  43. INT_EQ(runner, cmark_node_check(doc), 0, "ins after1 consistent");
  44. // e13
  45. OK(runner, cmark_node_last_child(p) == str3, "ins after1 works");
  46. OK(runner, cmark_node_insert_after(str1, emph), "ins after2");
  47. INT_EQ(runner, cmark_node_check(doc), 0, "ins after2 consistent");
  48. // 1e3
  49. OK(runner, cmark_node_first_child(p) == str1, "ins after2 works");
  50. html = (char *)cmark_render_html(doc);
  51. STR_EQ(runner, html, "<p>Hello, <em>world</em>!</p>\n",
  52. "render_html after shuffling");
  53. free(html);
  54. cmark_node_destroy(doc);
  55. }
  56. int main() {
  57. int retval;
  58. test_batch_runner *runner = test_batch_runner_new();
  59. create_tree(runner);
  60. test_print_summary(runner);
  61. retval = test_ok(runner) ? 0 : 1;
  62. free(runner);
  63. return retval;
  64. }