diff options
| author | Mustafa Quraish <[email protected]> | 2022-01-29 12:31:14 -0500 |
|---|---|---|
| committer | Mustafa Quraish <[email protected]> | 2022-01-29 12:31:14 -0500 |
| commit | 0ff4735622a22b0630669307a78bced7c20d5bdc (patch) | |
| tree | 9ab76b0efe6c90b722b1bfc5aed03b410f9b5e63 | |
| parent | Now supporting local variables! :^) (diff) | |
| download | cup-0ff4735622a22b0630669307a78bced7c20d5bdc.tar.xz cup-0ff4735622a22b0630669307a78bced7c20d5bdc.zip | |
Add some tests for local variables
| -rwxr-xr-x[-rw-r--r--] | tests/basics.sh | 0 | ||||
| -rw-r--r-- | tests/common.sh | 20 | ||||
| -rwxr-xr-x | tests/variables.sh | 34 |
3 files changed, 54 insertions, 0 deletions
diff --git a/tests/basics.sh b/tests/basics.sh index cab2462..cab2462 100644..100755 --- a/tests/basics.sh +++ b/tests/basics.sh diff --git a/tests/common.sh b/tests/common.sh index 4469874..7c8b5ae 100644 --- a/tests/common.sh +++ b/tests/common.sh @@ -24,4 +24,24 @@ function assert_exit_status() { fi set -e echo -n "." +} + +function assert_exit_status_stdin() { + ./cupcc - + assemble + + set +e + ./a.out + res=$? + if [ $res -ne $1 ] + then + echo "" + echo "----------------------------------" + echo "Test failed: expected $2, got $res" + echo "- Input was:" + echo " \`$1\`" + exit 1 + fi + set -e + echo -n "." }
\ No newline at end of file diff --git a/tests/variables.sh b/tests/variables.sh new file mode 100755 index 0000000..94010d7 --- /dev/null +++ b/tests/variables.sh @@ -0,0 +1,34 @@ +#!/bin/bash + +. tests/common.sh + +set -e + +echo -n "- One variable: " +assert_exit_status 'fn main() { let x: int = 45; return 1; }' 1 +assert_exit_status 'fn main() { let x: int = 45; return x; }' 45 +assert_exit_status 'fn main() { let x: int = 45; return x+x; }' 90 +echo " OK" + +echo -n "- Multiple variable: " + +assert_exit_status_stdin 2 <<EOF +fn main() { + let x: int = 1; + let y: int = x + x; + return y; +} +EOF + +assert_exit_status_stdin 23 <<EOF +fn main() { + let x: int = 1; + let y: int = x + x; + let z: int = y + y; + let w: int = z + z; + let r: int = w + w; + return r + x + y + z; +} +EOF + +echo " OK" |