aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/test_as_analyzer.c45
-rw-r--r--tests/test_as_parser.c47
-rw-r--r--tests/test_as_tokenizer.c65
3 files changed, 0 insertions, 157 deletions
diff --git a/tests/test_as_analyzer.c b/tests/test_as_analyzer.c
deleted file mode 100644
index 993860a..0000000
--- a/tests/test_as_analyzer.c
+++ /dev/null
@@ -1,45 +0,0 @@
-#include <stdio.h>
-#include <string.h>
-#include <assert.h>
-
-#include "as_tokenizer.h"
-#include "as_parser.h"
-#include "as_analyzer.h"
-#include "utils.h"
-
-char *input_buffer =
- "start:\n"
- " imm 1\n"
- "mid: add\n"
- " call start\n"
- " sub\n"
- ".insec: add\n"
- " div\n"
- "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);
- 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);
- assert(strcmp(sym_table.buf[1].name, "mid") == 0);
- assert(strcmp(sym_table.buf[2].name, "mid.insec") == 0);
- assert(strcmp(sym_table.buf[3].name, "end") == 0);
-
- assert(sym_table.buf[0].offset == 0);
- assert(sym_table.buf[1].offset == 9);
- assert(sym_table.buf[2].offset == 21);
- assert(sym_table.buf[3].offset == 23);
-
- printf("[PASS] assembler analyzer\n");
- delete_allocator(alct);
- return 0;
-}
diff --git a/tests/test_as_parser.c b/tests/test_as_parser.c
deleted file mode 100644
index 62a4b8d..0000000
--- a/tests/test_as_parser.c
+++ /dev/null
@@ -1,47 +0,0 @@
-#include <stdio.h>
-#include <string.h>
-#include <assert.h>
-
-#include "as_tokenizer.h"
-#include "as_parser.h"
-#include "utils.h"
-
-char *input_buffer =
- "start:\n"
- " add 1\n"
- " sub start\n"
- " div\n"
- "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);
- 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;
-
- assert(stmts[0]->instr == NULL);
- assert(strcmp("start", stmts[0]->label->name) == 0);
-
- assert(stmts[1]->label == NULL);
- assert(stmts[1]->instr->op == OP_ADD);
- assert(stmts[1]->instr->arg->ival == 1);
-
- assert(strcmp("end", stmts[4]->label->name) == 0);
- assert(stmts[4]->instr->op == OP_EQ);
-
- printf("[PASS] assembler parser\n");
- fclose(fp);
- delete_allocator(alct);
- return 0;
-}
diff --git a/tests/test_as_tokenizer.c b/tests/test_as_tokenizer.c
deleted file mode 100644
index 995c764..0000000
--- a/tests/test_as_tokenizer.c
+++ /dev/null
@@ -1,65 +0,0 @@
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-#include <assert.h>
-
-#include "as_tokenizer.h"
-#include "utils.h"
-
-char *input_buffer =
- "start:\n"
- " add 1\n"
- " sub start\n"
- " div\n"
- " eq\n";
-
-char *expected_output =
- "LABEL: start, line: 1, col: 1\n"
- "COLON\n"
- "NEWLINE\n"
- "OP: add, line: 2, col: 5\n"
- "ARG: 1, line: 2, col: 10\n"
- "NEWLINE\n"
- "OP: sub, line: 3, col: 5\n"
- "LABEL: start, line: 3, col: 9\n"
- "NEWLINE\n"
- "OP: div, line: 4, col: 5\n"
- "NEWLINE\n"
- "OP: eq, line: 5, col: 5\n"
- "NEWLINE\n"
- "ENDOFFILE\n";
-
-int main(int argc, char** argv) {
- printf("[TEST] assembler tokenizer\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);
-
- char *output_buffer = malloc(10240);
- // redirect stdout to a file
- FILE *out = fmemopen(output_buffer, 10240, "w");
- FILE *origin_stdout = stdout;
- stdout = out;
- 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);
- stdout = origin_stdout;
-
- assert(strcmp(output_buffer, expected_output) == 0);
- printf("[PASS] assembler tokenizer\n");
- free(output_buffer);
- delete_allocator(alct);
- return 0;
-}
-
-