Added valgrind op to tests. Added recursive test.

This commit is contained in:
= 2020-05-15 04:50:53 +01:00
parent 8a45444c52
commit 45cbf51f50
2 changed files with 23 additions and 3 deletions

View File

@ -1,6 +1,9 @@
all: all:
gcc -g -O0 -o pebblisp -D STANDALONE pebblisp.c tokens.c object.c env.c && ./tests.sh gcc -g -O0 -o pebblisp -D STANDALONE pebblisp.c tokens.c object.c env.c && ./tests.sh
val:
gcc -g -O0 -o pebblisp -D STANDALONE pebblisp.c tokens.c object.c env.c && ./tests.sh -val
debug: debug:
gcc -g -O0 -o pebblisp -D STANDALONE -D DEBUG pebblisp.c tokens.c object.c env.c && ./tests.sh gcc -g -O0 -o pebblisp -D STANDALONE -D DEBUG pebblisp.c tokens.c object.c env.c && ./tests.sh

View File

@ -1,6 +1,11 @@
#!/bin/bash #!/bin/bash
PASSES=0 PASSES=0
FAILS=0 FAILS=0
VALGRIND=0
if [ "$1" == "-val" ]; then
VALGRIND=1
fi
pass() { pass() {
echo "$1 test PASSED" echo "$1 test PASSED"
@ -13,7 +18,13 @@ fail() {
} }
check() { check() {
local output
if (($VALGRIND == 1)); then
local output=$(valgrind --leak-check=full ./pebblisp "$2")
else
local output=$(./pebblisp "$2") local output=$(./pebblisp "$2")
fi
if [ "$output" == "$3" ]; then if [ "$output" == "$3" ]; then
pass $1 pass $1
else else
@ -22,7 +33,8 @@ check() {
fi fi
} }
check "PlainRet" "5" "5" check "PlainRet" "10" "10"
check "StrRetrn" "\"hey\"" "hey"
echo "" echo ""
check "Addition" "(+ 1093 102852)" "103945" check "Addition" "(+ 1093 102852)" "103945"
check "Multiply" "(*1000 10000)" "10000000" check "Multiply" "(*1000 10000)" "10000000"
@ -57,7 +69,12 @@ check "DemoFunc" "(spent 68)" "Tip: \$13.60"
echo "" echo ""
check "MultStmt" "(def yee (fn (a) (* 10 a))) (yee 5)" "50" check "MultStmt" "(def yee (fn (a) (* 10 a))) (yee 5)" "50"
check "DefinMap" "(def yee (fn (a) (* 10 a))) (map yee (5 10 2 (+ 12 0)))" "( 50 100 20 120 )" check "DefinMap" "(def yee (fn (a) (* 10 a))) (map yee (5 10 2 (+ 12 0)))" "( 50 100 20 120 )"
check "FbnciSeq" "(def fib (fn (a) \
(if (< a 2) \
a \
(+ (fib (- a 1)) (fib (- a 2))) \
))) \
(fib 20)" "6765"
echo "" echo ""
if [ "$FAILS" -ne "0" ]; then if [ "$FAILS" -ne "0" ]; then