#!/usr/bin/ruby

#
## Array
#

var a = [];
a[0]{:foo}[1][2]{:bar}{:baz} = 42;
say a;

var a1 = [Hash("foo" => [nil, [nil, nil, Hash("bar" => Hash("baz" => 42))]])];

assert_eq(a, a1);
assert(a[0].is_a(Hash));
assert_eq(a[0]{:foo}[1][2]{:bar}{:baz}, 42);
assert_eq(a[0]{:foo}[1][2]{:bar}, Hash(baz => 42));
assert_eq(a[0]{:foo}[1][2], Hash(bar => Hash(baz => 42)));

#
## Hash
#

var b = Hash();
b{:foo}[2]{:bar}{:baz}[1][2] = 42;
say b;

var b1 = Hash("foo" => [nil, nil, Hash("bar" => Hash("baz" => [nil, [nil, nil, 42]]))]);

assert_eq(b, b1);
assert(b{:foo}.is_a(Array));
assert_eq(b{:foo}[2]{:bar}{:baz}[1][2], 42);
assert_eq(b{:foo}[2]{:bar}{:baz}[1], [nil, nil, 42]);

say "** Test passed!"