#!/usr/bin/ruby
assert_eq(
gather {
var i = 4
while (--i) { |a|
take(a)
}
},
[3,2,1]
)
assert_eq(
gather {
var i = 4
while (--i) { |a|
take(\a)
}
}.map {|x| *x },
[3,2,1]
)
assert_eq(
gather {
for i in (1..5) {
var x = i**2
take(\x)
}
}.map {|x| *x },
[1, 4, 9, 16, 25]
)
assert_eq(
gather {
var i = 1
while (i <= 5) {
var x = i**2
take(\x)
++i
}
}.map {|x| *x },
[1, 4, 9, 16, 25]
)
assert_eq(
gather {
var i = 1
loop {
break if (i > 5)
var x = i**2
take(\x)
++i
}
}.map {|x| *x },
[1, 4, 9, 16, 25]
)
assert_eq(
gather {
for (var i = 1; i <= 5; ++i) {
var x = i**2
take(\x)
}
}.map {|x| *x },
[1, 4, 9, 16, 25]
)
assert_eq(
gather {
for n in [1,2,3,4] {
take(\n)
}
}.map {|x| *x },
[1,2,3,4]
)
assert_eq(
gather {
for a,b in [[1,2],[3,4]] {
take(\a, \b)
}
}.map {|x| *x },
[1,2,3,4]
)
assert_eq(
gather {
var n = 0
@:HERE if (true) {
var x = n;
take(\x)
goto :HERE if (++n < 3)
}
}.map{ *_ },
[0, 1, 2]
)
say "** Test passed!"