39 lines
915 B
Bash
Executable File
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
|