Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 15 additions & 2 deletions core/numeric/abs_spec.rb
Original file line number Diff line number Diff line change
@@ -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
5 changes: 3 additions & 2 deletions core/numeric/angle_spec.rb
Original file line number Diff line number Diff line change
@@ -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
36 changes: 34 additions & 2 deletions core/numeric/arg_spec.rb
Original file line number Diff line number Diff line change
@@ -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
5 changes: 3 additions & 2 deletions core/numeric/conj_spec.rb
Original file line number Diff line number Diff line change
@@ -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
18 changes: 16 additions & 2 deletions core/numeric/conjugate_spec.rb
Original file line number Diff line number Diff line change
@@ -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
5 changes: 3 additions & 2 deletions core/numeric/imag_spec.rb
Original file line number Diff line number Diff line change
@@ -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
24 changes: 22 additions & 2 deletions core/numeric/imaginary_spec.rb
Original file line number Diff line number Diff line change
@@ -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
5 changes: 3 additions & 2 deletions core/numeric/magnitude_spec.rb
Original file line number Diff line number Diff line change
@@ -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
5 changes: 3 additions & 2 deletions core/numeric/phase_spec.rb
Original file line number Diff line number Diff line change
@@ -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
Comment thread
Earlopain marked this conversation as resolved.
Comment thread
Earlopain marked this conversation as resolved.
end
5 changes: 3 additions & 2 deletions core/numeric/rect_spec.rb
Original file line number Diff line number Diff line change
@@ -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
46 changes: 44 additions & 2 deletions core/numeric/rectangular_spec.rb
Original file line number Diff line number Diff line change
@@ -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
19 changes: 0 additions & 19 deletions core/numeric/shared/abs.rb

This file was deleted.

38 changes: 0 additions & 38 deletions core/numeric/shared/arg.rb

This file was deleted.

20 changes: 0 additions & 20 deletions core/numeric/shared/conj.rb

This file was deleted.

26 changes: 0 additions & 26 deletions core/numeric/shared/imag.rb

This file was deleted.

48 changes: 0 additions & 48 deletions core/numeric/shared/rect.rb

This file was deleted.

Loading
Loading