Add x64 emitter tests
This commit is contained in:
@@ -32,3 +32,21 @@ void emit_program(FILE *file, Ast *n) {
|
||||
emit_expr(file, n);
|
||||
fprintf(file, " ret\n");
|
||||
}
|
||||
|
||||
void emit_expr_test(char *expr, int value) {
|
||||
Token_Array tokens = lex_file("expr", expr, strlen(expr));
|
||||
Parser parser = {tokens.data, tokens.data + tokens.len};
|
||||
Ast *ast = parse_expr(&parser, 0);
|
||||
FILE *file = fopen("out.s", "w");
|
||||
emit_program(file, ast);
|
||||
fclose(file);
|
||||
int result = system("clang out.s -o out");
|
||||
assert(result == 0);
|
||||
result = system("./out");
|
||||
assert(WEXITSTATUS(result) == value);
|
||||
}
|
||||
|
||||
void emit_x64_test(void) {
|
||||
emit_expr_test("10+5*2-10", 10+5*2-10);
|
||||
printf("x64 tests passed\n");
|
||||
}
|
||||
Reference in New Issue
Block a user