From 547643d357aadfcb402ec9b951e23975da8593cc Mon Sep 17 00:00:00 2001 From: Carlos Maniero Date: Tue, 18 Apr 2023 21:19:32 -0300 Subject: tests: Include parser_parse_function test Signed-off-by: Carlos Maniero Reviewed-by: Johnny Richard --- test/parser_test.c | 68 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 test/parser_test.c (limited to 'test/parser_test.c') diff --git a/test/parser_test.c b/test/parser_test.c new file mode 100644 index 0000000..b75f69f --- /dev/null +++ b/test/parser_test.c @@ -0,0 +1,68 @@ +/* +* Copyright (C) 2023 Carlos Maniero +* +* This program is free software: you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program. If not, see . +*/ +#define MUNIT_ENABLE_ASSERT_ALIASES +#include "munit.h" +#include "lexer.h" +#include "parser.h" +#include "ast.h" + +void +make_lexer_from_static_src(lexer_t *lexer, char *src) +{ + lexer->srclen = 0; + lexer->cur = 0; + lexer->row = 0; + lexer->bol = 0; + lexer->src = src; + lexer->srclen = strlen(src); +} + +static MunitResult +test_parse_function(const MunitParameter params[], + void *user_data_or_fixture) +{ + parser_t parser; + lexer_t lexer; + + make_lexer_from_static_src(&lexer, "main(): i32 { return 42; }"); + parser_init(&parser, &lexer); + ast_function_t ast_function = parser_parse_function(&parser); + + char actual[5]; + + string_view_to_str(&ast_function.name, actual); + assert_string_equal("main", actual); + assert_int(42, ==, ast_function.body.number); + + return MUNIT_OK; +} + +static MunitTest tests[] = { + { "/test_parse_function", test_parse_function, NULL, NULL, MUNIT_TEST_OPTION_NONE, NULL }, + { NULL, NULL, NULL, NULL, MUNIT_TEST_OPTION_NONE, NULL } +}; + +static const MunitSuite suite = { + "/lexer_test", tests, NULL, 1, MUNIT_SUITE_OPTION_NONE +}; + +int +main(int argc, char *argv[]) +{ + return munit_suite_main(&suite, NULL, argc, argv); + return EXIT_SUCCESS; +} -- cgit v1.2.3