commit 0c7ddce2ce07695f745a08ba04831f7845670d68 Author: Kenta Murata Date: Mon Jun 13 23:52:52 2016 +0900 Add assertions for Kernel.Rational diff --git a/test/ruby/test_rational.rb b/test/ruby/test_rational.rb index 07d0ae5..68e3285 100644 --- a/test/ruby/test_rational.rb +++ b/test/ruby/test_rational.rb @@ -1,10 +1,34 @@ # frozen_string_literal: false require 'test/unit' +require '-test-/integer' class RationalSub < Rational; end class Rational_Test < Test::Unit::TestCase + def test_new + assert_raise(TypeError) { Rational(Object.new) } + assert_raise(TypeError) { Rational(1, Object.new) } + + class << (o = Object.new) + alias to_int object_id + end + + assert_raise(TypeError) { Rational(o) } + assert_raise(TypeError) { Rational(1, o) } + + class << (o = Object.new) + def to_r + 1/2r + end + end + + assert_equal(1/2r, Rational(o)) + assert_raise(TypeError) { Rational(1, o) } + + Rational(Bug::Integer::MyInteger.new) + end + def test_ratsub c = RationalSub.__send__(:convert, 1)