diff options
author | marcandre <marcandre@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2013-01-30 06:00:24 +0000 |
---|---|---|
committer | marcandre <marcandre@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2013-01-30 06:00:24 +0000 |
commit | 20c0fb69d65f20d42caf980de042396370dd0ba4 (patch) | |
tree | 6e4483a32181bc4e10dea1e42948ecdb920890c6 /test | |
parent | 00d6bb5108209329996c8062ce3e947489c38ea7 (diff) |
* array.c (rb_ary_bsearch): Raise TypeError on bad return from block
* range.c (range_bsearch): ditto
* test/ruby/test_array.rb (class): Test for above
* test/ruby/test_range.rb (class): ditto
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38986 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'test')
-rw-r--r-- | test/ruby/test_array.rb | 12 | ||||
-rw-r--r-- | test/ruby/test_range.rb | 7 |
2 files changed, 14 insertions, 5 deletions
diff --git a/test/ruby/test_array.rb b/test/ruby/test_array.rb index ae0f76c970..3ab0895f8c 100644 --- a/test/ruby/test_array.rb +++ b/test/ruby/test_array.rb @@ -2249,6 +2249,13 @@ class TestArray < Test::Unit::TestCase assert_raise(ArgumentError) { a.rotate!(1, 1) } end + def test_bsearch_typechecks_return_values + assert_raise(TypeError) do + [1, 2, 42, 100, 666].bsearch{ "not ok" } + end + assert_equal [1, 2, 42, 100, 666].bsearch{}, [1, 2, 42, 100, 666].bsearch{false} + end + def test_bsearch_with_no_block enum = [1, 2, 42, 100, 666].bsearch assert_nil enum.size @@ -2276,9 +2283,4 @@ class TestArray < Test::Unit::TestCase assert_include([4, 7], a.bsearch {|x| (2**100).coerce((1 - x / 4) * (2**100)).first }) end - - def test_bsearch_undefined - a = [0, 4, 7, 10, 12] - assert_equal(nil, a.bsearch {|x| "foo" }) # undefined behavior - end end diff --git a/test/ruby/test_range.rb b/test/ruby/test_range.rb index d859969ded..1f370cfaee 100644 --- a/test/ruby/test_range.rb +++ b/test/ruby/test_range.rb @@ -357,6 +357,13 @@ class TestRange < Test::Unit::TestCase assert_equal 42, (1..42).each.size end + def test_bsearch_typechecks_return_values + assert_raise(TypeError) do + (1..42).bsearch{ "not ok" } + end + assert_equal (1..42).bsearch{}, (1..42).bsearch{false} + end + def test_bsearch_with_no_block enum = (42...666).bsearch assert_nil enum.size |