1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64831 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
eregon 2018-09-25 10:41:16 +00:00
parent e59bf54b3a
commit e87fb88be8
142 changed files with 1165 additions and 1078 deletions

View file

@ -1,3 +1,4 @@
require_relative '../../spec_helper'
require_relative 'shared/abs'
describe "Numeric#abs" do

View file

@ -1,5 +1,5 @@
require_relative '../../spec_helper'
require_relative '../../shared/complex/numeric/arg'
require_relative 'shared/arg'
describe "Numeric#angle" do
it_behaves_like :numeric_arg, :angle

View file

@ -1,5 +1,5 @@
require_relative '../../spec_helper'
require_relative '../../shared/complex/numeric/arg'
require_relative 'shared/arg'
describe "Numeric#arg" do
it_behaves_like :numeric_arg, :arg

View file

@ -1,5 +1,5 @@
require_relative '../../spec_helper'
require_relative '../../shared/complex/numeric/conj'
require_relative 'shared/conj'
describe "Numeric#conj" do
it_behaves_like :numeric_conj, :conj

View file

@ -1,5 +1,5 @@
require_relative '../../spec_helper'
require_relative '../../shared/complex/numeric/conj'
require_relative 'shared/conj'
describe "Numeric#conjugate" do
it_behaves_like :numeric_conj, :conjugate

View file

@ -1,5 +1,5 @@
require_relative '../../spec_helper'
require_relative '../../shared/complex/numeric/imag'
require_relative 'shared/imag'
describe "Numeric#imag" do
it_behaves_like :numeric_imag, :imag

View file

@ -1,5 +1,5 @@
require_relative '../../spec_helper'
require_relative '../../shared/complex/numeric/imag'
require_relative 'shared/imag'
describe "Numeric#imaginary" do
it_behaves_like :numeric_imag, :imaginary

View file

@ -1,5 +1,5 @@
require_relative '../../spec_helper'
require_relative '../../shared/complex/numeric/arg'
require_relative 'shared/arg'
describe "Numeric#phase" do
it_behaves_like :numeric_arg, :phase

View file

@ -1,6 +1,50 @@
require_relative '../../spec_helper'
require_relative '../../shared/complex/numeric/polar'
describe "Numeric#polar" do
it_behaves_like :numeric_polar, :polar
before :each do
@pos_numbers = [
1,
3898172610**9,
987.18273,
Float::MAX,
Rational(13,7),
infinity_value,
]
@neg_numbers = @pos_numbers.map {|n| -n}
@numbers = @pos_numbers + @neg_numbers
@numbers.push(0, 0.0)
end
it "returns a two-element Array" do
@numbers.each do |number|
number.polar.should be_an_instance_of(Array)
number.polar.size.should == 2
end
end
it "sets the first value to the absolute value of self" do
@numbers.each do |number|
number.polar.first.should == number.abs
end
end
it "sets the last value to 0 if self is positive" do
(@numbers - @neg_numbers).each do |number|
number.should >= 0
number.polar.last.should == 0
end
end
it "sets the last value to Pi if self is negative" do
@neg_numbers.each do |number|
number.should < 0
number.polar.last.should == Math::PI
end
end
it "returns [NaN, NaN] if self is NaN" do
nan_value.polar.size.should == 2
nan_value.polar.first.nan?.should be_true
nan_value.polar.last.nan?.should be_true
end
end

View file

@ -1,9 +1,33 @@
require_relative '../../spec_helper'
require_relative '../../shared/complex/numeric/real'
require_relative 'fixtures/classes'
describe "Numeric#real" do
it_behaves_like :numeric_real, :real
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 self" do
@numbers.each do |number|
if number.to_f.nan?
number.real.nan?.should be_true
else
number.real.should == number
end
end
end
it "raises an ArgumentError if given any arguments" do
@numbers.each do |number|
lambda { number.real(number) }.should raise_error(ArgumentError)
end
end
end
describe "Numeric#real?" do

View file

@ -0,0 +1,38 @@
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

View file

@ -0,0 +1,20 @@
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

View file

@ -0,0 +1,26 @@
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|
lambda { number.send(@method, number) }.should raise_error(ArgumentError)
end
end
end