Unit tests

This commit is contained in:
2026-03-18 15:21:58 +11:00
parent 3f678e0cd7
commit 7443722dd5
10 changed files with 105 additions and 36 deletions

View File

@@ -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

View File

@@ -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
View File

@@ -0,0 +1,4 @@
fun !lib_PrintHello -int
println "Hello"
return 0
endfun

View File

@@ -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
View File

@@ -0,0 +1,5 @@
[hello, there, general, hello]
hello
there
general
 ,WV

View File

@@ -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"

View File

@@ -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

View File

@@ -2,10 +2,10 @@ input &str
getstrsize $str &size getstrsize $str &size
set &idx 0 set &idx 0
@loop @loop
getstrcharat $str $idx &char getstrcharat $str $idx &char
println $char println $char
add 1 $idx &idx add 1 $idx &idx
equal $idx $size &cond equal $idx $size &cond
if $cond %loopend if $cond %loopend
jump %loop jump %loop
@loopend @loopend

80
tests/unit.sh Executable file
View 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
View File

@@ -0,0 +1,2 @@
use "lib"
call !lib_PrintHello &tmp