#include "test.h" #include "mrk/lexer.h" #include "mrk/parser.h" #define LEXER_INIT() \ mrk_lexer *lxr; \ TEST_CHECK(mrk_lexer_init(&lxr) == mrk_err_ok) #define PARSER_INIT() \ mrk_parser *psr; \ TEST_CHECK(mrk_parser_init(&psr) == mrk_err_ok) #define PARSER_OPEN(buf) \ mrk_lexer *lxr; \ TEST_CHECK(mrk_lexer_init(&lxr) == mrk_err_ok); \ mrk_parser *psr; \ TEST_CHECK(mrk_parser_init(&psr) == mrk_err_ok); \ mrk_lexer_open(lxr, buf, 0); \ mrk_parser_open(psr, lxr) void test_parse_header() { const char *buf = "### hello world"; PARSER_OPEN(buf); mrk_ast_node *root; TEST_CHECK(mrk_parser_parse(&root, psr) == mrk_err_ok); mrk_ast_node *header = root->children.arr[0]; TEST_CHECK(header->type == mrk_ast_node_type_header); TEST_CHECK(header->children.arr[0]->type == mrk_ast_node_type_text); } TEST_LIST = { { "parser header", test_parse_header }, { NULL, NULL } };