summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/ruby/test_array.rb15
-rw-r--r--test/ruby/test_enum.rb27
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 })