aboutsummaryrefslogtreecommitdiffstats
path: root/progs/tests/tuple
diff options
context:
space:
mode:
Diffstat (limited to 'progs/tests/tuple')
-rw-r--r--progs/tests/tuple/add.sy3
-rw-r--r--progs/tests/tuple/basic.sy24
-rw-r--r--progs/tests/tuple/fail_invalid_singleton.sy7
-rw-r--r--progs/tests/tuple/fail_out_of_bounds.sy6
-rw-r--r--progs/tests/tuple/mul.sy3
-rw-r--r--progs/tests/tuple/multiple_types.sy4
-rw-r--r--progs/tests/tuple/sub.sy4
-rw-r--r--progs/tests/tuple/types.sy4
8 files changed, 55 insertions, 0 deletions
diff --git a/progs/tests/tuple/add.sy b/progs/tests/tuple/add.sy
new file mode 100644
index 0000000..3fadd86
--- /dev/null
+++ b/progs/tests/tuple/add.sy
@@ -0,0 +1,3 @@
+start :: fn {
+ (1, 2, 3, 4) + (4, 3, 2, 1) <=> (5, 5, 5, 5)
+}
diff --git a/progs/tests/tuple/basic.sy b/progs/tests/tuple/basic.sy
new file mode 100644
index 0000000..642e381
--- /dev/null
+++ b/progs/tests/tuple/basic.sy
@@ -0,0 +1,24 @@
+start :: fn {
+ a := (1,2)
+ a[0] <=> 1
+ a[1] <=> 2
+
+ b := (1,)
+ b[0] <=> 1
+
+ empty := ()
+ c := (empty,)
+ c[0] <=> ()
+
+ d := (1,2)
+ d[0] <=> d[0]
+
+ {
+ q := d[2-2]
+ d[d[(5 + 3) * 0]] <=> d[d[(5 + 3) * 0]]
+ w := d[0]
+ q + w
+ q - w
+ q * w
+ }
+}
diff --git a/progs/tests/tuple/fail_invalid_singleton.sy b/progs/tests/tuple/fail_invalid_singleton.sy
new file mode 100644
index 0000000..a8fafaa
--- /dev/null
+++ b/progs/tests/tuple/fail_invalid_singleton.sy
@@ -0,0 +1,7 @@
+start :: fn {
+ a := (,)
+ a
+}
+
+//TODO(gu) See #100
+// errors: [ErrorKind::SyntaxError(_, _), ErrorKind::SyntaxError(_, _), ErrorKind::SyntaxError(_, _)]
diff --git a/progs/tests/tuple/fail_out_of_bounds.sy b/progs/tests/tuple/fail_out_of_bounds.sy
new file mode 100644
index 0000000..cb0764a
--- /dev/null
+++ b/progs/tests/tuple/fail_out_of_bounds.sy
@@ -0,0 +1,6 @@
+start :: fn {
+ a := (1, 2)
+ a[2]
+}
+
+// errors: [ErrorKind::IndexOutOfBounds(_, 2, 2)]
diff --git a/progs/tests/tuple/mul.sy b/progs/tests/tuple/mul.sy
new file mode 100644
index 0000000..4b33314
--- /dev/null
+++ b/progs/tests/tuple/mul.sy
@@ -0,0 +1,3 @@
+start :: fn {
+ (0, 1, 2) * (2, 3, 4) <=> (0, 3, 8)
+}
diff --git a/progs/tests/tuple/multiple_types.sy b/progs/tests/tuple/multiple_types.sy
new file mode 100644
index 0000000..c85403a
--- /dev/null
+++ b/progs/tests/tuple/multiple_types.sy
@@ -0,0 +1,4 @@
+start :: fn {
+ a: (str, bool, int) = ("abc", true, 1)
+ a
+}
diff --git a/progs/tests/tuple/sub.sy b/progs/tests/tuple/sub.sy
new file mode 100644
index 0000000..cca4f2c
--- /dev/null
+++ b/progs/tests/tuple/sub.sy
@@ -0,0 +1,4 @@
+start :: fn {
+ print (1, -2, 3, -4) - (4, 3, -2, -1)
+ (1, -2, 3, -4) - (4, 3, -2, -1) <=> (-3, -5, 5, -3)
+}
diff --git a/progs/tests/tuple/types.sy b/progs/tests/tuple/types.sy
new file mode 100644
index 0000000..bdcdfa4
--- /dev/null
+++ b/progs/tests/tuple/types.sy
@@ -0,0 +1,4 @@
+start :: fn {
+ a: (int, float, int) = (1, 1., 1)
+ a
+}