diff --git a/test/ruby/test_complex.rb b/test/ruby/test_complex.rb index b2894610f7..e364c97d9a 100644 --- a/test/ruby/test_complex.rb +++ b/test/ruby/test_complex.rb @@ -517,6 +517,23 @@ class Complex_Test < Test::Unit::TestCase assert_equal([Complex(2),Complex(1)], Complex(1).coerce(Complex(2))) end + class ObjectX + def + (x) Rational(1) end + alias - + + alias * + + alias / + + alias quo + + alias ** + + def coerce(x) [x, Complex(1)] end + end + + def test_coerce2 + x = ObjectX.new + %w(+ - * / quo **).each do |op| + assert_kind_of(Numeric, Complex(1).__send__(op, x)) + end + end + def test_unify if @unify assert_instance_of(Fixnum, Complex(1,2) + Complex(-1,-2)) @@ -1082,6 +1099,7 @@ class Complex_Test < Test::Unit::TestCase assert_equal(Complex(1), 1 ** Complex(1)) end assert_equal('-1.0-0.0i', Complex(-1.0, -0.0).to_s) + assert_in_delta(Math::PI, Complex(-0.0).arg, 0.001) end def test_known_bug diff --git a/test/ruby/test_rational.rb b/test/ruby/test_rational.rb index cf88617990..8b992350ab 100644 --- a/test/ruby/test_rational.rb +++ b/test/ruby/test_rational.rb @@ -723,6 +723,26 @@ class Rational_Test < Test::Unit::TestCase assert_equal([Rational(2),Rational(1)], Rational(1).coerce(Rational(2))) end + class ObjectX + def + (x) Rational(1) end + alias - + + alias * + + alias / + + alias quo + + alias div + + alias % + + alias remainder + + alias ** + + def coerce(x) [x, Rational(1)] end + end + + def test_coerce2 + x = ObjectX.new + %w(+ - * / quo div % remainder **).each do |op| + assert_kind_of(Numeric, Rational(1).__send__(op, x)) + end + end + def test_unify if @unify assert_instance_of(Fixnum, Rational(1,2) + Rational(1,2))