#!/bin/bash PASSES=0 FAILS=0 pass() { echo "$1 test PASSED" ((PASSES++)) } fail() { echo "$1 test FAILED" ((FAILS++)) } check() { local output=$(./pebblisp "$2") if [ "$output" == "$3" ]; then pass $1 else fail $1 echo " Expected '$3' but received '$output'" fi } check "PlainRet" "5" "5" echo "" check "Addition" "(+ 1093 102852)" "103945" check "Multiply" "(*1000 10000)" "10000000" 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 "" 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" 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 "" if [ "$FAILS" -ne "0" ]; then echo "$FAILS Tests Failed" else echo "$FAILS Tests Failed" fi echo "$PASSES Tests Passed"