[ruby/date] Fix comparison with Float::INFINITY

Fixes [Bug #17945]

https://github.com/ruby/date/commit/953d907238
This commit is contained in:
Jeremy Evans 2021-06-15 10:39:42 -07:00 коммит произвёл Nobuyoshi Nakada
Родитель 49ba7cd259
Коммит 8065670cfb
2 изменённых файлов: 14 добавлений и 0 удалений

Просмотреть файл

@ -30,6 +30,8 @@ class Date
def <=>(other)
case other
when Infinity; return d <=> other.d
when Float::INFINITY; return d <=> 1
when -Float::INFINITY; return d <=> -1
when Numeric; return d
else
begin

Просмотреть файл

@ -163,4 +163,16 @@ class TestDate < Test::Unit::TestCase
assert_equal(1, d2 <=> d1)
end
def test_infinity_comparison
assert_equal(0, Float::INFINITY <=> Date::Infinity.new)
assert_equal(0, Date::Infinity.new <=> Float::INFINITY)
assert_equal(0, -Float::INFINITY <=> -Date::Infinity.new)
assert_equal(0, -Date::Infinity.new <=> -Float::INFINITY)
assert_equal(1, Float::INFINITY <=> -Date::Infinity.new)
assert_equal(1, Date::Infinity.new <=> -Float::INFINITY)
assert_equal(-1, -Float::INFINITY <=> Date::Infinity.new)
assert_equal(-1, -Date::Infinity.new <=> Float::INFINITY)
end
end