|
|
|
@@ -95,6 +95,24 @@ |
|
|
|
} \ |
|
|
|
} \ |
|
|
|
|
|
|
|
#define invoke_test_script(name) \ |
|
|
|
printf("" name ":"); \ |
|
|
|
if (test_file("tests/" name ".slime") == pass) { \ |
|
|
|
for(size_t i = strlen(name); i < 70; ++i) \ |
|
|
|
printf((i%3==1)? "." : " "); \ |
|
|
|
printf("%spassed%s\n", console_green, console_normal); \ |
|
|
|
} \ |
|
|
|
else { \ |
|
|
|
result = false; \ |
|
|
|
for(int i = -1; i < 70; ++i) \ |
|
|
|
printf((i%3==1)? "." : " "); \ |
|
|
|
printf("%sfailed%s\n", console_red, console_normal); \ |
|
|
|
if(error) { \ |
|
|
|
free(error); \ |
|
|
|
error = nullptr; \ |
|
|
|
} \ |
|
|
|
} |
|
|
|
|
|
|
|
proc test_eval_operands() -> testresult { |
|
|
|
char operands_string[] = "((eval 1) (+ 1 2) \"okay\" (eval :haha))"; |
|
|
|
Lisp_Object* operands = Parser::parse_single_expression(operands_string); |
|
|
|
@@ -460,26 +478,14 @@ proc test_singular_t_and_nil() -> testresult { |
|
|
|
return pass; |
|
|
|
} |
|
|
|
|
|
|
|
proc test_class_macro() -> testresult { |
|
|
|
proc test_file(char* file) -> testresult { |
|
|
|
Memory::reset(); |
|
|
|
Environment* env = Memory::create_built_ins_environment(); |
|
|
|
Parser::init(env); |
|
|
|
|
|
|
|
built_in_load(Memory::create_string("pre.slime"), env); |
|
|
|
Lisp_Object* result = built_in_load(Memory::create_string("tests/class_macro.slime"), env); |
|
|
|
|
|
|
|
assert_no_error(); |
|
|
|
|
|
|
|
return pass; |
|
|
|
} |
|
|
|
|
|
|
|
proc test_lexical_scope() -> testresult { |
|
|
|
Memory::reset(); |
|
|
|
Environment* env = Memory::create_built_ins_environment(); |
|
|
|
Parser::init(env); |
|
|
|
|
|
|
|
built_in_load(Memory::create_string("pre.slime"), env); |
|
|
|
Lisp_Object* result = built_in_load(Memory::create_string("tests/lexical_scope.slime"), env); |
|
|
|
Lisp_Object* result = built_in_load(Memory::create_string(file), env); |
|
|
|
|
|
|
|
assert_no_error(); |
|
|
|
return pass; |
|
|
|
@@ -521,8 +527,9 @@ proc run_all_tests() -> bool { |
|
|
|
printf("\n-- Macros --\n"); |
|
|
|
|
|
|
|
printf("\n-- Test Files --\n"); |
|
|
|
invoke_test(test_class_macro); |
|
|
|
invoke_test(test_lexical_scope); |
|
|
|
|
|
|
|
invoke_test_script("lexical_scope"); |
|
|
|
invoke_test_script("class_macro"); |
|
|
|
|
|
|
|
return result; |
|
|
|
} |
|
|
|
|