pebblisp/src/tests.sh

87 lines
2.4 KiB
Bash
Raw Normal View History

2020-05-09 14:58:28 -04:00
#!/bin/bash
PASSES=0
FAILS=0
VALGRIND=0
if [ "$1" == "-val" ]; then
VALGRIND=1
fi
2020-05-09 14:58:28 -04:00
pass() {
echo "$1 test PASSED"
2020-05-09 14:58:28 -04:00
((PASSES++))
}
fail() {
echo "$1 test FAILED"
2020-05-09 14:58:28 -04:00
((FAILS++))
}
check() {
local output
if (($VALGRIND == 1)); then
local output=$(valgrind --leak-check=full ./pebblisp "$2")
else
local output=$(./pebblisp "$2")
fi
2020-05-09 14:58:28 -04:00
if [ "$output" == "$3" ]; then
pass $1
else
fail $1
echo " Expected '$3' but received '$output'"
2020-05-09 14:58:28 -04:00
fi
}
check "PlainRet" "10" "10"
check "StrRetrn" "\"hey\"" "hey"
echo ""
2020-05-09 14:58:28 -04:00
check "Addition" "(+ 1093 102852)" "103945"
check "Multiply" "(*1000 10000)" "10000000"
2020-05-09 14:58:28 -04:00
check "Division" "(/ 6418425 65)" "98745"
echo ""
check "ChainAdd" "(+ 3917 17304 1293844 400 100000)" "1415465"
check "ChainMul" "(* 8263 23 123)" "23376027"
check "ChainDiv" "(/ 1493856 741 96 7)" "3"
echo ""
check "ListAddi" "(+ 5 (1 2 3 (+ 10 10)))" "( 6 7 8 25 )"
check "ListModu" "(% 5 (1 2 3 (* 11 11)))" "( 1 2 3 1 )"
check "ListsMul" "(* (10 20 30) (1 20 300))" "( 10 400 9000 )"
echo ""
2020-05-09 14:58:28 -04:00
check "GratrThn" "(> 23847123 19375933)" "T"
check "LessThan" "(< 23847123 19375933)" "F"
check "Equality" "(= 987654321 987654321 )" "T"
echo ""
check "IfReturn" "(if (T) 123456789 987654321)" "123456789"
check "IfRetTwo" "(if F 123456789 987654321)" "987654321"
check "EmptyCnd" "(if () T F)" "F"
# check "EtyLstLt" "(if (()) T F)" "T"
2020-05-09 14:58:28 -04:00
echo ""
check "RegLists" "(1 2 3 4 5)" "( 1 2 3 4 5 )"
check "EmptyLst" "()" "( )"
check "EmptLst2" "( )" "( )"
echo ""
check "DenseSpc" "(+1093 102852)" "103945"
check "WideSpac" "( + 1093 102852 )" "103945"
check "VWidwSpc" " ( + 1093 102852 ) " "103945"
echo ""
check "DemoFunc" "(spent 68)" "Tip: \$13.60"
echo ""
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 "FbnciSeq" "(def fib (fn (a) \
(if (< a 2) \
a \
(+ (fib (- a 1)) (fib (- a 2))) \
))) \
(fib 20)" "6765"
2020-05-09 14:58:28 -04:00
echo ""
if [ "$FAILS" -ne "0" ]; then
echo "$FAILS Tests Failed"
else
echo "$FAILS Tests Failed"
fi
echo "$PASSES Tests Passed"