summaryrefslogtreecommitdiff
path: root/spec/ruby/core/numeric
diff options
context:
space:
mode:
Diffstat (limited to 'spec/ruby/core/numeric')
-rw-r--r--spec/ruby/core/numeric/abs_spec.rb17
-rw-r--r--spec/ruby/core/numeric/angle_spec.rb5
-rw-r--r--spec/ruby/core/numeric/arg_spec.rb36
-rw-r--r--spec/ruby/core/numeric/conj_spec.rb5
-rw-r--r--spec/ruby/core/numeric/conjugate_spec.rb18
-rw-r--r--spec/ruby/core/numeric/imag_spec.rb5
-rw-r--r--spec/ruby/core/numeric/imaginary_spec.rb24
-rw-r--r--spec/ruby/core/numeric/magnitude_spec.rb5
-rw-r--r--spec/ruby/core/numeric/modulo_spec.rb19
-rw-r--r--spec/ruby/core/numeric/phase_spec.rb5
-rw-r--r--spec/ruby/core/numeric/rect_spec.rb5
-rw-r--r--spec/ruby/core/numeric/rectangular_spec.rb46
-rw-r--r--spec/ruby/core/numeric/shared/abs.rb19
-rw-r--r--spec/ruby/core/numeric/shared/arg.rb38
-rw-r--r--spec/ruby/core/numeric/shared/conj.rb20
-rw-r--r--spec/ruby/core/numeric/shared/imag.rb26
-rw-r--r--spec/ruby/core/numeric/shared/rect.rb48
17 files changed, 157 insertions, 184 deletions
diff --git a/spec/ruby/core/numeric/abs_spec.rb b/spec/ruby/core/numeric/abs_spec.rb
index 8bec50e337..4b16e06c97 100644
--- a/spec/ruby/core/numeric/abs_spec.rb
+++ b/spec/ruby/core/numeric/abs_spec.rb
@@ -1,6 +1,19 @@
require_relative '../../spec_helper'
-require_relative 'shared/abs'
+require_relative 'fixtures/classes'
describe "Numeric#abs" do
- it_behaves_like :numeric_abs, :abs
+ before :each do
+ @obj = NumericSpecs::Subclass.new
+ end
+
+ it "returns self when self is greater than 0" do
+ @obj.should_receive(:<).with(0).and_return(false)
+ @obj.abs.should == @obj
+ end
+
+ it "returns self\#@- when self is less than 0" do
+ @obj.should_receive(:<).with(0).and_return(true)
+ @obj.should_receive(:-@).and_return(:absolute_value)
+ @obj.abs.should == :absolute_value
+ end
end
diff --git a/spec/ruby/core/numeric/angle_spec.rb b/spec/ruby/core/numeric/angle_spec.rb
index bb38165777..25d2834a52 100644
--- a/spec/ruby/core/numeric/angle_spec.rb
+++ b/spec/ruby/core/numeric/angle_spec.rb
@@ -1,6 +1,7 @@
require_relative '../../spec_helper'
-require_relative 'shared/arg'
describe "Numeric#angle" do
- it_behaves_like :numeric_arg, :angle
+ it "is an alias of Numeric#arg" do
+ Numeric.instance_method(:angle).should == Numeric.instance_method(:arg)
+ end
end
diff --git a/spec/ruby/core/numeric/arg_spec.rb b/spec/ruby/core/numeric/arg_spec.rb
index ba3b57c687..4fd059d7fc 100644
--- a/spec/ruby/core/numeric/arg_spec.rb
+++ b/spec/ruby/core/numeric/arg_spec.rb
@@ -1,6 +1,38 @@
require_relative '../../spec_helper'
-require_relative 'shared/arg'
describe "Numeric#arg" do
- it_behaves_like :numeric_arg, :arg
+ before :each do
+ @numbers = [
+ 20,
+ Rational(3, 4),
+ bignum_value,
+ infinity_value
+ ]
+ end
+
+ it "returns 0 if positive" do
+ @numbers.each do |number|
+ number.arg.should == 0
+ end
+ end
+
+ it "returns Pi if negative" do
+ @numbers.each do |number|
+ (0-number).arg.should == Math::PI
+ end
+ end
+
+ describe "with a Numeric subclass" do
+ it "returns 0 if self#<(0) returns false" do
+ numeric = mock_numeric('positive')
+ numeric.should_receive(:<).with(0).and_return(false)
+ numeric.arg.should == 0
+ end
+
+ it "returns Pi if self#<(0) returns true" do
+ numeric = mock_numeric('positive')
+ numeric.should_receive(:<).with(0).and_return(true)
+ numeric.arg.should == Math::PI
+ end
+ end
end
diff --git a/spec/ruby/core/numeric/conj_spec.rb b/spec/ruby/core/numeric/conj_spec.rb
index 7d4777ca60..f376a0d4b1 100644
--- a/spec/ruby/core/numeric/conj_spec.rb
+++ b/spec/ruby/core/numeric/conj_spec.rb
@@ -1,6 +1,7 @@
require_relative '../../spec_helper'
-require_relative 'shared/conj'
describe "Numeric#conj" do
- it_behaves_like :numeric_conj, :conj
+ it "is an alias of Numeric#conjugate" do
+ Numeric.instance_method(:conj).should == Numeric.instance_method(:conjugate)
+ end
end
diff --git a/spec/ruby/core/numeric/conjugate_spec.rb b/spec/ruby/core/numeric/conjugate_spec.rb
index 99854766e7..ea4731991d 100644
--- a/spec/ruby/core/numeric/conjugate_spec.rb
+++ b/spec/ruby/core/numeric/conjugate_spec.rb
@@ -1,6 +1,20 @@
require_relative '../../spec_helper'
-require_relative 'shared/conj'
describe "Numeric#conjugate" do
- it_behaves_like :numeric_conj, :conjugate
+ before :each do
+ @numbers = [
+ 20, # Integer
+ 398.72, # Float
+ Rational(3, 4), # Rational
+ bignum_value,
+ infinity_value,
+ nan_value
+ ]
+ end
+
+ it "returns self" do
+ @numbers.each do |number|
+ number.conjugate.should.equal?(number)
+ end
+ end
end
diff --git a/spec/ruby/core/numeric/imag_spec.rb b/spec/ruby/core/numeric/imag_spec.rb
index b9e343cee9..761d6b0dbe 100644
--- a/spec/ruby/core/numeric/imag_spec.rb
+++ b/spec/ruby/core/numeric/imag_spec.rb
@@ -1,6 +1,7 @@
require_relative '../../spec_helper'
-require_relative 'shared/imag'
describe "Numeric#imag" do
- it_behaves_like :numeric_imag, :imag
+ it "is an alias of Numeric#imaginary" do
+ Numeric.instance_method(:imag).should == Numeric.instance_method(:imaginary)
+ end
end
diff --git a/spec/ruby/core/numeric/imaginary_spec.rb b/spec/ruby/core/numeric/imaginary_spec.rb
index ec708cb505..7b5d94cc75 100644
--- a/spec/ruby/core/numeric/imaginary_spec.rb
+++ b/spec/ruby/core/numeric/imaginary_spec.rb
@@ -1,6 +1,26 @@
require_relative '../../spec_helper'
-require_relative 'shared/imag'
describe "Numeric#imaginary" do
- it_behaves_like :numeric_imag, :imaginary
+ before :each do
+ @numbers = [
+ 20, # Integer
+ 398.72, # Float
+ Rational(3, 4), # Rational
+ bignum_value, # Bignum
+ infinity_value,
+ nan_value
+ ].map{|n| [n,-n]}.flatten
+ end
+
+ it "returns 0" do
+ @numbers.each do |number|
+ number.imaginary.should == 0
+ end
+ end
+
+ it "raises an ArgumentError if given any arguments" do
+ @numbers.each do |number|
+ -> { number.imaginary(number) }.should.raise(ArgumentError)
+ end
+ end
end
diff --git a/spec/ruby/core/numeric/magnitude_spec.rb b/spec/ruby/core/numeric/magnitude_spec.rb
index 1371dff21f..ea4dbd166f 100644
--- a/spec/ruby/core/numeric/magnitude_spec.rb
+++ b/spec/ruby/core/numeric/magnitude_spec.rb
@@ -1,6 +1,7 @@
require_relative "../../spec_helper"
-require_relative 'shared/abs'
describe "Numeric#magnitude" do
- it_behaves_like :numeric_abs, :magnitude
+ it "is an alias of Numeric#abs" do
+ Numeric.instance_method(:magnitude).should == Numeric.instance_method(:abs)
+ end
end
diff --git a/spec/ruby/core/numeric/modulo_spec.rb b/spec/ruby/core/numeric/modulo_spec.rb
index e3dc7e56f3..0baf96dc18 100644
--- a/spec/ruby/core/numeric/modulo_spec.rb
+++ b/spec/ruby/core/numeric/modulo_spec.rb
@@ -1,7 +1,12 @@
require_relative '../../spec_helper'
-require_relative 'fixtures/classes'
-describe :numeric_modulo_19, shared: true do
+describe "Numeric#modulo" do
+ it "is an alias of Numeric#%" do
+ Numeric.instance_method(:modulo).should == Numeric.instance_method(:%)
+ end
+end
+
+describe "Numeric#%" do
it "returns self - other * self.div(other)" do
s = mock_numeric('self')
o = mock_numeric('other')
@@ -11,14 +16,6 @@ describe :numeric_modulo_19, shared: true do
s.should_receive(:div).with(o).and_return(n3)
o.should_receive(:*).with(n3).and_return(n4)
s.should_receive(:-).with(n4).and_return(n5)
- s.send(@method, o).should == n5
+ (s % o).should == n5
end
end
-
-describe "Numeric#modulo" do
- it_behaves_like :numeric_modulo_19, :modulo
-end
-
-describe "Numeric#%" do
- it_behaves_like :numeric_modulo_19, :%
-end
diff --git a/spec/ruby/core/numeric/phase_spec.rb b/spec/ruby/core/numeric/phase_spec.rb
index bc1995303f..3abe8f2e02 100644
--- a/spec/ruby/core/numeric/phase_spec.rb
+++ b/spec/ruby/core/numeric/phase_spec.rb
@@ -1,6 +1,7 @@
require_relative '../../spec_helper'
-require_relative 'shared/arg'
describe "Numeric#phase" do
- it_behaves_like :numeric_arg, :phase
+ it "is an alias of Numeric#arg" do
+ Numeric.instance_method(:phase).should == Numeric.instance_method(:arg)
+ end
end
diff --git a/spec/ruby/core/numeric/rect_spec.rb b/spec/ruby/core/numeric/rect_spec.rb
index 79a144c5a4..65cdcc5229 100644
--- a/spec/ruby/core/numeric/rect_spec.rb
+++ b/spec/ruby/core/numeric/rect_spec.rb
@@ -1,6 +1,7 @@
require_relative '../../spec_helper'
-require_relative 'shared/rect'
describe "Numeric#rect" do
- it_behaves_like :numeric_rect, :rect
+ it "is an alias of Numeric#rectangular" do
+ Numeric.instance_method(:rect).should == Numeric.instance_method(:rectangular)
+ end
end
diff --git a/spec/ruby/core/numeric/rectangular_spec.rb b/spec/ruby/core/numeric/rectangular_spec.rb
index 2c68985a16..81afccc12d 100644
--- a/spec/ruby/core/numeric/rectangular_spec.rb
+++ b/spec/ruby/core/numeric/rectangular_spec.rb
@@ -1,6 +1,48 @@
require_relative '../../spec_helper'
-require_relative 'shared/rect'
describe "Numeric#rectangular" do
- it_behaves_like :numeric_rect, :rectangular
+ before :each do
+ @numbers = [
+ 20, # Integer
+ 398.72, # Float
+ Rational(3, 4), # Rational
+ 99999999**99, # Bignum
+ infinity_value,
+ nan_value
+ ]
+ end
+
+ it "returns an Array" do
+ @numbers.each do |number|
+ number.rectangular.should.instance_of?(Array)
+ end
+ end
+
+ it "returns a two-element Array" do
+ @numbers.each do |number|
+ number.rectangular.size.should == 2
+ end
+ end
+
+ it "returns self as the first element" do
+ @numbers.each do |number|
+ if Float === number and number.nan?
+ number.rectangular.first.nan?.should == true
+ else
+ number.rectangular.first.should == number
+ end
+ end
+ end
+
+ it "returns 0 as the last element" do
+ @numbers.each do |number|
+ number.rectangular.last.should == 0
+ end
+ end
+
+ it "raises an ArgumentError if given any arguments" do
+ @numbers.each do |number|
+ -> { number.rectangular(number) }.should.raise(ArgumentError)
+ end
+ end
end
diff --git a/spec/ruby/core/numeric/shared/abs.rb b/spec/ruby/core/numeric/shared/abs.rb
deleted file mode 100644
index c3dadccfd6..0000000000
--- a/spec/ruby/core/numeric/shared/abs.rb
+++ /dev/null
@@ -1,19 +0,0 @@
-require_relative '../../../spec_helper'
-require_relative '../fixtures/classes'
-
-describe :numeric_abs, shared: true do
- before :each do
- @obj = NumericSpecs::Subclass.new
- end
-
- it "returns self when self is greater than 0" do
- @obj.should_receive(:<).with(0).and_return(false)
- @obj.send(@method).should == @obj
- end
-
- it "returns self\#@- when self is less than 0" do
- @obj.should_receive(:<).with(0).and_return(true)
- @obj.should_receive(:-@).and_return(:absolute_value)
- @obj.send(@method).should == :absolute_value
- end
-end
diff --git a/spec/ruby/core/numeric/shared/arg.rb b/spec/ruby/core/numeric/shared/arg.rb
deleted file mode 100644
index c8e7ad8333..0000000000
--- a/spec/ruby/core/numeric/shared/arg.rb
+++ /dev/null
@@ -1,38 +0,0 @@
-require_relative '../../../spec_helper'
-
-describe :numeric_arg, shared: true do
- before :each do
- @numbers = [
- 20,
- Rational(3, 4),
- bignum_value,
- infinity_value
- ]
- end
-
- it "returns 0 if positive" do
- @numbers.each do |number|
- number.send(@method).should == 0
- end
- end
-
- it "returns Pi if negative" do
- @numbers.each do |number|
- (0-number).send(@method).should == Math::PI
- end
- end
-
- describe "with a Numeric subclass" do
- it "returns 0 if self#<(0) returns false" do
- numeric = mock_numeric('positive')
- numeric.should_receive(:<).with(0).and_return(false)
- numeric.send(@method).should == 0
- end
-
- it "returns Pi if self#<(0) returns true" do
- numeric = mock_numeric('positive')
- numeric.should_receive(:<).with(0).and_return(true)
- numeric.send(@method).should == Math::PI
- end
- end
-end
diff --git a/spec/ruby/core/numeric/shared/conj.rb b/spec/ruby/core/numeric/shared/conj.rb
deleted file mode 100644
index 1a661fbbe8..0000000000
--- a/spec/ruby/core/numeric/shared/conj.rb
+++ /dev/null
@@ -1,20 +0,0 @@
-require_relative '../../../spec_helper'
-
-describe :numeric_conj, shared: true do
- before :each do
- @numbers = [
- 20, # Integer
- 398.72, # Float
- Rational(3, 4), # Rational
- bignum_value,
- infinity_value,
- nan_value
- ]
- end
-
- it "returns self" do
- @numbers.each do |number|
- number.send(@method).should.equal?(number)
- end
- end
-end
diff --git a/spec/ruby/core/numeric/shared/imag.rb b/spec/ruby/core/numeric/shared/imag.rb
deleted file mode 100644
index 605a23d8c6..0000000000
--- a/spec/ruby/core/numeric/shared/imag.rb
+++ /dev/null
@@ -1,26 +0,0 @@
-require_relative '../../../spec_helper'
-
-describe :numeric_imag, shared: true do
- before :each do
- @numbers = [
- 20, # Integer
- 398.72, # Float
- Rational(3, 4), # Rational
- bignum_value, # Bignum
- infinity_value,
- nan_value
- ].map{|n| [n,-n]}.flatten
- end
-
- it "returns 0" do
- @numbers.each do |number|
- number.send(@method).should == 0
- end
- end
-
- it "raises an ArgumentError if given any arguments" do
- @numbers.each do |number|
- -> { number.send(@method, number) }.should.raise(ArgumentError)
- end
- end
-end
diff --git a/spec/ruby/core/numeric/shared/rect.rb b/spec/ruby/core/numeric/shared/rect.rb
deleted file mode 100644
index 32d03e45d2..0000000000
--- a/spec/ruby/core/numeric/shared/rect.rb
+++ /dev/null
@@ -1,48 +0,0 @@
-require_relative '../../../spec_helper'
-
-describe :numeric_rect, shared: true do
- before :each do
- @numbers = [
- 20, # Integer
- 398.72, # Float
- Rational(3, 4), # Rational
- 99999999**99, # Bignum
- infinity_value,
- nan_value
- ]
- end
-
- it "returns an Array" do
- @numbers.each do |number|
- number.send(@method).should.instance_of?(Array)
- end
- end
-
- it "returns a two-element Array" do
- @numbers.each do |number|
- number.send(@method).size.should == 2
- end
- end
-
- it "returns self as the first element" do
- @numbers.each do |number|
- if Float === number and number.nan?
- number.send(@method).first.nan?.should == true
- else
- number.send(@method).first.should == number
- end
- end
- end
-
- it "returns 0 as the last element" do
- @numbers.each do |number|
- number.send(@method).last.should == 0
- end
- end
-
- it "raises an ArgumentError if given any arguments" do
- @numbers.each do |number|
- -> { number.send(@method, number) }.should.raise(ArgumentError)
- end
- end
-end