From f48c3a6cb320c897ca7477af17f8e5eb7447fd72 Mon Sep 17 00:00:00 2001 From: c Date: Sat, 27 Jan 2024 10:32:18 -0500 Subject: Simple parser tests passing :). --- test/parser.c | 66 +++++++++++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 57 insertions(+), 9 deletions(-) (limited to 'test/parser.c') diff --git a/test/parser.c b/test/parser.c index db296e6..2007e93 100644 --- a/test/parser.c +++ b/test/parser.c @@ -14,18 +14,54 @@ void test_simple_empty() { char src[] = " "; + /* + + NULL + + */ + + tree = NULL; + pp = pp_init(src); + pp_run(pp); + + lexer = lexer_init(pp->psrc); + lexer_run(lexer); + + parser = parser_init(lexer->tokenl); + parser_run(parser); + + ASSERT(tree_cmp(parser->tree, tree) == 1); + + token_destroy(lexer->tokenl); + lexer_destroy(lexer); + pp_destroy(pp); + tree_destroy(parser->tree); + parser_destroy(parser); +} + +void test_single_lint() { + tree_t* tree; + pp_t* pp; + lexer_t* lexer; + parser_t* parser; + + char src[] = "1"; + /* [block] val: - NULL + [lint] + val: + 1 nxt: NULL */ tree = tree_init(TREE_TYPE_BLOCK); - tree->data.block.val = NULL; + tree->data.block.val = tree_init(TREE_TYPE_LINT); + tree->data.block.val->data.lint.val = 1; tree->data.block.nxt = NULL; pp = pp_init(src); @@ -39,18 +75,20 @@ void test_simple_empty() { ASSERT(tree_cmp(parser->tree, tree) == 1); + token_destroy(lexer->tokenl); + lexer_destroy(lexer); pp_destroy(pp); + tree_destroy(parser->tree); parser_destroy(parser); - lexer_destroy(lexer); } -void test_single_lint() { +void test_double_lint() { tree_t* tree; pp_t* pp; lexer_t* lexer; parser_t* parser; - char src[] = "1"; + char src[] = "1;1"; /* @@ -60,14 +98,23 @@ void test_single_lint() { val: 1 nxt: - NULL + [block] + val: + [lint] + val: + 1 + nxt: + NULL */ tree = tree_init(TREE_TYPE_BLOCK); - tree->data.block.val = tree_init(TREE_TYPE_LINT); - tree->data.block.val->data.lint.val = 1; - tree->data.block.nxt = NULL; + tree_t* tree0lint = tree->data.block.val = tree_init(TREE_TYPE_LINT); + tree0lint->data.lint.val = 1; + tree_t* tree1block = tree->data.block.nxt = tree_init(TREE_TYPE_BLOCK); + tree_t* tree2lint = tree1block->data.block.val = tree_init(TREE_TYPE_LINT); + tree2lint->data.lint.val = 1; + tree1block->data.block.nxt = NULL; pp = pp_init(src); pp_run(pp); @@ -90,6 +137,7 @@ void test_single_lint() { int main(int argc, char** argv) { test_simple_empty(); test_single_lint(); + test_double_lint(); TEST_REPORT; -- cgit v1.2.3