mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* complex.c (nucomp_s_canonicalize_internal): does no apply
canonicalization rule anymore. * rational.c (nurat_s_canonicalize_internal(_no_reduce)?): ditto. * complex.c: removed class method new! and new. * rational.c: ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@19483 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
455fbd2373
commit
8b54d5812c
5 changed files with 76 additions and 268 deletions
|
@ -13,18 +13,14 @@ class Rational_Test < Test::Unit::TestCase
|
|||
end
|
||||
|
||||
def test_ratsub
|
||||
c = RationalSub.__send__(:new, 1)
|
||||
cc = RationalSub.__send__(:convert, 1)
|
||||
c = RationalSub.__send__(:convert, 1)
|
||||
|
||||
assert_kind_of(Numeric, c)
|
||||
assert_kind_of(Numeric, cc)
|
||||
|
||||
if @unify
|
||||
assert_instance_of(Fixnum, c)
|
||||
assert_instance_of(Fixnum, cc)
|
||||
else
|
||||
assert_instance_of(RationalSub, c)
|
||||
assert_instance_of(RationalSub, cc)
|
||||
|
||||
c2 = c + 1
|
||||
assert_instance_of(RationalSub, c2)
|
||||
|
@ -81,150 +77,53 @@ class Rational_Test < Test::Unit::TestCase
|
|||
assert_instance_of(String, c.to_s)
|
||||
end
|
||||
|
||||
def test_new_bang # no unify & no reduce
|
||||
assert_instance_of(Rational, Rational.__send__(:new!, 2,1))
|
||||
assert_equal([2,1], Rational.__send__(:new!, 2,1).
|
||||
instance_eval{[numerator, denominator]})
|
||||
assert_equal([2,4], Rational.__send__(:new!, 2,4).
|
||||
instance_eval{[numerator, denominator]})
|
||||
assert_equal([-2,4], Rational.__send__(:new!, -2,4).
|
||||
instance_eval{[numerator, denominator]})
|
||||
assert_equal([-2,4], Rational.__send__(:new!, 2,-4).
|
||||
instance_eval{[numerator, denominator]})
|
||||
assert_equal([2,4], Rational.__send__(:new!, -2,-4).
|
||||
instance_eval{[numerator, denominator]})
|
||||
|
||||
# to_i
|
||||
assert_equal([2,1], Rational.__send__(:new!, Rational(2)).
|
||||
instance_eval{[numerator, denominator]})
|
||||
assert_equal([2,3], Rational.__send__(:new!, Rational(2), Rational(3)).
|
||||
instance_eval{[numerator, denominator]})
|
||||
assert_equal([2,3], Rational.__send__(:new!, 2, Rational(3)).
|
||||
instance_eval{[numerator, denominator]})
|
||||
|
||||
assert_equal([1,1], Rational.__send__(:new!, 1.1).
|
||||
instance_eval{[numerator, denominator]})
|
||||
assert_equal([-1,1], Rational.__send__(:new!, -1.1).
|
||||
instance_eval{[numerator, denominator]})
|
||||
assert_equal([1,1], Rational.__send__(:new!, '1').
|
||||
instance_eval{[numerator, denominator]})
|
||||
assert_equal([0,1], Rational.__send__(:new!, nil).
|
||||
instance_eval{[numerator, denominator]})
|
||||
|
||||
assert_raise(ZeroDivisionError){Rational.__send__(:new!, 1, 0)}
|
||||
end
|
||||
|
||||
=begin
|
||||
def test_reduce
|
||||
if @unify
|
||||
assert_instance_of(Fixnum, Rational.__send__(:reduce, 2,1))
|
||||
else
|
||||
assert_instance_of(Rational, Rational.__send__(:reduce, 2,1))
|
||||
assert_instance_of(Rational, Rational.__send__(:reduce, 2,1))
|
||||
end
|
||||
assert_equal([2,1], Rational.__send__(:reduce, 2,1).
|
||||
instance_eval{[numerator, denominator]})
|
||||
assert_equal([1,2], Rational.__send__(:reduce, 2,4).
|
||||
instance_eval{[numerator, denominator]})
|
||||
assert_equal([-1,2], Rational.__send__(:reduce, -2,4).
|
||||
instance_eval{[numerator, denominator]})
|
||||
assert_equal([-1,2], Rational.__send__(:reduce, 2,-4).
|
||||
instance_eval{[numerator, denominator]})
|
||||
assert_equal([1,2], Rational.__send__(:reduce, -2,-4).
|
||||
instance_eval{[numerator, denominator]})
|
||||
|
||||
assert_raise(ArgumentError){Rational.__send__(:reduce, Rational(1,2),2)}
|
||||
assert_raise(ArgumentError){Rational.__send__(:reduce, 2,Rational(1,2))}
|
||||
assert_raise(ArgumentError){Rational.
|
||||
__send__(:reduce, Rational(1,2),Rational(1,2))}
|
||||
|
||||
assert_raise(ArgumentError){Rational.__send__(:reduce, 1.1)}
|
||||
assert_raise(ArgumentError){Rational.__send__(:reduce, -1.1)}
|
||||
assert_raise(ArgumentError){Rational.__send__(:reduce, '1')}
|
||||
assert_raise(ArgumentError){Rational.__send__(:reduce, nil)}
|
||||
end
|
||||
=end
|
||||
|
||||
def test_new
|
||||
if @unify
|
||||
assert_instance_of(Fixnum, Rational.__send__(:new, 2,1))
|
||||
else
|
||||
assert_instance_of(Rational, Rational.__send__(:new, 2,1))
|
||||
assert_equal([2,1], Rational.__send__(:new, 2,1).
|
||||
instance_eval{[numerator, denominator]})
|
||||
end
|
||||
assert_equal([1,2], Rational.__send__(:new, 2,4).
|
||||
instance_eval{[numerator, denominator]})
|
||||
assert_equal([-1,2], Rational.__send__(:new, -2,4).
|
||||
instance_eval{[numerator, denominator]})
|
||||
assert_equal([-1,2], Rational.__send__(:new, 2,-4).
|
||||
instance_eval{[numerator, denominator]})
|
||||
assert_equal([1,2], Rational.__send__(:new, -2,-4).
|
||||
instance_eval{[numerator, denominator]})
|
||||
|
||||
assert_raise(ArgumentError){Rational.__send__(:new, Rational(1,2),2)}
|
||||
assert_raise(ArgumentError){Rational.__send__(:new, 2,Rational(1,2))}
|
||||
assert_raise(ArgumentError){Rational.__send__(:new, Rational(1,2),Rational(1,2))}
|
||||
|
||||
assert_raise(ArgumentError){Rational.__send__(:new, 1.1)}
|
||||
assert_raise(ArgumentError){Rational.__send__(:new, -1.1)}
|
||||
assert_raise(ArgumentError){Rational.__send__(:new, '1')}
|
||||
assert_raise(ArgumentError){Rational.__send__(:new, nil)}
|
||||
=begin
|
||||
assert_raise(ArgumentError){Rational.__send__(:new, Rational(1))}
|
||||
if @complex
|
||||
assert_raise(ArgumentError){Rational.__send__(:new, Complex(1))}
|
||||
end
|
||||
=end
|
||||
end
|
||||
|
||||
def test_conv
|
||||
c = Rational(0,1)
|
||||
assert_equal(Rational.__send__(:new, 0,1), c)
|
||||
assert_equal(Rational(0,1), c)
|
||||
|
||||
c = Rational(2**32, 2**32)
|
||||
assert_equal(Rational.__send__(:new, 2**32,2**32), c)
|
||||
assert_equal(Rational(2**32,2**32), c)
|
||||
assert_equal([1,1], [c.numerator,c.denominator])
|
||||
|
||||
c = Rational(-2**32, 2**32)
|
||||
assert_equal(Rational.__send__(:new, -2**32,2**32), c)
|
||||
assert_equal(Rational(-2**32,2**32), c)
|
||||
assert_equal([-1,1], [c.numerator,c.denominator])
|
||||
|
||||
c = Rational(2**32, -2**32)
|
||||
assert_equal(Rational.__send__(:new, 2**32,-2**32), c)
|
||||
assert_equal(Rational(2**32,-2**32), c)
|
||||
assert_equal([-1,1], [c.numerator,c.denominator])
|
||||
|
||||
c = Rational(-2**32, -2**32)
|
||||
assert_equal(Rational.__send__(:new, -2**32,-2**32), c)
|
||||
assert_equal(Rational(-2**32,-2**32), c)
|
||||
assert_equal([1,1], [c.numerator,c.denominator])
|
||||
|
||||
c = Rational(Rational(1,2),2)
|
||||
assert_equal(Rational.__send__(:new, 1,4), c)
|
||||
assert_equal(Rational(1,4), c)
|
||||
|
||||
c = Rational(2,Rational(1,2))
|
||||
assert_equal(Rational.__send__(:new, 4), c)
|
||||
assert_equal(Rational(4), c)
|
||||
|
||||
c = Rational(Rational(1,2),Rational(1,2))
|
||||
assert_equal(Rational.__send__(:new, 1), c)
|
||||
assert_equal(Rational(1), c)
|
||||
|
||||
if @complex && !@keiju
|
||||
c = Rational(Complex(1,2),2)
|
||||
assert_equal(Complex.__send__(:new, Rational(1,2),1), c)
|
||||
assert_equal(Complex(Rational(1,2),1), c)
|
||||
|
||||
c = Rational(2,Complex(1,2))
|
||||
assert_equal(Complex.__send__(:new, Rational(2,5),Rational(-4,5)), c)
|
||||
assert_equal(Complex(Rational(2,5),Rational(-4,5)), c)
|
||||
|
||||
c = Rational(Complex(1,2),Complex(1,2))
|
||||
assert_equal(Rational.__send__(:new, 1), c)
|
||||
assert_equal(Rational(1), c)
|
||||
end
|
||||
|
||||
assert_equal(Rational.__send__(:new, 3),Rational(3))
|
||||
assert_equal(Rational.__send__(:new, 1),Rational(3,3))
|
||||
assert_equal(Rational(3),Rational(3))
|
||||
assert_equal(Rational(1),Rational(3,3))
|
||||
assert_equal(3.3.to_r,Rational(3.3))
|
||||
assert_equal(1,Rational(3.3,3.3))
|
||||
assert_equal(Rational.__send__(:new, 3),Rational('3'))
|
||||
assert_equal(Rational.__send__(:new, 1),Rational('3.0','3.0'))
|
||||
assert_equal(Rational.__send__(:new, 1),Rational('3/3','3/3'))
|
||||
assert_equal(Rational(3),Rational('3'))
|
||||
assert_equal(Rational(1),Rational('3.0','3.0'))
|
||||
assert_equal(Rational(1),Rational('3/3','3/3'))
|
||||
assert_raise(ArgumentError){Rational(nil)}
|
||||
assert_raise(ArgumentError){Rational('')}
|
||||
assert_raise(ArgumentError){Rational(Object.new)}
|
||||
|
@ -243,22 +142,22 @@ class Rational_Test < Test::Unit::TestCase
|
|||
assert_equal(4, c.numerator)
|
||||
assert_equal(5, c.denominator)
|
||||
|
||||
c = Rational.__send__(:new, 4)
|
||||
c = Rational(4)
|
||||
|
||||
assert_equal(4, c.numerator)
|
||||
assert_equal(1, c.denominator)
|
||||
|
||||
c = Rational.__send__(:new, 4,5)
|
||||
c = Rational(4,5)
|
||||
|
||||
assert_equal(4, c.numerator)
|
||||
assert_equal(5, c.denominator)
|
||||
|
||||
c = Rational.__send__(:new!, 4)
|
||||
c = Rational(4)
|
||||
|
||||
assert_equal(4, c.numerator)
|
||||
assert_equal(1, c.denominator)
|
||||
|
||||
c = Rational.__send__(:new!, 4,5)
|
||||
c = Rational(4,5)
|
||||
|
||||
assert_equal(4, c.numerator)
|
||||
assert_equal(5, c.denominator)
|
||||
|
@ -790,16 +689,7 @@ class Rational_Test < Test::Unit::TestCase
|
|||
|
||||
def test_equal
|
||||
assert(Rational(1,1) == Rational(1))
|
||||
assert(Rational(1,1) == Rational.__send__(:new, 1))
|
||||
assert(Rational(1,1) == Rational.__send__(:new, 1,1))
|
||||
assert(Rational(1,1) == Rational.__send__(:new!, 1))
|
||||
assert(Rational(1,1) == Rational.__send__(:new!, 1,1))
|
||||
|
||||
assert(Rational(-1,1) == Rational(-1))
|
||||
assert(Rational(-1,1) == Rational.__send__(:new, -1))
|
||||
assert(Rational(-1,1) == Rational.__send__(:new, -1,1))
|
||||
assert(Rational(-1,1) == Rational.__send__(:new!, -1))
|
||||
assert(Rational(-1,1) == Rational.__send__(:new!, -1,1))
|
||||
|
||||
assert_equal(false, Rational(2,1) == Rational(1))
|
||||
assert_equal(true, Rational(2,1) != Rational(1))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue