diff options
Diffstat (limited to 'test')
-rw-r--r-- | test/ruby/test_array.rb | 15 | ||||
-rw-r--r-- | test/ruby/test_enum.rb | 27 |
2 files changed, 42 insertions, 0 deletions
diff --git a/test/ruby/test_array.rb b/test/ruby/test_array.rb index f4faa9bedc..d7e1c365dd 100644 --- a/test/ruby/test_array.rb +++ b/test/ruby/test_array.rb @@ -1456,6 +1456,21 @@ class TestArray < Test::Unit::TestCase $, = nil end + def test_to_h + kvp = Object.new + def kvp.to_ary + [:obtained, :via_to_ary] + end + array = [ + [:key, :value], + [:ignore_me], + [:ignore, :me, :too], + :ignore_me, + kvp, + ] + assert_equal({key: :value, obtained: :via_to_ary}, array.to_h) + end + def test_uniq a = [] b = a.uniq diff --git a/test/ruby/test_enum.rb b/test/ruby/test_enum.rb index ea873a4069..b86ae274d1 100644 --- a/test/ruby/test_enum.rb +++ b/test/ruby/test_enum.rb @@ -103,6 +103,33 @@ class TestEnumerable < Test::Unit::TestCase assert_equal([1, 2, 3, 1, 2], @obj.to_a) end + def test_to_h + assert_equal({}, @obj.to_h) + obj = Object.new + def obj.each(*args) + yield args + yield [:key, :value] + yield [:ignore_me] + yield [:ignore, :me, :too] + yield :other_key, :other_value + yield :ignore_me + yield :ignore, :me, :too + yield + kvp = Object.new + def kvp.to_ary + [:obtained, :via_to_ary] + end + yield kvp + end + obj.extend Enumerable + assert_equal({ + :hello => :world, + :key => :value, + :other_key => :other_value, + :obtained => :via_to_ary, + }, obj.to_h(:hello, :world)) + end + def test_inject assert_equal(12, @obj.inject {|z, x| z * x }) assert_equal(48, @obj.inject {|z, x| z * 2 + x }) |