From 32be14c39f67eedf356adc4f673b66479b717c7c Mon Sep 17 00:00:00 2001 From: Nick Wellnhofer Date: Thu, 20 Nov 2014 15:17:33 +0100 Subject: Set defaults for new headers and lists --- api_test/main.c | 35 +++++++++++++++++++++++++++++++++++ src/node.c | 19 +++++++++++++++++++ 2 files changed, 54 insertions(+) diff --git a/api_test/main.c b/api_test/main.c index e17beda..933a4bd 100644 --- a/api_test/main.c +++ b/api_test/main.c @@ -36,6 +36,40 @@ static void test_content(test_batch_runner *runner, cmark_node_type type, int allowed_content); +static void +constructor(test_batch_runner *runner) +{ + for (int i = 0; i < num_node_types; ++i) { + cmark_node_type type = node_types[i]; + cmark_node *node = cmark_node_new(type); + OK(runner, node != NULL, "new type %d", type); + + switch (node->type) { + case CMARK_NODE_ATX_HEADER: + case CMARK_NODE_SETEXT_HEADER: + INT_EQ(runner, cmark_node_get_header_level(node), 1, + "default header level is 1"); + node->as.header.level = 1; + break; + + case CMARK_NODE_LIST: + INT_EQ(runner, cmark_node_get_list_type(node), + CMARK_BULLET_LIST, + "default is list type is bullet"); + INT_EQ(runner, cmark_node_get_list_start(node), 1, + "default is list start is 1"); + INT_EQ(runner, cmark_node_get_list_tight(node), 0, + "default is list is loose"); + break; + + default: + break; + } + + cmark_node_destroy(node); + } +} + static void accessors(test_batch_runner *runner) { @@ -398,6 +432,7 @@ int main() { int retval; test_batch_runner *runner = test_batch_runner_new(); + constructor(runner); accessors(runner); create_tree(runner); hierarchy(runner); diff --git a/src/node.c b/src/node.c index 4317dd4..bb9cacc 100644 --- a/src/node.c +++ b/src/node.c @@ -11,6 +11,25 @@ cmark_node* cmark_node_new(cmark_node_type type) { cmark_node *node = (cmark_node *)calloc(1, sizeof(*node)); node->type = type; + + switch (node->type) { + case CMARK_NODE_ATX_HEADER: + case CMARK_NODE_SETEXT_HEADER: + node->as.header.level = 1; + break; + + case CMARK_NODE_LIST: { + cmark_list *list = &node->as.list; + list->list_type = CMARK_BULLET_LIST; + list->start = 1; + list->tight = false; + break; + } + + default: + break; + } + return node; } -- cgit v1.2.3