#!/usr/bin/ruby
# Test the prefix-colon operator `:(...)`.
# https://github.com/trizen/sidef/issues/84
class X {
has Hash colon_inner = Hash(
:prop => :(:k => :v)
)
has Hash colon_outer = :(
:prop => Hash(:k => :v)
)
has Hash colon_both = :(
:prop => :(:k, :v)
)
has Hash colon_none = Hash(
:prop => Hash(:k, :v)
)
}
func g {
var Hash y = :(:k, :())
return y
}
var x = X()
var expect = Hash("prop" => Hash("k" => "v"))
assert_eq(x.colon_inner, expect)
assert_eq(x.colon_outer, expect)
assert_eq(x.colon_both, expect)
assert_eq(x.colon_none, expect)
var Hash h = :(:k => :())
assert_eq(h, Hash("k" => Hash()))
assert_eq(g(), Hash("k" => Hash()))
assert_eq(x.colon_outer\{:prop}, Hash("k" => "v"))
say "** Test passed!"