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