diff options
Diffstat (limited to 'spec/ruby/core/rational/divmod_spec.rb')
| -rw-r--r-- | spec/ruby/core/rational/divmod_spec.rb | 37 |
1 files changed, 33 insertions, 4 deletions
diff --git a/spec/ruby/core/rational/divmod_spec.rb b/spec/ruby/core/rational/divmod_spec.rb index 6be1f8bd73..68f8ecfd2d 100644 --- a/spec/ruby/core/rational/divmod_spec.rb +++ b/spec/ruby/core/rational/divmod_spec.rb @@ -1,13 +1,42 @@ -require_relative '../../shared/rational/divmod' +require_relative "../../spec_helper" describe "Rational#divmod when passed a Rational" do - it_behaves_like :rational_divmod_rat, :divmod + it "returns the quotient as Integer and the remainder as Rational" do + Rational(7, 4).divmod(Rational(1, 2)).should.eql?([3, Rational(1, 4)]) + Rational(7, 4).divmod(Rational(-1, 2)).should.eql?([-4, Rational(-1, 4)]) + Rational(0, 4).divmod(Rational(4, 3)).should.eql?([0, Rational(0, 1)]) + + Rational(bignum_value, 4).divmod(Rational(4, 3)).should.eql?([3458764513820540928, Rational(0, 1)]) + end + + it "raises a ZeroDivisionError when passed a Rational with a numerator of 0" do + -> { Rational(7, 4).divmod(Rational(0, 3)) }.should.raise(ZeroDivisionError) + end end describe "Rational#divmod when passed an Integer" do - it_behaves_like :rational_divmod_int, :divmod + it "returns the quotient as Integer and the remainder as Rational" do + Rational(7, 4).divmod(2).should.eql?([0, Rational(7, 4)]) + Rational(7, 4).divmod(-2).should.eql?([-1, Rational(-1, 4)]) + + Rational(bignum_value, 4).divmod(3).should.eql?([1537228672809129301, Rational(1, 1)]) + end + + it "raises a ZeroDivisionError when passed 0" do + -> { Rational(7, 4).divmod(0) }.should.raise(ZeroDivisionError) + end end describe "Rational#divmod when passed a Float" do - it_behaves_like :rational_divmod_float, :divmod + it "returns the quotient as Integer and the remainder as Float" do + Rational(7, 4).divmod(0.5).should.eql?([3, 0.25]) + end + + it "returns the quotient as Integer and the remainder as Float" do + Rational(7, 4).divmod(-0.5).should.eql?([-4, -0.25]) + end + + it "raises a ZeroDivisionError when passed 0" do + -> { Rational(7, 4).divmod(0.0) }.should.raise(ZeroDivisionError) + end end |
