#!/usr/bin/ruby
#
## Test array and hash lookups
#
var a = %w(a b c d e f)
var h = Hash(
a => 1,
b => 2,
c => 3,
d => 4,
)
assert_eq(a[0], 'a')
assert_eq(a[3], 'd')
assert_eq(a[-1], 'f')
assert_eq(h{:a}, 1)
assert_eq(h{:c}, 3)
assert_eq(h{:d}, 4)
class Foo(k,i) {
method to_s {
k
}
method to_n {
i
}
}
var f = Foo("c", 3)
var g = Foo("b", 2)
assert_eq(a[f], 'd')
assert_eq(h{f}, 3)
assert_eq([a[f,g,f]], ['d','c','d'])
assert_eq([h{f,g,f}], [3,2,3])
g.k = 'a'
assert_eq(h{g}, 1)
assert_eq(h{f}, 3)
g.i = -1
assert_eq(a[g], 'f')
assert_eq(a[f], 'd')
do {
var _ = [99, 100, 101, 102]
assert_eq(.[2], 101)
}
do {
var x = [42, 43, 44, 45, 46];
assert_eq(x.[3], 45)
}
do {
var z = Hash(a => 1, b => 2, c => 3)
assert_eq(z.{:b}, 2)
}
do {
var _ = Hash(a => 1, b => 2, c => 3)
assert_eq(.{:c}, 3)
}
assert_eq([[1,2],[3,4],[5,6]].map { .[0] }, [1, 3, 5])
assert_eq([[1,2],[3,4],[5,6]].map { .[1] }, [2, 4, 6])
do {
var arr = %n[1,2,3,4,5,1]
assert_eq(freq(arr){1}, 2)
assert_eq(freq(arr){2}, 1)
}
say "** Test passed!"