diff options
Diffstat (limited to 'ruby_1_8_5/test/ruby/test_hash.rb')
-rw-r--r-- | ruby_1_8_5/test/ruby/test_hash.rb | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/ruby_1_8_5/test/ruby/test_hash.rb b/ruby_1_8_5/test/ruby/test_hash.rb new file mode 100644 index 0000000000..5bec012bf8 --- /dev/null +++ b/ruby_1_8_5/test/ruby/test_hash.rb @@ -0,0 +1,74 @@ +require 'test/unit' + +class TestHash < Test::Unit::TestCase + def test_hash + x = {1=>2, 2=>4, 3=>6} + y = {1, 2, 2, 4, 3, 6} + + assert_equal(2, x[1]) + + assert(begin + for k,v in y + raise if k*2 != v + end + true + rescue + false + end) + + assert_equal(3, x.length) + assert(x.has_key?(1)) + assert(x.has_value?(4)) + assert_equal([4,6], x.values_at(2,3)) + assert_equal({1=>2, 2=>4, 3=>6}, x) + + z = y.keys.join(":") + assert_equal("1:2:3", z) + + z = y.values.join(":") + assert_equal("2:4:6", z) + assert_equal(x, y) + + y.shift + assert_equal(2, y.length) + + z = [1,2] + y[z] = 256 + assert_equal(256, y[z]) + + x = Hash.new(0) + x[1] = 1 + assert_equal(1, x[1]) + assert_equal(0, x[2]) + + x = Hash.new([]) + assert_equal([], x[22]) + assert_same(x[22], x[22]) + + x = Hash.new{[]} + assert_equal([], x[22]) + assert_not_same(x[22], x[22]) + + x = Hash.new{|h,k| z = k; h[k] = k*2} + z = 0 + assert_equal(44, x[22]) + assert_equal(22, z) + z = 0 + assert_equal(44, x[22]) + assert_equal(0, z) + x.default = 5 + assert_equal(5, x[23]) + + x = Hash.new + def x.default(k) + $z = k + self[k] = k*2 + end + $z = 0 + assert_equal(44, x[22]) + assert_equal(22, $z) + $z = 0 + assert_equal(44, x[22]) + assert_equal(0, $z) + end +end |