aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xtests/arrays.sh131
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"