import string:* import io:* import os:* fun error(message: *char) { println("ERROR:") println(message) } fun main(argc: int, argv: **char): int { var kraken_path = string("../kraken") var all_results = string() var num_passed = 0 var all_results_interp = string() var num_passed_interp = 0 var name_length = 0 // first iterate and get the length of the longest line for (var i = 1; i < argc; i++;) { var name = string(argv[i]) if (name.length() > name_length) name_length = name.length() } var pad_with_spaces = fun(name: string): string { while (name.length() < name_length) name += " " return name } for (var i = 1; i < argc; i++;) { var test_name = string(argv[i]) println(string("Doing test for ") + test_name) var results_file_name = test_name + ".results" var expected_results_file_name = test_name + ".expected_results" if (system(kraken_path + " " + test_name + ".krak > " + results_file_name)) error("could not compile") if (system(string("./") + test_name + " >> " + results_file_name)) error("could not run") if (file_exists(results_file_name) && file_exists(expected_results_file_name) && read_file(results_file_name) == read_file(expected_results_file_name)) { println(test_name + "\tPASSED!") all_results += pad_with_spaces(test_name) + "\tPASSED!\n" num_passed++ system(string("rm ./") + results_file_name) } else { println(test_name + "\tFAILED!") all_results += pad_with_spaces(test_name) + "\tFAILED!!!\n" } results_file_name += ".interp" if (system(kraken_path + " -i " + test_name + ".krak > " + results_file_name)) error("could not interpret") if (file_exists(results_file_name) && file_exists(expected_results_file_name) && read_file(results_file_name) == read_file(expected_results_file_name)) { println(test_name + "interp\tPASSED!") all_results_interp += pad_with_spaces(test_name+"_interp") + "\tPASSED!\n" num_passed_interp++ system(string("rm ./") + results_file_name) } else { println(test_name + "_interp\tFAILED!") all_results_interp += pad_with_spaces(test_name + "_interp") + "\tFAILED!!!\n" } system(string("rm ./") + test_name + ".krak.*") system(string("rm ./") + test_name) } println(string("\n\nTEST RESULTS: ") + num_passed + "/" + (argc-1)) println(all_results) println(string("TEST RESULTS: ") + num_passed + "/" + (argc-1)) println(string("\n\nTEST RESULTS INERPRETED: ") + num_passed_interp + "/" + (argc-1)) println(all_results_interp) println(string("TEST RESULTS: ") + num_passed_interp + "/" + (argc-1)) return 0 }