diff --git a/.idea/misc.xml b/.idea/misc.xml index bae6c4c..18fd82f 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -4,6 +4,7 @@ + diff --git a/clitests/fib.psil b/clitests/fib.psil new file mode 100644 index 0000000..e8cf54b --- /dev/null +++ b/clitests/fib.psil @@ -0,0 +1,12 @@ +(define (fib n) + (if (> n 0) + (if (> n 1) + (+ (fib (- n 1)) + (fib (- n 2))) + 1) + 0) +) + +(fib 10) +(fib 11) +(fib 12) diff --git a/clitests/fib.psil.ex b/clitests/fib.psil.ex new file mode 100644 index 0000000..375ad47 --- /dev/null +++ b/clitests/fib.psil.ex @@ -0,0 +1,3 @@ +55 +89 +144 \ No newline at end of file diff --git a/clitests/testall.sh b/clitests/testall.sh new file mode 100755 index 0000000..1f136b6 --- /dev/null +++ b/clitests/testall.sh @@ -0,0 +1,31 @@ +#! /bin/bash +cd "$(dirname "$0")" + +FAILED=() + +PSIL="../cmake-build-debug/src/psil" + +for FILE in *.psil; do + echo "TESTING $FILE" + $PSIL -f $FILE --repl- > $FILE.res + if [ $? -ne 0 ]; then + FAILED+=("test-"$FILE) + continue + fi + + diff -w $FILE.res $FILE.ex + + if [ $? -ne 0 ]; then + FAILED+=("test-"$FILE) + continue + fi + + rm $FILE.res +done + +if [ ${#FAILED[@]} -eq 0 ]; then + echo "ALL TESTS PASSED" +else + echo "FAILED: ${FAILED[@]}" + exit -1 +fi \ No newline at end of file diff --git a/src/vm/src/VM.cpp b/src/vm/src/VM.cpp index d76d0c5..33a773b 100644 --- a/src/vm/src/VM.cpp +++ b/src/vm/src/VM.cpp @@ -149,8 +149,8 @@ void VM::step() { Logger::log( "Compiler", [&](std::ostream &out) { - out << "Compiled (" << code << ")\n"; - out << "to\n"; + out << "Compiled (" << code << ")"; + out << " to "; out << "(" << newc << ")"; }, Logger::DEBUG);