diff options
Diffstat (limited to 'spec/ruby/core/float/shared')
| -rw-r--r-- | spec/ruby/core/float/shared/abs.rb | 21 | ||||
| -rw-r--r-- | spec/ruby/core/float/shared/arithmetic_exception_in_coerce.rb | 11 | ||||
| -rw-r--r-- | spec/ruby/core/float/shared/comparison_exception_in_coerce.rb | 11 | ||||
| -rw-r--r-- | spec/ruby/core/float/shared/to_i.rb | 14 |
4 files changed, 57 insertions, 0 deletions
diff --git a/spec/ruby/core/float/shared/abs.rb b/spec/ruby/core/float/shared/abs.rb new file mode 100644 index 0000000000..ab21480e24 --- /dev/null +++ b/spec/ruby/core/float/shared/abs.rb @@ -0,0 +1,21 @@ +require_relative '../../../spec_helper' + +describe :float_abs, shared: true do + it "returns the absolute value" do + -99.1.send(@method).should be_close(99.1, TOLERANCE) + 4.5.send(@method).should be_close(4.5, TOLERANCE) + 0.0.send(@method).should be_close(0.0, TOLERANCE) + end + + it "returns 0.0 if -0.0" do + (-0.0).send(@method).should be_positive_zero + end + + it "returns Infinity if -Infinity" do + (-infinity_value).send(@method).infinite?.should == 1 + end + + it "returns NaN if NaN" do + nan_value.send(@method).nan?.should == true + end +end diff --git a/spec/ruby/core/float/shared/arithmetic_exception_in_coerce.rb b/spec/ruby/core/float/shared/arithmetic_exception_in_coerce.rb new file mode 100644 index 0000000000..bd3bf9019f --- /dev/null +++ b/spec/ruby/core/float/shared/arithmetic_exception_in_coerce.rb @@ -0,0 +1,11 @@ +require_relative '../fixtures/classes' + +describe :float_arithmetic_exception_in_coerce, shared: true do + it "does not rescue exception raised in other#coerce" do + b = mock("numeric with failed #coerce") + b.should_receive(:coerce).and_raise(FloatSpecs::CoerceError) + + # e.g. 1.0 > b + -> { 1.0.send(@method, b) }.should.raise(FloatSpecs::CoerceError) + end +end diff --git a/spec/ruby/core/float/shared/comparison_exception_in_coerce.rb b/spec/ruby/core/float/shared/comparison_exception_in_coerce.rb new file mode 100644 index 0000000000..eec5d8daf9 --- /dev/null +++ b/spec/ruby/core/float/shared/comparison_exception_in_coerce.rb @@ -0,0 +1,11 @@ +require_relative '../fixtures/classes' + +describe :float_comparison_exception_in_coerce, shared: true do + it "does not rescue exception raised in other#coerce" do + b = mock("numeric with failed #coerce") + b.should_receive(:coerce).and_raise(FloatSpecs::CoerceError) + + # e.g. 1.0 > b + -> { 1.0.send(@method, b) }.should.raise(FloatSpecs::CoerceError) + end +end diff --git a/spec/ruby/core/float/shared/to_i.rb b/spec/ruby/core/float/shared/to_i.rb new file mode 100644 index 0000000000..1e6f941467 --- /dev/null +++ b/spec/ruby/core/float/shared/to_i.rb @@ -0,0 +1,14 @@ +describe :float_to_i, shared: true do + it "returns self truncated to an Integer" do + 899.2.send(@method).should.eql?(899) + -1.122256e-45.send(@method).should.eql?(0) + 5_213_451.9201.send(@method).should.eql?(5213451) + 1.233450999123389e+12.send(@method).should.eql?(1233450999123) + -9223372036854775808.1.send(@method).should.eql?(-9223372036854775808) + 9223372036854775808.1.send(@method).should.eql?(9223372036854775808) + end + + it "raises a FloatDomainError for NaN" do + -> { nan_value.send(@method) }.should.raise(FloatDomainError) + end +end |
