#!/usr/bin/ruby class Example { has :hash = (a => 1, b => 2) has *array = (5, 6, 7, 8) has t = 99 method get_hash { hash } method get_array { array } method set_hash_key(key, value) { hash{key} = value } method set_array_index(index, value) { array[index] = value } } var obj1 = Example() var obj2 = Example() obj1.set_hash_key(:a, 13) obj2.t = 42 assert_eq(obj1.get_hash, Hash(a => 13, b => 2)) assert_eq(obj2.get_hash, Hash(a => 1, b => 2)) obj2.set_hash_key(b => 17) assert_eq(obj1.get_hash, Hash(a => 13, b => 2)) assert_eq(obj2.get_hash, Hash(a => 1, b => 17)) assert_eq(obj1.t, 99) assert_eq(obj2.t, 42) assert_eq(obj1.hash, obj1.get_hash) assert_eq(obj2.hash, obj2.get_hash) obj1.set_array_index(1, 42) assert_eq(obj1.get_array, [5, 42, 7, 8]) assert_eq(obj2.get_array, [5, 6, 7, 8]) obj2.set_array_index(2, -1) assert_eq(obj1.array, [5, 42, 7, 8]) assert_eq(obj2.array, [5, 6, -1, 8]) assert_eq(obj1.array, obj1.get_array) assert_eq(obj2.array, obj2.get_array) say "** Test passed!"