aboutsummaryrefslogtreecommitdiffstats
path: root/progs/tests/expression
diff options
context:
space:
mode:
Diffstat (limited to 'progs/tests/expression')
-rw-r--r--progs/tests/expression/add.sy9
-rw-r--r--progs/tests/expression/boolean_ops_count.sy41
-rw-r--r--progs/tests/expression/boolean_order.sy42
-rw-r--r--progs/tests/expression/div.sy5
-rw-r--r--progs/tests/expression/in_rhs.sy3
-rw-r--r--progs/tests/expression/negation.sy7
-rw-r--r--progs/tests/expression/parenthesis.sy3
-rw-r--r--progs/tests/expression/simple.sy5
-rw-r--r--progs/tests/expression/sub.sy9
-rw-r--r--progs/tests/expression/terms_and_factors.sy4
10 files changed, 128 insertions, 0 deletions
diff --git a/progs/tests/expression/add.sy b/progs/tests/expression/add.sy
new file mode 100644
index 0000000..7be4012
--- /dev/null
+++ b/progs/tests/expression/add.sy
@@ -0,0 +1,9 @@
+start :: fn {
+
+ a := 0
+ b := 99999
+ a += 1
+ a <=> 1
+ b <=> 99999
+
+}
diff --git a/progs/tests/expression/boolean_ops_count.sy b/progs/tests/expression/boolean_ops_count.sy
new file mode 100644
index 0000000..b4a43e9
--- /dev/null
+++ b/progs/tests/expression/boolean_ops_count.sy
@@ -0,0 +1,41 @@
+start :: fn {
+ ts := 0
+ t :: fn -> bool {
+ ts += 1
+ ret true
+ }
+
+ fs := 0
+ f :: fn -> bool {
+ fs += 1
+ ret false
+ }
+
+ i :: fn -> bool {
+ <!>
+ ret false
+ }
+
+ if f() && i() {
+ <!>
+ }
+
+ if t() || i() {
+ // This block is intentionally left blank
+ } else {
+ <!>
+ }
+
+ if f() && i() && i() {
+ <!>
+ }
+
+ if t() || i() || i() {
+ // This block is intentionally left blank
+ } else {
+ <!>
+ }
+
+ fs <=> 2
+ ts <=> 2
+}
diff --git a/progs/tests/expression/boolean_order.sy b/progs/tests/expression/boolean_order.sy
new file mode 100644
index 0000000..567c068
--- /dev/null
+++ b/progs/tests/expression/boolean_order.sy
@@ -0,0 +1,42 @@
+start :: fn {
+ ts := 0
+ t :: fn -> bool {
+ ts += 1
+ ret true
+ }
+
+ fs := 0
+ f :: fn -> bool {
+ fs += 1
+ ret false
+ }
+
+ i :: fn -> bool {
+ <!>
+ ret false
+ }
+
+ if t() || i() && i() {
+ // This block is intentionally left blank
+ } else {
+ <!>
+ }
+
+ if f() && i() || t() {
+ // This block is intentionally left blank
+ } else {
+ <!>
+ }
+
+ fs <=> 1
+ fs = 0
+ ts <=> 2
+ ts = 0
+
+ f() && i() || f() <=> t() && f() || f()
+ f() && i() || f() <=> (t() && f()) || f()
+ t() && t() && f() || t() <=> t() || i() && i() && i()
+
+ fs <=> 9
+ ts <=> 6
+}
diff --git a/progs/tests/expression/div.sy b/progs/tests/expression/div.sy
new file mode 100644
index 0000000..df3e7bb
--- /dev/null
+++ b/progs/tests/expression/div.sy
@@ -0,0 +1,5 @@
+start :: fn {
+ a := 2
+ a /= 2
+ a <=> 1
+}
diff --git a/progs/tests/expression/in_rhs.sy b/progs/tests/expression/in_rhs.sy
new file mode 100644
index 0000000..28ed276
--- /dev/null
+++ b/progs/tests/expression/in_rhs.sy
@@ -0,0 +1,3 @@
+start :: fn {
+ 5 <=> 1 * 2 + 3
+}
diff --git a/progs/tests/expression/negation.sy b/progs/tests/expression/negation.sy
new file mode 100644
index 0000000..0c702aa
--- /dev/null
+++ b/progs/tests/expression/negation.sy
@@ -0,0 +1,7 @@
+start :: fn {
+ -1 <=> 0 - 1
+ -1 + 2 <=> 1
+ -(1 + 2) <=> -3
+ 1 + -1 <=> 0
+ 2 * -1 <=> -2
+}
diff --git a/progs/tests/expression/parenthesis.sy b/progs/tests/expression/parenthesis.sy
new file mode 100644
index 0000000..dd6fe8a
--- /dev/null
+++ b/progs/tests/expression/parenthesis.sy
@@ -0,0 +1,3 @@
+start :: fn {
+ (1 + 2) * 3 <=> 9
+}
diff --git a/progs/tests/expression/simple.sy b/progs/tests/expression/simple.sy
new file mode 100644
index 0000000..29d7c76
--- /dev/null
+++ b/progs/tests/expression/simple.sy
@@ -0,0 +1,5 @@
+start :: fn {
+ 1 + 1 // blargh
+ 2 // blargh
+ // HARGH
+}
diff --git a/progs/tests/expression/sub.sy b/progs/tests/expression/sub.sy
new file mode 100644
index 0000000..c220b8f
--- /dev/null
+++ b/progs/tests/expression/sub.sy
@@ -0,0 +1,9 @@
+start :: fn {
+
+ a := 0
+ b := 99999
+ a -= 1
+ a <=> -1
+ b <=> 99999
+
+}
diff --git a/progs/tests/expression/terms_and_factors.sy b/progs/tests/expression/terms_and_factors.sy
new file mode 100644
index 0000000..42a48e2
--- /dev/null
+++ b/progs/tests/expression/terms_and_factors.sy
@@ -0,0 +1,4 @@
+start :: fn {
+ 1 + 1 * 2 <=> 3
+ 1 * 2 + 3 <=> 5
+}