diff options
author | marcandre <marcandre@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2013-10-23 15:10:48 +0000 |
---|---|---|
committer | marcandre <marcandre@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2013-10-23 15:10:48 +0000 |
commit | dc215dcd9f96620b7c06a25a741d13b19c2f130b (patch) | |
tree | 760deacf8def453cd813b896dbac2b2927f85cf0 /test/ruby/test_enum.rb | |
parent | 57e52dea773cd51ed943ae1df142f65b725103a3 (diff) | |
download | ruby-dc215dcd9f96620b7c06a25a741d13b19c2f130b.tar.gz |
* array.c: Add Array#to_h [Feature #7292]
* enum.c: Add Enumerable#to_h
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@43401 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'test/ruby/test_enum.rb')
-rw-r--r-- | test/ruby/test_enum.rb | 27 |
1 files changed, 27 insertions, 0 deletions
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 }) |