undar-lang/tests

39 lines
915 B
Bash
Executable File

#!/bin/sh
GREEN='\033[32m'
RED='\033[31m'
RESET='\033[0m'
trim() {
printf '%s' "$1" | tr -d '\000-\037\177'
}
tests() {
name=$1; shift
expected=$1; shift
out=$("$@" 2>&1)
code=$?
out=$(trim "$out")
if [ $code -ne 0 ] || [ "$out" != "$expected" ]; then
printf "$RED FAIL$RESET %s:\n" "$name"
printf ' expected: %s\n got: %s\n' "$expected" "$out"
return 1
else
printf "$GREEN PASS$RESET %s: %s\n" "$name" "$expected"
return 0
fi
}
tests "add.ul" "2" ./cli ./test/add.ul
tests "local.ul" "90" ./cli ./test/local.ul
tests "global.ul" "90" ./cli ./test/global.ul
tests "hello.ul" "nuqneH 'u'?" ./cli ./test/hello.ul
tests "bang.ul" "flag is false" ./cli ./test/bang.ul
tests "if.ul" "x is 20" ./cli ./test/if.ul
tests "while.ul" "0123456789" ./cli ./test/while.ul
tests "fib.ul" "28657" ./cli ./test/fib.ul
tests "attack.ul" "102 damage inflicted!" ./cli ./test/attack.ul