Files
c2/v0/test_parser.c
T

70 lines
2.1 KiB
C

#include "test.h"
#include "parser.h"
#include <string.h>
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);
}