diff options
Diffstat (limited to 'spec/ruby/core/rational')
29 files changed, 73 insertions, 7 deletions
diff --git a/spec/ruby/core/rational/abs_spec.rb b/spec/ruby/core/rational/abs_spec.rb index aed7713058..7272ad2422 100644 --- a/spec/ruby/core/rational/abs_spec.rb +++ b/spec/ruby/core/rational/abs_spec.rb @@ -1,3 +1,4 @@ +require_relative "../../spec_helper" require_relative '../../shared/rational/abs' describe "Rational#abs" do diff --git a/spec/ruby/core/rational/ceil_spec.rb b/spec/ruby/core/rational/ceil_spec.rb index 5b0ca4a9d6..e736351604 100644 --- a/spec/ruby/core/rational/ceil_spec.rb +++ b/spec/ruby/core/rational/ceil_spec.rb @@ -1,3 +1,4 @@ +require_relative "../../spec_helper" require_relative '../../shared/rational/ceil' describe "Rational#ceil" do diff --git a/spec/ruby/core/rational/coerce_spec.rb b/spec/ruby/core/rational/coerce_spec.rb deleted file mode 100644 index 3f78f0bcd6..0000000000 --- a/spec/ruby/core/rational/coerce_spec.rb +++ /dev/null @@ -1,5 +0,0 @@ -require_relative '../../shared/rational/coerce' - -describe "Rational#coerce" do - it_behaves_like :rational_coerce, :coerce -end diff --git a/spec/ruby/core/rational/comparison_spec.rb b/spec/ruby/core/rational/comparison_spec.rb index 9d8e7fd7ee..877069fb8f 100644 --- a/spec/ruby/core/rational/comparison_spec.rb +++ b/spec/ruby/core/rational/comparison_spec.rb @@ -1,3 +1,4 @@ +require_relative "../../spec_helper" require_relative '../../shared/rational/comparison' describe "Rational#<=> when passed a Rational object" do diff --git a/spec/ruby/core/rational/denominator_spec.rb b/spec/ruby/core/rational/denominator_spec.rb index 6214b40587..c2f49b4190 100644 --- a/spec/ruby/core/rational/denominator_spec.rb +++ b/spec/ruby/core/rational/denominator_spec.rb @@ -1,3 +1,4 @@ +require_relative "../../spec_helper" require_relative '../../shared/rational/denominator' describe "Rational#denominator" do diff --git a/spec/ruby/core/rational/div_spec.rb b/spec/ruby/core/rational/div_spec.rb index 1cd8606b90..bee7d01a67 100644 --- a/spec/ruby/core/rational/div_spec.rb +++ b/spec/ruby/core/rational/div_spec.rb @@ -1,3 +1,4 @@ +require_relative "../../spec_helper" require_relative '../../shared/rational/div' describe "Rational#div" do diff --git a/spec/ruby/core/rational/divide_spec.rb b/spec/ruby/core/rational/divide_spec.rb index d8e3a44dc2..14e8c4c195 100644 --- a/spec/ruby/core/rational/divide_spec.rb +++ b/spec/ruby/core/rational/divide_spec.rb @@ -1,3 +1,4 @@ +require_relative "../../spec_helper" require_relative '../../shared/rational/divide' require_relative '../../shared/rational/arithmetic_exception_in_coerce' diff --git a/spec/ruby/core/rational/divmod_spec.rb b/spec/ruby/core/rational/divmod_spec.rb index 6be1f8bd73..7ffdde74f4 100644 --- a/spec/ruby/core/rational/divmod_spec.rb +++ b/spec/ruby/core/rational/divmod_spec.rb @@ -1,3 +1,4 @@ +require_relative "../../spec_helper" require_relative '../../shared/rational/divmod' describe "Rational#divmod when passed a Rational" do diff --git a/spec/ruby/core/rational/equal_value_spec.rb b/spec/ruby/core/rational/equal_value_spec.rb index 8e7acb1354..c6f7f4c6a2 100644 --- a/spec/ruby/core/rational/equal_value_spec.rb +++ b/spec/ruby/core/rational/equal_value_spec.rb @@ -1,3 +1,4 @@ +require_relative "../../spec_helper" require_relative '../../shared/rational/equal_value' describe "Rational#==" do diff --git a/spec/ruby/core/rational/exponent_spec.rb b/spec/ruby/core/rational/exponent_spec.rb index 622cf22782..7e35b4ebc1 100644 --- a/spec/ruby/core/rational/exponent_spec.rb +++ b/spec/ruby/core/rational/exponent_spec.rb @@ -1,3 +1,4 @@ +require_relative "../../spec_helper" require_relative '../../shared/rational/exponent' describe "Rational#**" do diff --git a/spec/ruby/core/rational/fdiv_spec.rb b/spec/ruby/core/rational/fdiv_spec.rb index bfb321abaa..b75f39abd5 100644 --- a/spec/ruby/core/rational/fdiv_spec.rb +++ b/spec/ruby/core/rational/fdiv_spec.rb @@ -1,3 +1,4 @@ +require_relative "../../spec_helper" require_relative '../../shared/rational/fdiv' describe "Rational#fdiv" do diff --git a/spec/ruby/core/rational/floor_spec.rb b/spec/ruby/core/rational/floor_spec.rb index 752a2d8815..70db0499d0 100644 --- a/spec/ruby/core/rational/floor_spec.rb +++ b/spec/ruby/core/rational/floor_spec.rb @@ -1,3 +1,4 @@ +require_relative "../../spec_helper" require_relative '../../shared/rational/floor' describe "Rational#floor" do diff --git a/spec/ruby/core/rational/hash_spec.rb b/spec/ruby/core/rational/hash_spec.rb index 84cd31518a..7e8d30049b 100644 --- a/spec/ruby/core/rational/hash_spec.rb +++ b/spec/ruby/core/rational/hash_spec.rb @@ -1,3 +1,4 @@ +require_relative "../../spec_helper" require_relative '../../shared/rational/hash' describe "Rational#hash" do diff --git a/spec/ruby/core/rational/inspect_spec.rb b/spec/ruby/core/rational/inspect_spec.rb index ef337ef0ce..2cbf6cadc1 100644 --- a/spec/ruby/core/rational/inspect_spec.rb +++ b/spec/ruby/core/rational/inspect_spec.rb @@ -1,3 +1,4 @@ +require_relative "../../spec_helper" require_relative '../../shared/rational/inspect' describe "Rational#inspect" do diff --git a/spec/ruby/core/rational/integer_spec.rb b/spec/ruby/core/rational/integer_spec.rb index 0f9a3bdead..be7476a9dd 100644 --- a/spec/ruby/core/rational/integer_spec.rb +++ b/spec/ruby/core/rational/integer_spec.rb @@ -1,3 +1,4 @@ +require_relative "../../spec_helper" describe "Rational#integer?" do # Guard against the Mathn library guard -> { !defined?(Math.rsqrt) } do diff --git a/spec/ruby/core/rational/magnitude_spec.rb b/spec/ruby/core/rational/magnitude_spec.rb index 878fc8f879..27d9af6a81 100644 --- a/spec/ruby/core/rational/magnitude_spec.rb +++ b/spec/ruby/core/rational/magnitude_spec.rb @@ -1,3 +1,4 @@ +require_relative "../../spec_helper" require_relative '../../shared/rational/abs' describe "Rational#abs" do diff --git a/spec/ruby/core/rational/minus_spec.rb b/spec/ruby/core/rational/minus_spec.rb index 9e0f81556b..a61b62ebe6 100644 --- a/spec/ruby/core/rational/minus_spec.rb +++ b/spec/ruby/core/rational/minus_spec.rb @@ -1,7 +1,51 @@ -require_relative '../../shared/rational/minus' +require_relative '../../spec_helper' require_relative '../../shared/rational/arithmetic_exception_in_coerce' describe "Rational#-" do - it_behaves_like :rational_minus, :- it_behaves_like :rational_arithmetic_exception_in_coerce, :- + + it "calls #coerce on the passed argument with self" do + rational = Rational(3, 4) + obj = mock("Object") + obj.should_receive(:coerce).with(rational).and_return([1, 2]) + + rational - obj + end + + it "calls #- on the coerced Rational with the coerced Object" do + rational = Rational(3, 4) + + coerced_rational = mock("Coerced Rational") + coerced_rational.should_receive(:-).and_return(:result) + + coerced_obj = mock("Coerced Object") + + obj = mock("Object") + obj.should_receive(:coerce).and_return([coerced_rational, coerced_obj]) + + (rational - obj).should == :result + end +end + +describe "Rational#- passed a Rational" do + it "returns the result of subtracting other from self as a Rational" do + (Rational(3, 4) - Rational(0, 1)).should eql(Rational(3, 4)) + (Rational(3, 4) - Rational(1, 4)).should eql(Rational(1, 2)) + + (Rational(3, 4) - Rational(2, 1)).should eql(Rational(-5, 4)) + end +end + +describe "Rational#- passed a Float" do + it "returns the result of subtracting other from self as a Float" do + (Rational(3, 4) - 0.2).should eql(0.55) + (Rational(3, 4) - 2.5).should eql(-1.75) + end +end + +describe "Rational#- passed an Integer" do + it "returns the result of subtracting other from self as a Rational" do + (Rational(3, 4) - 1).should eql(Rational(-1, 4)) + (Rational(3, 4) - 2).should eql(Rational(-5, 4)) + end end diff --git a/spec/ruby/core/rational/modulo_spec.rb b/spec/ruby/core/rational/modulo_spec.rb index c43f7788e3..7a60c176ac 100644 --- a/spec/ruby/core/rational/modulo_spec.rb +++ b/spec/ruby/core/rational/modulo_spec.rb @@ -1,3 +1,4 @@ +require_relative "../../spec_helper" require_relative '../../shared/rational/modulo' describe "Rational#%" do diff --git a/spec/ruby/core/rational/multiply_spec.rb b/spec/ruby/core/rational/multiply_spec.rb index ea644074e9..7413376bb1 100644 --- a/spec/ruby/core/rational/multiply_spec.rb +++ b/spec/ruby/core/rational/multiply_spec.rb @@ -1,3 +1,4 @@ +require_relative "../../spec_helper" require_relative '../../shared/rational/multiply' require_relative '../../shared/rational/arithmetic_exception_in_coerce' diff --git a/spec/ruby/core/rational/numerator_spec.rb b/spec/ruby/core/rational/numerator_spec.rb index 85b2ed9e86..6f9a9c0e3b 100644 --- a/spec/ruby/core/rational/numerator_spec.rb +++ b/spec/ruby/core/rational/numerator_spec.rb @@ -1,3 +1,4 @@ +require_relative "../../spec_helper" require_relative '../../shared/rational/numerator' describe "Rational#numerator" do diff --git a/spec/ruby/core/rational/plus_spec.rb b/spec/ruby/core/rational/plus_spec.rb index e7ef3a8f92..67c0ff63d2 100644 --- a/spec/ruby/core/rational/plus_spec.rb +++ b/spec/ruby/core/rational/plus_spec.rb @@ -1,3 +1,4 @@ +require_relative "../../spec_helper" require_relative '../../shared/rational/plus' require_relative '../../shared/rational/arithmetic_exception_in_coerce' diff --git a/spec/ruby/core/rational/quo_spec.rb b/spec/ruby/core/rational/quo_spec.rb index 119aca1955..181f091f7c 100644 --- a/spec/ruby/core/rational/quo_spec.rb +++ b/spec/ruby/core/rational/quo_spec.rb @@ -1,3 +1,4 @@ +require_relative "../../spec_helper" require_relative '../../shared/rational/divide' describe "Rational#quo" do diff --git a/spec/ruby/core/rational/remainder_spec.rb b/spec/ruby/core/rational/remainder_spec.rb index 0f9442f6f5..1c0035e5f4 100644 --- a/spec/ruby/core/rational/remainder_spec.rb +++ b/spec/ruby/core/rational/remainder_spec.rb @@ -1,3 +1,4 @@ +require_relative "../../spec_helper" require_relative '../../shared/rational/remainder' describe "Rational#remainder" do diff --git a/spec/ruby/core/rational/to_f_spec.rb b/spec/ruby/core/rational/to_f_spec.rb index 15bf1e88dc..a9cd1be3b5 100644 --- a/spec/ruby/core/rational/to_f_spec.rb +++ b/spec/ruby/core/rational/to_f_spec.rb @@ -1,3 +1,4 @@ +require_relative "../../spec_helper" require_relative '../../shared/rational/to_f' describe "Rational#to_f" do diff --git a/spec/ruby/core/rational/to_i_spec.rb b/spec/ruby/core/rational/to_i_spec.rb index 3deb3664e1..22cf02b4da 100644 --- a/spec/ruby/core/rational/to_i_spec.rb +++ b/spec/ruby/core/rational/to_i_spec.rb @@ -1,3 +1,4 @@ +require_relative "../../spec_helper" require_relative '../../shared/rational/to_i' describe "Rational#to_i" do diff --git a/spec/ruby/core/rational/to_r_spec.rb b/spec/ruby/core/rational/to_r_spec.rb index cc704c965e..03f204daf1 100644 --- a/spec/ruby/core/rational/to_r_spec.rb +++ b/spec/ruby/core/rational/to_r_spec.rb @@ -1,3 +1,4 @@ +require_relative "../../spec_helper" require_relative '../../shared/rational/to_r' describe "Rational#to_r" do diff --git a/spec/ruby/core/rational/to_s_spec.rb b/spec/ruby/core/rational/to_s_spec.rb index c5c419787c..5d90c7d80b 100644 --- a/spec/ruby/core/rational/to_s_spec.rb +++ b/spec/ruby/core/rational/to_s_spec.rb @@ -1,3 +1,4 @@ +require_relative "../../spec_helper" require_relative '../../shared/rational/to_s' describe "Rational#to_s" do diff --git a/spec/ruby/core/rational/truncate_spec.rb b/spec/ruby/core/rational/truncate_spec.rb index 4e72339752..47a7cdf17c 100644 --- a/spec/ruby/core/rational/truncate_spec.rb +++ b/spec/ruby/core/rational/truncate_spec.rb @@ -1,3 +1,4 @@ +require_relative "../../spec_helper" require_relative '../../shared/rational/truncate' describe "Rational#truncate" do diff --git a/spec/ruby/core/rational/zero_spec.rb b/spec/ruby/core/rational/zero_spec.rb index e6dd751922..af7fb391ac 100644 --- a/spec/ruby/core/rational/zero_spec.rb +++ b/spec/ruby/core/rational/zero_spec.rb @@ -1,3 +1,4 @@ +require_relative "../../spec_helper" describe "Rational#zero?" do it "returns true if the numerator is 0" do Rational(0,26).zero?.should be_true |