mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
Ensure that the comparison succeeded [Bug #17205]
This commit is contained in:
parent
4b41ee154f
commit
89ca842dcc
2 changed files with 24 additions and 1 deletions
|
@ -1518,7 +1518,9 @@ flo_cmp(VALUE x, VALUE y)
|
|||
MJIT_FUNC_EXPORTED int
|
||||
rb_float_cmp(VALUE x, VALUE y)
|
||||
{
|
||||
return NUM2INT(flo_cmp(x, y));
|
||||
VALUE c = flo_cmp(x, y);
|
||||
if (NIL_P(c)) rb_cmperr(x, y);
|
||||
return NUM2INT(c);
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
@ -1648,6 +1648,13 @@ class TestArray < Test::Unit::TestCase
|
|||
TEST
|
||||
end
|
||||
|
||||
def test_sort_uncomparable
|
||||
assert_raise(ArgumentError) {[1, Float::NAN].sort}
|
||||
assert_raise(ArgumentError) {[1.0, Float::NAN].sort}
|
||||
assert_raise(ArgumentError) {[Float::NAN, 1].sort}
|
||||
assert_raise(ArgumentError) {[Float::NAN, 1.0].sort}
|
||||
end
|
||||
|
||||
def test_to_a
|
||||
a = @cls[ 1, 2, 3 ]
|
||||
a_id = a.__id__
|
||||
|
@ -1768,6 +1775,13 @@ class TestArray < Test::Unit::TestCase
|
|||
assert_same(obj, [obj, 1.0].min)
|
||||
end
|
||||
|
||||
def test_min_uncomparable
|
||||
assert_raise(ArgumentError) {[1, Float::NAN].min}
|
||||
assert_raise(ArgumentError) {[1.0, Float::NAN].min}
|
||||
assert_raise(ArgumentError) {[Float::NAN, 1].min}
|
||||
assert_raise(ArgumentError) {[Float::NAN, 1.0].min}
|
||||
end
|
||||
|
||||
def test_max
|
||||
assert_equal(1, [1].max)
|
||||
assert_equal(3, [1, 2, 3, 1, 2].max)
|
||||
|
@ -1791,6 +1805,13 @@ class TestArray < Test::Unit::TestCase
|
|||
assert_same(obj, [obj, 1.0].max)
|
||||
end
|
||||
|
||||
def test_max_uncomparable
|
||||
assert_raise(ArgumentError) {[1, Float::NAN].max}
|
||||
assert_raise(ArgumentError) {[1.0, Float::NAN].max}
|
||||
assert_raise(ArgumentError) {[Float::NAN, 1].max}
|
||||
assert_raise(ArgumentError) {[Float::NAN, 1.0].max}
|
||||
end
|
||||
|
||||
def test_minmax
|
||||
assert_equal([3, 3], [3].minmax)
|
||||
assert_equal([1, 3], [1, 2, 3, 1, 2].minmax)
|
||||
|
|
Loading…
Reference in a new issue