summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authormarcandre <marcandre@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2013-12-23 03:42:29 +0000
committermarcandre <marcandre@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2013-12-23 03:42:29 +0000
commit9471f4187f104f7a0942fdccc884e57cf8027d07 (patch)
tree313b0a21a768e3d949de8f3e567bc5fe87bea811 /test
parent573762a7b7bbaf08aa1c27d95a9bcb15bac9ee2e (diff)
* array.c: Have to_h raise on elements that are not key-value pairs [#9239]
* enum.c: ditto git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@44354 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'test')
-rw-r--r--test/ruby/test_array.rb12
-rw-r--r--test/ruby/test_enum.rb18
2 files changed, 20 insertions, 10 deletions
diff --git a/test/ruby/test_array.rb b/test/ruby/test_array.rb
index 526fcabb1b..b648c404ed 100644
--- a/test/ruby/test_array.rb
+++ b/test/ruby/test_array.rb
@@ -1467,12 +1467,18 @@ class TestArray < Test::Unit::TestCase
end
array = [
[:key, :value],
- [:ignore_me],
- [:ignore, :me, :too],
- :ignore_me,
kvp,
]
assert_equal({key: :value, obtained: :via_to_ary}, array.to_h)
+
+ e = assert_raise(TypeError) {
+ [[:first_one, :ok], :not_ok].to_h
+ }
+ assert_equal "wrong element type Symbol at 1 (expected array)", e.message
+ e = assert_raise(ArgumentError) {
+ [[:first_one, :ok], [1, 2], [:not_ok]].to_h
+ }
+ assert_equal "wrong array length at 2 (expected 2, was 1)", e.message
end
def test_uniq
diff --git a/test/ruby/test_enum.rb b/test/ruby/test_enum.rb
index b86ae274d1..3ee6846b33 100644
--- a/test/ruby/test_enum.rb
+++ b/test/ruby/test_enum.rb
@@ -104,17 +104,11 @@ class TestEnumerable < Test::Unit::TestCase
end
def test_to_h
- assert_equal({}, @obj.to_h)
obj = Object.new
def obj.each(*args)
- yield 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]
@@ -128,6 +122,16 @@ class TestEnumerable < Test::Unit::TestCase
:other_key => :other_value,
:obtained => :via_to_ary,
}, obj.to_h(:hello, :world))
+
+ e = assert_raise(TypeError) {
+ obj.to_h(:not_an_array)
+ }
+ assert_equal "wrong element type Symbol (expected array)", e.message
+
+ e = assert_raise(ArgumentError) {
+ obj.to_h([1])
+ }
+ assert_equal "element has wrong array length (expected 2, was 1)", e.message
end
def test_inject