aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/test_as_analyzer.c5
-rw-r--r--tests/test_as_parser.c8
-rw-r--r--tests/test_as_tokenizer.c14
3 files changed, 22 insertions, 5 deletions
diff --git a/tests/test_as_analyzer.c b/tests/test_as_analyzer.c
index 1b6abbd..993860a 100644
--- a/tests/test_as_analyzer.c
+++ b/tests/test_as_analyzer.c
@@ -18,12 +18,15 @@ char *input_buffer =
"end: eq\n";
int main(int argc, char** argv) {
+ struct result result;
printf("[TEST] assembler analyzer\n");
// make a memory buffer to FILE*
FILE *fp = fmemopen(input_buffer, strlen(input_buffer), "r");
struct allocator * alct = new_allocator();
struct token_stream * ts = new_token_stream(alct, fp);
- struct prog * prog = parse_prog(alct, ts);
+ result = parse_prog(alct, ts);
+ assert(result.errmsg == NULL);
+ struct prog* prog = result.value;
struct sym_table sym_table = analyze_prog(alct, prog);
assert(strcmp(sym_table.buf[0].name, "start") == 0);
diff --git a/tests/test_as_parser.c b/tests/test_as_parser.c
index 01ba413..096031f 100644
--- a/tests/test_as_parser.c
+++ b/tests/test_as_parser.c
@@ -14,12 +14,18 @@ char *input_buffer =
"end: eq\n";
int main(int argc, char** argv) {
+ struct result result;
printf("[TEST] assembler parser\n");
// make a memory buffer to FILE*
FILE *fp = fmemopen(input_buffer, strlen(input_buffer), "r");
struct allocator * alct = new_allocator();
struct token_stream * ts = new_token_stream(alct, fp);
- struct prog * prog = parse_prog(alct, ts);
+ result = parse_prog(alct, ts);
+ if (result.errmsg != NULL) {
+ printf("error: %s\n", result.errmsg);
+ }
+ assert(result.errmsg == NULL);
+ struct prog* prog = result.value;
// compare output
struct stmt * * stmts = prog->stmts->stmts;
diff --git a/tests/test_as_tokenizer.c b/tests/test_as_tokenizer.c
index 7d82099..995c764 100644
--- a/tests/test_as_tokenizer.c
+++ b/tests/test_as_tokenizer.c
@@ -26,7 +26,8 @@ char *expected_output =
"OP: div, line: 4, col: 5\n"
"NEWLINE\n"
"OP: eq, line: 5, col: 5\n"
- "NEWLINE\n";
+ "NEWLINE\n"
+ "ENDOFFILE\n";
int main(int argc, char** argv) {
printf("[TEST] assembler tokenizer\n");
@@ -40,8 +41,15 @@ int main(int argc, char** argv) {
FILE *out = fmemopen(output_buffer, 10240, "w");
FILE *origin_stdout = stdout;
stdout = out;
- while (peek_token(alct, ts)->type != TK_ENDOFFILE) {
- print_token(peek_token(alct, ts));
+ struct token* token;
+ struct result result;
+ while (1) {
+ result = peek_token(alct, ts);
+ assert(result.errmsg == NULL);
+ assert(result.value != NULL);
+ token = result.value;
+ print_token(token);
+ if (token->type == TK_ENDOFFILE) break;
next_token(alct, ts);
}
fclose(out);