diff --git a/CMakeLists.txt b/CMakeLists.txt index b6e4f9c..5b94b9f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -95,49 +95,41 @@ add_custom_target(run # ------------------------------------------ # Test targets -add_custom_target(test0 - COMMAND ../vendor/mal/runtest.py --deferrable --optional ../tests/step0_repl.mal -- ./${PROJECT}) -add_dependencies(test0 ${PROJECT}) - -add_custom_target(test1 - COMMAND ../vendor/mal/runtest.py --deferrable --optional ../tests/step1_read_print.mal -- ./${PROJECT}) -add_dependencies(test1 ${PROJECT}) - -add_custom_target(test2 - COMMAND ../vendor/mal/runtest.py --deferrable --optional ../tests/step2_eval.mal -- ./${PROJECT}) -add_dependencies(test2 ${PROJECT}) - -add_custom_target(test3 - COMMAND ../vendor/mal/runtest.py --deferrable --optional ../tests/step3_env.mal -- ./${PROJECT}) -add_dependencies(test3 ${PROJECT}) - -add_custom_target(test4 - COMMAND ../vendor/mal/runtest.py --deferrable --optional ../tests/step4_if_fn_do.mal -- ./${PROJECT}) -add_dependencies(test4 ${PROJECT}) - -add_custom_target(test5 - COMMAND ../vendor/mal/runtest.py --deferrable --optional ../tests/step5_tco.mal -- ./${PROJECT}) -add_dependencies(test5 ${PROJECT}) - -add_custom_target(test6 - COMMAND ../vendor/mal/runtest.py --deferrable --optional ../tests/step6_file.mal -- ./${PROJECT}) -add_dependencies(test6 ${PROJECT}) - -add_custom_target(test7 - COMMAND ../vendor/mal/runtest.py --deferrable --optional ../tests/step7_quote.mal -- ./${PROJECT}) -add_dependencies(test7 ${PROJECT}) - -add_custom_target(test8 - COMMAND ../vendor/mal/runtest.py --deferrable --optional ../tests/step8_macros.mal -- ./${PROJECT}) -add_dependencies(test8 ${PROJECT}) +function(make_test_target target_name step_name) + add_custom_target(${target_name} + COMMAND ../vendor/mal/runtest.py --deferrable --optional ../tests/${step_name}.mal -- ./${step_name}) + add_dependencies(${target_name} ${step_name}) +endfunction() -add_custom_target(test9 - COMMAND ../vendor/mal/runtest.py --deferrable --optional ../tests/step9_try.mal -- ./${PROJECT}) -add_dependencies(test9 ${PROJECT}) +make_test_target("test0" "step0_repl") +make_test_target("test1" "step1_read_print") +make_test_target("test2" "step2_eval") +make_test_target("test3" "step3_env") +make_test_target("test4" "step4_if_fn_do") +make_test_target("test5" "step5_tco") +make_test_target("test6" "step6_file") +make_test_target("test7" "step7_quote") +make_test_target("test8" "step8_macros") +make_test_target("test9" "step9_try") +make_test_target("testA" "stepA_mal") + +function(make_host_test_target target_name step_name) + add_custom_target(${target_name} + COMMAND ../vendor/mal/runtest.py --deferrable --optional ../tests/${step_name}.mal -- ./${PROJECT} ../mal/${step_name}.mal) + add_dependencies(${target_name} ${PROJECT}) +endfunction() -add_custom_target(testA - COMMAND ../vendor/mal/runtest.py --deferrable --optional ../tests/stepA_mal.mal -- ./${PROJECT}) -add_dependencies(testA ${PROJECT}) +make_host_test_target("host_test0" "step0_repl") +make_host_test_target("host_test1" "step1_read_print") +make_host_test_target("host_test2" "step2_eval") +make_host_test_target("host_test3" "step3_env") +make_host_test_target("host_test4" "step4_if_fn_do") +# make_host_test_target("host_test5" "step5_tco") # disabled +make_host_test_target("host_test6" "step6_file") +make_host_test_target("host_test7" "step7_quote") +make_host_test_target("host_test8" "step8_macros") +make_host_test_target("host_test9" "step9_try") +make_host_test_target("host_testA" "stepA_mal") add_custom_target(perf COMMAND ./${PROJECT} ../tests/perf1.mal diff --git a/src/eval.cpp b/src/eval.cpp index 4081590..e67c22d 100644 --- a/src/eval.cpp +++ b/src/eval.cpp @@ -231,7 +231,7 @@ ValuePtr Eval::macroExpand(ValuePtr ast, EnvironmentPtr env) return ast; } -//----------------------------------------- +// ----------------------------------------- ValuePtr Eval::apply(std::shared_ptr evaluated_list) { diff --git a/src/stepA_mal.cpp b/src/stepA_mal.cpp index ee10826..8846cfe 100644 --- a/src/stepA_mal.cpp +++ b/src/stepA_mal.cpp @@ -176,18 +176,3 @@ auto main(int argc, char* argv[]) -> int return 0; } - -// TODO: List of things below -// v Pass stepA tests (implement leftover functions) -// v Make Macro into a subclass of Lambda (?) to simplify some logic -// v Convert std::list -> std::vector, test speed before/after -// v Better way of running mal tests -// - Make Collections/HashMaps const, construct a new one with the added items -// - Basic performance testing macros, enabled in debug builds - -// Iterations to beat: -// Debug: ~5k -// Release: ~30k -// New: -// Debug: ~6k -// Release: ~37k