#include "test.h" #include "parser.h" #include static void test_parser_module_name(void) { TokenStream* ts = tokenstream_open("test.c", "module my_module;"); Module* m = parser_parse(ts); assert_not_null(m, "expected module to be parsed"); assert_str("my_module", m->name, "expected name 'my_module'"); parser_free(m); tokenstream_close(ts); } static void test_parser_bad_module_name(void) { TokenStream* ts = tokenstream_open("test.c", "import other_module;"); Module* m = parser_parse(ts); assert_log_file("v0/tests/bad_module_name.txt", "expected error to be logged for bad module name"); parser_free(m); tokenstream_close(ts); } static void test_parser_missing_semicolon_module(void) { TokenStream* ts = tokenstream_open("test.c", "module my_module"); Module* m = parser_parse(ts); assert_log_file("v0/tests/missing_semicolon_module.txt", "expected error for missing semicolon"); parser_free(m); tokenstream_close(ts); } static void test_parser_missing_semicolon_import(void) { TokenStream* ts = tokenstream_open("test.c", "module my_module; import other_module"); Module* m = parser_parse(ts); assert_log_file("v0/tests/missing_semicolon_import.txt", "expected error for missing semicolon"); parser_free(m); tokenstream_close(ts); } static void test_parser_bad_import_name(void) { TokenStream* ts = tokenstream_open("test.c", "module my_module; import ;"); Module* m = parser_parse(ts); assert_log_file("v0/tests/bad_import_name.txt", "expected error for bad import name"); parser_free(m); tokenstream_close(ts); } static void test_parser_imports(void) { TokenStream* ts = tokenstream_open("test.c", "module my_module; import other_module;"); Module* m = parser_parse(ts); assert_not_null(m, "expected module to be parsed"); assert_str("my_module", m->name, "expected name 'my_module'"); assert_not_null(m->imports, "expected imports to be parsed"); assert_int(1, m->import_count, "expected one import"); assert_str("other_module", m->imports[0].module_name, "expected import name 'other_module'"); parser_free(m); tokenstream_close(ts); }