summaryrefslogtreecommitdiff
path: root/test/ruby/test_enum.rb
diff options
context:
space:
mode:
authormarcandre <marcandre@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2013-10-23 15:10:48 +0000
committermarcandre <marcandre@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2013-10-23 15:10:48 +0000
commitdc215dcd9f96620b7c06a25a741d13b19c2f130b (patch)
tree760deacf8def453cd813b896dbac2b2927f85cf0 /test/ruby/test_enum.rb
parent57e52dea773cd51ed943ae1df142f65b725103a3 (diff)
* 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.rb27
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 })