forked from ground/ground
Unit tests
This commit is contained in:
@@ -1,27 +1,15 @@
|
|||||||
set &x 5
|
set &x 5
|
||||||
|
|
||||||
PAUSE
|
|
||||||
|
|
||||||
fun !dingle -function -int &a
|
fun !dingle -function -int &a
|
||||||
|
|
||||||
PAUSE
|
|
||||||
|
|
||||||
fun !capture -int -int &b
|
fun !capture -int -int &b
|
||||||
|
|
||||||
PAUSE
|
|
||||||
|
|
||||||
add $a $b &tmp
|
add $a $b &tmp
|
||||||
add $tmp $x &tmp
|
add $tmp $x &tmp
|
||||||
return $tmp
|
return $tmp
|
||||||
endfun
|
endfun
|
||||||
|
|
||||||
return $capture
|
return $capture
|
||||||
|
|
||||||
endfun
|
endfun
|
||||||
|
|
||||||
|
set &x 10
|
||||||
call !dingle 3 &result
|
call !dingle 3 &result
|
||||||
|
|
||||||
PAUSE
|
|
||||||
|
|
||||||
call !result 5 &y
|
call !result 5 &y
|
||||||
println $y
|
println $y $x
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
set &x "dingus"
|
set &x "dingus"
|
||||||
PAUSE
|
println $x
|
||||||
drop &x
|
drop &x
|
||||||
PAUSE
|
println $x
|
||||||
4
tests/lib.grnd
Normal file
4
tests/lib.grnd
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
fun !lib_PrintHello -int
|
||||||
|
println "Hello"
|
||||||
|
return 0
|
||||||
|
endfun
|
||||||
@@ -1,5 +1,6 @@
|
|||||||
# A cool list
|
# A cool list
|
||||||
setlist &favWords "hello" "there" "general" "kenobi"
|
setlist &favWords "hello" "there" "general"
|
||||||
|
listappend &favWords "kenobi"
|
||||||
println $favWords
|
println $favWords
|
||||||
|
|
||||||
set &count 0
|
set &count 0
|
||||||
|
|||||||
5
tests/log.txt
Normal file
5
tests/log.txt
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
[hello, there, general, hello]
|
||||||
|
hello
|
||||||
|
there
|
||||||
|
general
|
||||||
|
,WV
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
fun !dingle -int
|
|
||||||
|
|
||||||
endfun
|
|
||||||
|
|
||||||
set &x 5
|
|
||||||
set &y "dingle"
|
|
||||||
PAUSE
|
|
||||||
println "continuing"
|
|
||||||
println "step through here"
|
|
||||||
println "step again"
|
|
||||||
println "and again"
|
|
||||||
@@ -18,7 +18,7 @@ fun !fib -int -int &n -function &fib
|
|||||||
endfun
|
endfun
|
||||||
|
|
||||||
# Main program
|
# Main program
|
||||||
println "Computing fib(30) recursively..."
|
println "Computing fib(20) recursively..."
|
||||||
call !fib 30 $fib &answer
|
call !fib 20 $fib &answer
|
||||||
println "Result:" $answer
|
println "Result:" $answer
|
||||||
end
|
end
|
||||||
|
|||||||
80
tests/unit.sh
Executable file
80
tests/unit.sh
Executable file
@@ -0,0 +1,80 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
echo "" > log.txt
|
||||||
|
for f in *.grnd; do
|
||||||
|
[ -e "$f" ] || continue # skip if no files match
|
||||||
|
# Files to skip over
|
||||||
|
if [[ "$f" == "lib.grnd" ]] ||
|
||||||
|
[[ "$f" == "string.grnd" ]] ||
|
||||||
|
[[ "$f" == "test.grnd" ]] ||
|
||||||
|
[[ "$f" == "to1000.grnd" ]] ||
|
||||||
|
[[ "$f" == "uhoh.grnd" ]];
|
||||||
|
then continue
|
||||||
|
fi
|
||||||
|
echo "Running $f"
|
||||||
|
ground "$f" > log.txt
|
||||||
|
|
||||||
|
FILE="log.txt"
|
||||||
|
FAILED="\033[31mFailed:\n\033[0m"
|
||||||
|
if [[ "$f" == "closure.grnd" ]]; then
|
||||||
|
if !(cmp -s "$FILE" <(printf "13 10\n"));
|
||||||
|
then printf $FAILED
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
elif [[ "$f" == "convs.grnd" ]]; then
|
||||||
|
if !(cmp -s "$FILE" <(printf "32\n12\n3.140000\na\n97\n"));
|
||||||
|
then printf $FAILED
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
elif [[ "$f" == "drop.grnd" ]]; then
|
||||||
|
if !(cmp -s "$FILE" <(printf "dingus\nGround runtime error:\n ErrorType: UnknownVariable\n ErrorInstruction: println \$x\n ErrorLine: 4\n"));
|
||||||
|
then printf "\033[31mFailed\n\033[0m"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
elif [[ "$f" == "error.grnd" ]]; then
|
||||||
|
if !(cmp -s "$FILE" <(printf "Ground runtime error:\n ErrorType: Hello\n ErrorContext: [1, 2, 3, Hi!]\n ErrorInstruction: error \"Hello\" [1, 2, 3, Hi!] 1\n ErrorLine: 2\n"));
|
||||||
|
then printf $FAILED
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
elif [[ "$f" == "fib.grnd" ]]; then
|
||||||
|
if !(cmp -s "$FILE" <(printf "Fibonacci result: 7540113804746346429\n"));
|
||||||
|
then printf $FAILED
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
elif [[ "$f" == "function.grnd" ]]; then
|
||||||
|
if !(cmp -s "$FILE" <(printf "dingle\n1\n2\n3\n4\n5\n6\n7\n8\n9\n10\n"));
|
||||||
|
then printf $FAILED
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
elif [[ "$f" == "list.grnd" ]]; then
|
||||||
|
if !(cmp -s "$FILE" <(printf "[hello, there, general, kenobi]\nhello\nthere\ngeneral\nkenobi\n"));
|
||||||
|
then printf $FAILED
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
elif [[ "$f" == "recursivefib.grnd" ]]; then
|
||||||
|
if !(cmp -s "$FILE" <(printf "Computing fib(20) recursively...\nResult: 6765\n"));
|
||||||
|
then printf $FAILED
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
elif [[ "$f" == "simple.grnd" ]]; then
|
||||||
|
if !(cmp -s "$FILE" <(printf "dingus\ndinglefart\n5.840000\n464773025\n5164.120000\n"));
|
||||||
|
then printf $FAILED
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
elif [[ "$f" == "struct.grnd" ]]; then
|
||||||
|
if !(cmp -s "$FILE" <(printf "53\n32\n"));
|
||||||
|
then printf $FAILED
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
elif [[ "$f" == "use.grnd" ]]; then
|
||||||
|
if !(cmp -s "$FILE" <(printf "Hello\n"));
|
||||||
|
then printf $FAILED
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
printf "\033[31mCould not find test case\n\033[0m"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
printf "\033[32mAll tests passed!\n\033[0m"
|
||||||
|
exit 0
|
||||||
2
tests/use.grnd
Normal file
2
tests/use.grnd
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
use "lib"
|
||||||
|
call !lib_PrintHello &tmp
|
||||||
Reference in New Issue
Block a user