#!/usr/bin/ruby
var ok_block = {|z|
"ok -- #{z}"
}
assert_eq((ok_block \\ { "error" })(1), "ok -- 1")
assert_eq((nil \\ {|x| "ok -- #{x}" })(2), "ok -- 2")
assert_eq(({ "ok -- #{_}" } \\ { "error" })(3), "ok -- 3")
assert_eq(({|x| x + 1 })(42), 43)
assert_eq({|x| x + 1 }(42), 43)
assert_eq((true ? func(x){ x.inc } : func(x){ x.dec })(42), 43)
assert_eq((false ? func(x){ x.inc } : func(x){ x.dec })(42), 41)
assert_eq(func(x){ x.inc } \\ func(x){ x.dec } -> call(42), 43)
assert_eq(nil \\ func(x){ x.dec } -> call(42), 41)
# Currently, this doesn't work
# assert_eq(true ? func(x){ x.inc } : func(x){ x.dec } -> call(42), 43)
say "** Test passed!"