diff options
| author | Mustafa Quraish <[email protected]> | 2022-01-29 17:37:00 -0500 |
|---|---|---|
| committer | Mustafa Quraish <[email protected]> | 2022-01-29 17:37:00 -0500 |
| commit | a9683512b29abd53814bf834e23f752a8999a679 (patch) | |
| tree | 033d76dbf7b1249354d2967b9de53fd6af20b7cb /tests/conditions.sh | |
| parent | Add i64{max,min} helper functions (diff) | |
| download | cup-a9683512b29abd53814bf834e23f752a8999a679.tar.xz cup-a9683512b29abd53814bf834e23f752a8999a679.zip | |
Implement blocks (lexically scoped) and conditionals
Diffstat (limited to 'tests/conditions.sh')
| -rwxr-xr-x | tests/conditions.sh | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/tests/conditions.sh b/tests/conditions.sh new file mode 100755 index 0000000..be80d96 --- /dev/null +++ b/tests/conditions.sh @@ -0,0 +1,65 @@ +#!/bin/bash + +. tests/common.sh + +set -e + +echo -n "- Conditionals: " +assert_exit_status 'fn main() { return 1 ? 5 : 10; }' 5 +assert_exit_status 'fn main() { return 0 ? 5 : 10; }' 10 +assert_exit_status 'fn main() { return 1 < 2 ? 10 : 20; }' 10 + +assert_exit_status_stdin 5 <<EOF +fn main() { + let flag: int = 1; + let a: int; + flag ? a = 5 : a = 10; + return a; +} +EOF + +assert_exit_status_stdin 10 <<EOF +fn main() { + let flag: int = 0; + let a: int; + flag ? a = 5 : a = 10; + return a; +} +EOF +echo " OK" + +echo -n "- If statement: " +assert_exit_status_stdin 10 <<EOF +fn main() { + if (5 < 20) return 10; + return 3; +} +EOF + +assert_exit_status_stdin 3 <<EOF +fn main() { + if (5 > 20) return 10; + return 3; +} +EOF + +assert_exit_status_stdin 20 <<EOF +fn main() { + let x: int; + if (0) + x = 3; + else + x = 20; + return x; +} +EOF + +assert_exit_status_stdin 3 <<EOF +fn main() { + let x: int; + if (1) + x = 3; + return x; +} +EOF +echo " OK"
\ No newline at end of file |