#!/usr/bin/ruby
#
## Tests for multi-line expressions
#
say 42 \
+ 9 \
* 3
var a = 42 \
+ 9 \
* 3
assert_eq(a, 69)
var b = (
42 \
+ 9 \
-> * 3
)
assert_eq(b, 153)
assert_eq(1 + 1 * 9, 18)
assert_eq(1 + 1 .* 9, 10)
var c = (
42 \.
+ 4 \->
* 9 \->
- 3
)
assert_eq(c, 411)
var d = (
42 \
+ 4 ->
* 9 ->
- 3 \
* 2
)
assert_eq(d, 408)
assert_eq(
40 \
+ 2 \
* 3 \->
+ 1,
40 + (2 * 3) + 1
)
assert_eq(
40 \
+ 2 \->
* 3 \
+ 1,
(40 + 2) * (3 + 1)
)
assert_eq(
40 \
+ 2 \
* 3 \
+ 1,
40 + (2 * (3 + 1))
)
assert_eq(
40 \
+ 2 \->
* 3 \->
+ 1,
((40 + 2) * 3) + 1
)
assert_eq(
40 ->
+ 2 \
* 3 ->
+ 1,
40 + (2 * 3) + 1
)
assert_eq(
40 \->
+ 2 \->
* 3 \->
+ 1,
((40 + 2) * 3) + 1
)
assert_eq(
"abc" .
uc .
reverse,
"CBA"
)
assert_eq(
"abc".uc \
.reverse \
.chars,
["C", "B", "A"]
)
## Means: 1 + (2 * 3)
assert_eq(1 + 2 \* 3, 7)
assert_eq(1 + 2 .* 3, 7)
## Means: (1 + 2) * 3
assert_eq(1 + 2 * 3, 9)
assert_eq(1 + 2 \->* 3, 9)
assert_eq(1 + 2 ->* 3, 9)
assert_eq(
20.of { .prime } .map{.digits(2).flip.digits2num(2) },
[1, 1, 3, 5, 7, 13, 11, 17, 25, 29, 23, 31, 41, 37, 53, 61, 43, 55, 47, 97]
)
assert_eq(282, (2 * 42+99))
assert_eq(282, (2 * 42.+99))
assert_eq(282, (2 * 42 .+ 99))
assert_eq(282, (2 * 42.add(99)))
assert_eq(282, (2 * 42 . add(99)))
say "** Test passed!"