aboutsummaryrefslogtreecommitdiff
path: root/tests/control_flow.nom
diff options
context:
space:
mode:
Diffstat (limited to 'tests/control_flow.nom')
-rw-r--r--tests/control_flow.nom80
1 files changed, 51 insertions, 29 deletions
diff --git a/tests/control_flow.nom b/tests/control_flow.nom
index 6312d77..7a6a743 100644
--- a/tests/control_flow.nom
+++ b/tests/control_flow.nom
@@ -1,19 +1,27 @@
-#!/usr/bin/env nomsu -V2.4.4.3
+#!/usr/bin/env nomsu -V2.5.4.3
#
Tests for the stuff defined in core/control_flow.nom
use "core"
+
do nothing
action [test conditionals]:
if (yes): %loc1 = (yes)
- if (no): barf "entered if 'no' conditional"
- unless (yes): barf "entered unless 'yes' conditional"
+ if (no):
+ barf "entered if 'no' conditional"
+
+ unless (yes):
+ barf "entered unless 'yes' conditional"
+
if (yes): %loc2 = (yes)
- ..else: barf "entered if 'yes' else conditional"
+ ..else:
+ barf "entered if 'yes' else conditional"
unless (no) (%loc3 = (yes)) else (barf "entered unless 'no' else conditional")
-assume (all of [%loc1 == (nil), %loc2 == (nil), %loc3 == (nil)]) or barf "conditionals leaking locals"
+assume (all of [%loc1 == (nil), %loc2 == (nil), %loc3 == (nil)]) or barf ".."
+ conditionals leaking locals
+
assume ((5 if (yes) else 1) == 5)
assume ((5 if (no) else 1) == 1)
action [return nil] (return (nil))
@@ -28,13 +36,14 @@ assume (%tot == 6) or barf "for-loop failed"
repeat:
%x += 1
if (%x == 3): stop repeating
- if (%x > 3): barf "Failed to stop repeat loop"
+ if (%x > 3):
+ barf "Failed to stop repeat loop"
assume (%x == 3) or barf "Failed to repeat"
%x = 0
repeat 5 times: %x += 1
assume (%x == 5) or barf "Failed to repeat 5 times"
-set {%x: 0, %y: 0}
+set {%x:0, %y:0}
for % in [1, 2, 3]:
repeat 5 times:
do next repeat
@@ -43,7 +52,7 @@ for % in [1, 2, 3]:
%y += 1
assume ([%x, %y] == [0, 3]) or barf "Failed to continue repeat"
-set {%x: 0, %y: 0}
+set {%x:0, %y:0}
for % in [1, 2, 3]:
repeat 5 times:
do next %
@@ -52,7 +61,7 @@ for % in [1, 2, 3]:
%y += 1
assume ([%x, %y] == [0, 0]) or barf "Failed to continue for"
-set {%x: 0, %y: 0}
+set {%x:0, %y:0}
for % in [1, 2, 3]:
repeat 5 times:
stop repeating
@@ -61,7 +70,7 @@ for % in [1, 2, 3]:
%y += 1
assume ([%x, %y] == [0, 3]) or barf "Failed to stop repeat"
-set {%x: 0, %y: 0}
+set {%x:0, %y:0}
for % in [1, 2, 3]:
repeat 5 times:
stop %
@@ -83,59 +92,70 @@ assume (%x == 6) or barf "Numeric for range failed"
for %i in 3 to 1 via -1: %x += %i
assume (%x == 6) or barf "backwards numeric for range failed"
%result = {}
-for %key = %value in {x: 1, y: 2}: %result."\%key\%key" = (%value * 11)
-assume (%result == {xx: 11, yy: 22}) or barf "key/value iteration failed"
-for %key = %value in {x: 1, y: 2}:
+for %key = %value in {x:1, y:2}:
+ %result."\%key\%key" = (%value * 11)
+
+assume (%result == {xx:11, yy:22}) or barf "key/value iteration failed"
+for %key = %value in {x:1, y:2}:
stop %key
barf "stopping key failed"
-for %key = %value in {x: 1, y: 2}:
+for %key = %value in {x:1, y:2}:
stop %value
barf "stopping value failed"
-for %key = %value in {x: 1}:
+for %key = %value in {x:1}:
stop %key
stop %value
do next %key
do next %value
-for %key = %value in {x: 1, y: 2}:
+for %key = %value in {x:1, y:2}:
do next %key
barf "skipping key failed"
-for %key = %value in {x: 1, y: 2}:
+for %key = %value in {x:1, y:2}:
do next %value
barf "skipping value failed"
-action [barfer]: barf "this should never be reached"
+action [barfer]:
+ barf "this should never be reached"
+
if:
(no): barf "'when' fail"
- (no) (3 > 4): barf "'when' fail 2"
+ (no) (3 > 4):
+ barf "'when' fail 2"
+
(yes) (barfer): do nothing
- (99 > 1): barf "Fell through incorrectly"
+ (99 > 1):
+ barf "Fell through incorrectly"
%else_worked = (no)
if:
(no): barf
- else: %else_worked = (yes)
-
-
+ else:
+ %else_worked = (yes)
assume %else_worked or barf "when..else failed"
action [test when scope]:
if (yes): %leaked = (yes)
+
test when scope
assume (not %leaked) or barf "'when' is leaking locals"
%when_worked = (no)
if 4 is:
- 1 2: barf "'when = ?' fail"
- 3 4 (barfer): %when_worked = (yes)
+ 1 2:
+ barf "'when = ?' fail"
+
+ 3 4 (barfer):
+ %when_worked = (yes)
assume %when_worked
%when_worked = (no)
if 5 is:
6: barf
- else: %when_worked = (yes)
+ else:
+ %when_worked = (yes)
assume %when_worked
%x = 1
@@ -147,12 +167,14 @@ assume (..)
%n = 0
for % in [1, 2, 3]: %n += %
return %n
- .. == 6
+ ..== 6
+
%t = [1, [2, [[3], 4], 5, [[[6]]]]]
%flat = []
for % in recursive %t:
- if ((type of %) is "table"): for %2 in %: recurse % on %2
+ if ((type of %) is "table"):
+ for %2 in %: recurse % on %2
..else: add % to %flat
assume ((sorted %flat) == [1, 2, 3, 4, 5, 6])
-say "Control flow test passed."
+say "Control flow test passed." \ No newline at end of file