diff options
Diffstat (limited to 'tests/control_flow.nom')
| -rw-r--r-- | tests/control_flow.nom | 176 |
1 files changed, 0 insertions, 176 deletions
diff --git a/tests/control_flow.nom b/tests/control_flow.nom deleted file mode 100644 index 72adc5a..0000000 --- a/tests/control_flow.nom +++ /dev/null @@ -1,176 +0,0 @@ -#!/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 (yes): %loc2 = (yes) - ..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 ((5 if (yes) else 1) == 5) -assume ((5 if (no) else 1) == 1) -action [return nil] (return (nil)) -assume (((return nil) if (yes) else 99) == (nil)) -go to %skip -barf "go-to failed." ---- %skip --- -%tot = 0 -for %x in [1, 2, 3]: %tot += %x -assume (%tot == 6) or barf "for-loop failed" -%x = 0 -repeat: - %x += 1 - if (%x == 3): stop repeating - 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} -for % in [1, 2, 3]: - repeat 5 times: - do next repeat - %x += 1 - - %y += 1 - -assume ([%x, %y] == [0, 3]) or barf "Failed to continue repeat" -set {%x:0, %y:0} -for % in [1, 2, 3]: - repeat 5 times: - do next % - %x += 1 - - %y += 1 - -assume ([%x, %y] == [0, 0]) or barf "Failed to continue for" -set {%x:0, %y:0} -for % in [1, 2, 3]: - repeat 5 times: - stop repeating - %x += 1 - - %y += 1 - -assume ([%x, %y] == [0, 3]) or barf "Failed to stop repeat" -set {%x:0, %y:0} -for % in [1, 2, 3]: - repeat 5 times: - stop % - %x += 1 - - %y += 1 - -assume ([%x, %y] == [0, 0]) or barf "Failed to stop for" -%x = 0 -repeat while (%x < 10): %x += 1 -assume (%x == 10) or barf "repeat-while failed" -%x = 0 -repeat until (%x == 10): %x += 1 -assume (%x == 10) or barf "repeat-until failed" -%x = 0 -for %i in 1 to 3: %x += %i -assume (%x == 6) or barf "Numeric for range failed" -%x = 0 -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}: - stop %key - barf "stopping key failed" - -for %key = %value in {x:1, y:2}: - stop %value - barf "stopping value failed" - -for %key = %value in {x:1}: - stop %key - stop %value - do next %key - do next %value - -for %key = %value in {x:1, y:2}: - do next %key - barf "skipping key failed" - -for %key = %value in {x:1, y:2}: - do next %value - barf "skipping value failed" - -action [barfer]: - barf "this should never be reached" - -if: - (no): barf "'when' fail" - (no) (3 > 4): - barf "'when' fail 2" - (yes) (barfer): do nothing - (99 > 1): - barf "Fell through incorrectly" - -%else_worked = (no) -if: - (no): barf - 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) - -assume %when_worked -%when_worked = (no) -if 5 is: - 6: barf - else: - %when_worked = (yes) - -assume %when_worked -%x = 1 -do: %x = 2 -assume (%x == 2) or barf "'do' is redefining locals" -assume (..) - (..) - result of: - %n = 0 - for % in [1, 2, 3]: %n += % - return %n - ..== 6 - -%t = [1, [2, [[3], 4], 5, [[[6]]]]] -%flat = [] -for % in recursive %t: - 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." |
