aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMustafa Quraish <[email protected]>2022-01-29 12:31:14 -0500
committerMustafa Quraish <[email protected]>2022-01-29 12:31:14 -0500
commit0ff4735622a22b0630669307a78bced7c20d5bdc (patch)
tree9ab76b0efe6c90b722b1bfc5aed03b410f9b5e63
parentNow supporting local variables! :^) (diff)
downloadcup-0ff4735622a22b0630669307a78bced7c20d5bdc.tar.xz
cup-0ff4735622a22b0630669307a78bced7c20d5bdc.zip
Add some tests for local variables
-rwxr-xr-x[-rw-r--r--]tests/basics.sh0
-rw-r--r--tests/common.sh20
-rwxr-xr-xtests/variables.sh34
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"