From 69837229d74813c807e9d079aaee33aec2c7a4d0 Mon Sep 17 00:00:00 2001 From: Kenta Murata Date: Mon, 26 Oct 2020 18:43:30 +0900 Subject: rational.c: convert a numerator to rational before calling fdiv in Kernel.Rational() (#3702) This makes `Rational(BigDecimal(1), 60) == Rational(1, 60)`. [Bug #16518] --- test/ruby/test_rational.rb | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'test/ruby/test_rational.rb') diff --git a/test/ruby/test_rational.rb b/test/ruby/test_rational.rb index 5bdf5b717e..e89b74d39e 100644 --- a/test/ruby/test_rational.rb +++ b/test/ruby/test_rational.rb @@ -165,6 +165,14 @@ class Rational_Test < Test::Unit::TestCase if (1.0/0).infinite? assert_raise(FloatDomainError){Rational(1.0/0)} end + + bug16518 = "[ruby-core:96942] [Bug #16518]" + cls = Class.new(Numeric) do + def /(y); 42; end + def to_r; 1r; end + def to_int; 1; end + end + assert_equal(1/2r, Rational(cls.new, 2)) end def test_attr -- cgit v1.2.3