#!/usr/bin/ruby

assert_eq([25,36,49] |>> :log |>> :exp |>> :sqrt |>> :round, [5, 6, 7])

func square(n) { n*n }

assert_eq([3,4,5] |>> square, [9, 16, 25])
assert_eq([3,4,5] |>> {_*_},  [9, 16, 25])

assert_eq([3,4,5] |>> square |>> :sqrt,      [3,4,5])
assert_eq([3,4,5] |>> square |>> {.sqrt},    [3,4,5])
assert_eq([3,4,5] |>> [:pow, 2] |>> {.sqrt}, [3,4,5])
assert_eq([3,4,5] |>> [:pow, 2] |>> :sqrt,   [3,4,5])

assert_eq([1,2,3] |>> (:ipow, 2), [1, 4, 9])
assert_eq([1,2,3] |>> [:ipow, 2], [1, 4, 9])

say "** Test passed!"