diff options
Diffstat (limited to 'tests/loop')
-rw-r--r-- | tests/loop/buildfile | 5 | ||||
-rw-r--r-- | tests/loop/for.test | 112 |
2 files changed, 117 insertions, 0 deletions
diff --git a/tests/loop/buildfile b/tests/loop/buildfile new file mode 100644 index 0000000..7517da5 --- /dev/null +++ b/tests/loop/buildfile @@ -0,0 +1,5 @@ +# file : tests/loop/buildfile +# copyright : Copyright (c) 2014-2017 Code Synthesis Ltd +# license : MIT; see accompanying LICENSE file + +./: test{*} $b diff --git a/tests/loop/for.test b/tests/loop/for.test new file mode 100644 index 0000000..746f1bb --- /dev/null +++ b/tests/loop/for.test @@ -0,0 +1,112 @@ +# file : tests/loop/for.test +# copyright : Copyright (c) 2014-2017 Code Synthesis Ltd +# license : MIT; see accompanying LICENSE file + +# Test for-loop. + +.include ../common.test + +: line +: +$* <<EOI >>EOO +for i: 1 2 3 + print $i +EOI +1 +2 +3 +EOO + +: block +: +$* <<EOI >>EOO +for i: 1 2 3 +{ + # This is a block if you haven't noticed. + j = $i + print $j +} +EOI +1 +2 +3 +EOO + +: empty +: +$* <<EOI +i = x +nums = +for i: $nums + print $i +assert ($i == x) +EOI + +: nested +: +$* <<EOI >>EOO +for i: 1 2 3 +{ + for j: + - + { + print $j$i + } +} +EOI ++1 +-1 ++2 +-2 ++3 +-3 +EOO + +: diag-line +: +$* <<EOI 2>>EOE != 0 +for i: true false +{ + assert $i +} +EOI +<stdin>:3:3: error: assertion failed +EOE + +: var-attribute +: +$* <<EOI >>EOO +for [uint64] i: 0 1 2 +{ + i += 1 + print $i +} +EOI +1 +2 +3 +EOO + +: val-attribute +: +$* <<EOI >>EOO +for i: [uint64s] 0 1 2 +{ + i += 1 + print $i +} +EOI +1 +2 +3 +EOO + +: pairs +: +$* <<EOI >>EOO +for i: a@1 b@2 c@3 + print $i +EOI +a@1 +b@2 +c@3 +EOO |