diff options
Diffstat (limited to 'tests/arrays.sh')
| -rwxr-xr-x | tests/arrays.sh | 131 |
1 files changed, 131 insertions, 0 deletions
diff --git a/tests/arrays.sh b/tests/arrays.sh new file mode 100755 index 0000000..8eb2f07 --- /dev/null +++ b/tests/arrays.sh @@ -0,0 +1,131 @@ +#!/bin/bash + +# Test Builtin functions + +. tests/common.sh + +set -e + +echo -n "- Integer arrays: " +assert_stdout_text \ +"fn main() { + let a: int[5]; + for (let i = 0; i < 5; i = i + 1) { + a[i] = i; + } + for (let i = 0; i < 5; i = i + 1) { + print(a[i]); + } +}" \ +"0 +1 +2 +3 +4" + +assert_stdout_text \ +" +let a: int[5]; +fn main() { + for (let i = 0; i < 5; i = i + 1) { + a[i] = i; + } + for (let i = 0; i < 5; i = i + 1) { + print(a[i]); + } +}" \ +"0 +1 +2 +3 +4" + +assert_stdout_text \ +" +fn test(a: int*) { + for (let i = 0; i < 5; i = i + 1) { + a[i] = i; + } +} +fn main() { + let a: int[5]; + test(a); + for (let i = 0; i < 5; i = i + 1) { + print(a[i]); + } +}" \ +"0 +1 +2 +3 +4" + +assert_stdout_text \ +" +fn test(a: int*) { + for (let i = 0; i < 5; i = i + 1) { + a[i] = i; + } +} +fn main() { + let a: int[5]; + test(a); + for (let i = 0; i < 5; i = i + 1) { + print(a[i]); + } +}" \ +"0 +1 +2 +3 +4" +echo " OK" + +echo -n "- Strings / Char arrays: " +assert_stdout_text \ +"import \"std/common.cup\" +fn main() { + puts(\"Hello\"); +}" \ +"Hello" + +assert_stdout_text \ +"import \"std/common.cup\" +fn main() { + let buf: char[10]; + strcpy(buf, \"Hello\"); + puts(buf); +}" \ +"Hello" + +assert_stdout_text \ +"import \"std/common.cup\" +fn main() { + let buf = \"Hello\"; + puts(buf); +}" \ +"Hello" + +assert_stdout_text \ +"import \"std/common.cup\" +let buf: char[10]; +fn main() { + strcpy(buf, \"Hello\"); + puts(buf); +}" \ +"Hello" + +assert_stdout_text \ +"import \"std/common.cup\" +let buf: char[10]; +fn main() { + buf[0] = 'H'; + buf[1] = 'a' + 4; + buf[2] = 'l'; + buf[3] = buf[2]; + buf[4] = buf[3] + 3; + buf[5] = 0; + puts(buf); +}" \ +"Hello" +echo " OK" |