#!/usr/bin/ruby

do {
    const (
        a = 99,
        b = 42,
    )

    assert_eq(a, 99)
    assert_eq(b, 42)

    const *foo = (1,2,3)
    const :bar = (a => 14, b => 15)

    assert_eq(foo, [1,2,3])
    assert_eq(bar, Hash(a => 14, b => 15))

    foo[0] = 99
    bar{:b} = 42

    assert_eq(foo, [99, 2, 3])
    assert_eq(bar, Hash(a => 14, b => 42))

    bar{:c} = 99

    assert_eq(bar, Hash(a => 14, b => 42, c => 99))
}

do {
    const (
        *x = (1,2,3),
        :y = (x => 1, y => 2),
    )

    assert_eq(x, [1,2,3])
    assert_eq(y, Hash("x" => 1, "y" => 2))

    x[0] = 42
    y{:x} = 3

    assert_eq(x, [42, 2, 3])
    assert_eq(y, Hash(x => 3, y => 2))
}

do {
    const(foo = 42, bar = foo+2)

    assert_eq(foo, 42)
    assert_eq(bar, 44)
}

say "** Test passed!"