summaryrefslogtreecommitdiff
path: root/spec/ruby/library/bigdecimal
diff options
context:
space:
mode:
Diffstat (limited to 'spec/ruby/library/bigdecimal')
-rw-r--r--spec/ruby/library/bigdecimal/case_compare_spec.rb6
-rw-r--r--spec/ruby/library/bigdecimal/clone_spec.rb8
-rw-r--r--spec/ruby/library/bigdecimal/dup_spec.rb12
-rw-r--r--spec/ruby/library/bigdecimal/eql_spec.rb6
-rw-r--r--spec/ruby/library/bigdecimal/equal_value_spec.rb60
-rw-r--r--spec/ruby/library/bigdecimal/modulo_spec.rb15
-rw-r--r--spec/ruby/library/bigdecimal/shared/clone.rb13
-rw-r--r--spec/ruby/library/bigdecimal/shared/eql.rb61
-rw-r--r--spec/ruby/library/bigdecimal/shared/modulo.rb10
-rw-r--r--spec/ruby/library/bigdecimal/shared/to_int.rb16
-rw-r--r--spec/ruby/library/bigdecimal/to_i_spec.rb14
-rw-r--r--spec/ruby/library/bigdecimal/to_int_spec.rb6
12 files changed, 108 insertions, 119 deletions
diff --git a/spec/ruby/library/bigdecimal/case_compare_spec.rb b/spec/ruby/library/bigdecimal/case_compare_spec.rb
index fac6714356..1f1d223d6a 100644
--- a/spec/ruby/library/bigdecimal/case_compare_spec.rb
+++ b/spec/ruby/library/bigdecimal/case_compare_spec.rb
@@ -1,7 +1,9 @@
require_relative '../../spec_helper'
-require_relative 'shared/eql'
+require 'bigdecimal'
describe "BigDecimal#===" do
- it_behaves_like :bigdecimal_eql, :===
+ it "is an alias of BigDecimal#==" do
+ BigDecimal.instance_method(:===).should == BigDecimal.instance_method(:==)
+ end
end
diff --git a/spec/ruby/library/bigdecimal/clone_spec.rb b/spec/ruby/library/bigdecimal/clone_spec.rb
index b3a1c61d6a..979cc4c8e9 100644
--- a/spec/ruby/library/bigdecimal/clone_spec.rb
+++ b/spec/ruby/library/bigdecimal/clone_spec.rb
@@ -1,6 +1,8 @@
require_relative '../../spec_helper'
-require_relative 'shared/clone'
+require 'bigdecimal'
-describe "BigDecimal#dup" do
- it_behaves_like :bigdecimal_clone, :clone
+describe "BigDecimal#clone" do
+ it "is an alias of BigDecimal#dup" do
+ BigDecimal.instance_method(:clone).should == BigDecimal.instance_method(:dup)
+ end
end
diff --git a/spec/ruby/library/bigdecimal/dup_spec.rb b/spec/ruby/library/bigdecimal/dup_spec.rb
index bfabaf6e8b..dbf79ce5a6 100644
--- a/spec/ruby/library/bigdecimal/dup_spec.rb
+++ b/spec/ruby/library/bigdecimal/dup_spec.rb
@@ -1,6 +1,14 @@
require_relative '../../spec_helper'
-require_relative 'shared/clone'
+require 'bigdecimal'
describe "BigDecimal#dup" do
- it_behaves_like :bigdecimal_clone, :dup
+ before :each do
+ @obj = BigDecimal("1.2345")
+ end
+
+ it "returns self" do
+ copy = @obj.dup
+
+ copy.should.equal?(@obj)
+ end
end
diff --git a/spec/ruby/library/bigdecimal/eql_spec.rb b/spec/ruby/library/bigdecimal/eql_spec.rb
index 1be5862751..0346175e1e 100644
--- a/spec/ruby/library/bigdecimal/eql_spec.rb
+++ b/spec/ruby/library/bigdecimal/eql_spec.rb
@@ -1,6 +1,8 @@
require_relative '../../spec_helper'
-require_relative 'shared/eql'
+require 'bigdecimal'
describe "BigDecimal#eql?" do
- it_behaves_like :bigdecimal_eql, :eql?
+ it "is an alias of BigDecimal#==" do
+ BigDecimal.instance_method(:eql?).should == BigDecimal.instance_method(:==)
+ end
end
diff --git a/spec/ruby/library/bigdecimal/equal_value_spec.rb b/spec/ruby/library/bigdecimal/equal_value_spec.rb
index 933060eada..d1133765b1 100644
--- a/spec/ruby/library/bigdecimal/equal_value_spec.rb
+++ b/spec/ruby/library/bigdecimal/equal_value_spec.rb
@@ -1,7 +1,63 @@
require_relative '../../spec_helper'
-require_relative 'shared/eql'
+require 'bigdecimal'
describe "BigDecimal#==" do
- it_behaves_like :bigdecimal_eql, :==
+ before :each do
+ @bg6543_21 = BigDecimal("6543.21")
+ @bg5667_19 = BigDecimal("5667.19")
+ @a = BigDecimal("1.0000000000000000000000000000000000000000005")
+ @b = BigDecimal("1.00000000000000000000000000000000000000000005")
+ @bigint = BigDecimal("1000.0")
+ @nan = BigDecimal("NaN")
+ @infinity = BigDecimal("Infinity")
+ @infinity_minus = BigDecimal("-Infinity")
+ end
+
+ it "tests for equality" do
+ (@bg6543_21 == @bg6543_21).should == true
+ (@a == @a).should == true
+ (@a == @b).should == false
+ (@bg6543_21 == @a).should == false
+ (@bigint == 1000).should == true
+ end
+
+ it "returns false for NaN as it is never equal to any number" do
+ (@nan == @nan).should == false
+ (@a == @nan).should == false
+ (@nan == @a).should == false
+ (@nan == @infinity).should == false
+ (@nan == @infinity_minus).should == false
+ (@infinity == @nan).should == false
+ (@infinity_minus == @nan).should == false
+ end
+
+ it "returns true for infinity values with the same sign" do
+ (@infinity == @infinity).should == true
+ (@infinity == BigDecimal("Infinity")).should == true
+ (BigDecimal("Infinity") == @infinity).should == true
+
+ (@infinity_minus == @infinity_minus).should == true
+ (@infinity_minus == BigDecimal("-Infinity")).should == true
+ (BigDecimal("-Infinity") == @infinity_minus).should == true
+ end
+
+ it "returns false for infinity values with different signs" do
+ (@infinity == @infinity_minus).should == false
+ (@infinity_minus == @infinity).should == false
+ end
+
+ it "returns false when infinite value compared to finite one" do
+ (@infinity == @a).should == false
+ (@infinity_minus == @a).should == false
+
+ (@a == @infinity).should == false
+ (@a == @infinity_minus).should == false
+ end
+
+ it "returns false when compared objects that can not be coerced into BigDecimal" do
+ (@infinity == nil).should == false
+ (@bigint == nil).should == false
+ (@nan == nil).should == false
+ end
end
diff --git a/spec/ruby/library/bigdecimal/modulo_spec.rb b/spec/ruby/library/bigdecimal/modulo_spec.rb
index 035d31bd98..d6b4f91b6d 100644
--- a/spec/ruby/library/bigdecimal/modulo_spec.rb
+++ b/spec/ruby/library/bigdecimal/modulo_spec.rb
@@ -1,12 +1,21 @@
require_relative '../../spec_helper'
require_relative 'shared/modulo'
+require 'bigdecimal'
describe "BigDecimal#%" do
it_behaves_like :bigdecimal_modulo, :%
- it_behaves_like :bigdecimal_modulo_zerodivisionerror, :%
+
+ it "raises ZeroDivisionError if other is zero" do
+ bd5667 = BigDecimal("5667.19")
+
+ -> { bd5667 % 0 }.should.raise(ZeroDivisionError)
+ -> { bd5667 % BigDecimal("0") }.should.raise(ZeroDivisionError)
+ -> { @zero % @zero }.should.raise(ZeroDivisionError)
+ end
end
describe "BigDecimal#modulo" do
- it_behaves_like :bigdecimal_modulo, :modulo
- it_behaves_like :bigdecimal_modulo_zerodivisionerror, :modulo
+ it "is an alias of BigDecimal#%" do
+ BigDecimal.instance_method(:modulo).should == BigDecimal.instance_method(:%)
+ end
end
diff --git a/spec/ruby/library/bigdecimal/shared/clone.rb b/spec/ruby/library/bigdecimal/shared/clone.rb
deleted file mode 100644
index 03de6d0fc3..0000000000
--- a/spec/ruby/library/bigdecimal/shared/clone.rb
+++ /dev/null
@@ -1,13 +0,0 @@
-require 'bigdecimal'
-
-describe :bigdecimal_clone, shared: true do
- before :each do
- @obj = BigDecimal("1.2345")
- end
-
- it "returns self" do
- copy = @obj.public_send(@method)
-
- copy.should.equal?(@obj)
- end
-end
diff --git a/spec/ruby/library/bigdecimal/shared/eql.rb b/spec/ruby/library/bigdecimal/shared/eql.rb
deleted file mode 100644
index 8e3e388bab..0000000000
--- a/spec/ruby/library/bigdecimal/shared/eql.rb
+++ /dev/null
@@ -1,61 +0,0 @@
-require 'bigdecimal'
-
-describe :bigdecimal_eql, shared: true do
- before :each do
- @bg6543_21 = BigDecimal("6543.21")
- @bg5667_19 = BigDecimal("5667.19")
- @a = BigDecimal("1.0000000000000000000000000000000000000000005")
- @b = BigDecimal("1.00000000000000000000000000000000000000000005")
- @bigint = BigDecimal("1000.0")
- @nan = BigDecimal("NaN")
- @infinity = BigDecimal("Infinity")
- @infinity_minus = BigDecimal("-Infinity")
- end
-
- it "tests for equality" do
- @bg6543_21.send(@method, @bg6543_21).should == true
- @a.send(@method, @a).should == true
- @a.send(@method, @b).should == false
- @bg6543_21.send(@method, @a).should == false
- @bigint.send(@method, 1000).should == true
- end
-
- it "returns false for NaN as it is never equal to any number" do
- @nan.send(@method, @nan).should == false
- @a.send(@method, @nan).should == false
- @nan.send(@method, @a).should == false
- @nan.send(@method, @infinity).should == false
- @nan.send(@method, @infinity_minus).should == false
- @infinity.send(@method, @nan).should == false
- @infinity_minus.send(@method, @nan).should == false
- end
-
- it "returns true for infinity values with the same sign" do
- @infinity.send(@method, @infinity).should == true
- @infinity.send(@method, BigDecimal("Infinity")).should == true
- BigDecimal("Infinity").send(@method, @infinity).should == true
-
- @infinity_minus.send(@method, @infinity_minus).should == true
- @infinity_minus.send(@method, BigDecimal("-Infinity")).should == true
- BigDecimal("-Infinity").send(@method, @infinity_minus).should == true
- end
-
- it "returns false for infinity values with different signs" do
- @infinity.send(@method, @infinity_minus).should == false
- @infinity_minus.send(@method, @infinity).should == false
- end
-
- it "returns false when infinite value compared to finite one" do
- @infinity.send(@method, @a).should == false
- @infinity_minus.send(@method, @a).should == false
-
- @a.send(@method, @infinity).should == false
- @a.send(@method, @infinity_minus).should == false
- end
-
- it "returns false when compared objects that can not be coerced into BigDecimal" do
- @infinity.send(@method, nil).should == false
- @bigint.send(@method, nil).should == false
- @nan.send(@method, nil).should == false
- end
-end
diff --git a/spec/ruby/library/bigdecimal/shared/modulo.rb b/spec/ruby/library/bigdecimal/shared/modulo.rb
index 63470d0977..5b5e3503c4 100644
--- a/spec/ruby/library/bigdecimal/shared/modulo.rb
+++ b/spec/ruby/library/bigdecimal/shared/modulo.rb
@@ -119,13 +119,3 @@ describe :bigdecimal_modulo, shared: true do
}.should.raise(TypeError)
end
end
-
-describe :bigdecimal_modulo_zerodivisionerror, shared: true do
- it "raises ZeroDivisionError if other is zero" do
- bd5667 = BigDecimal("5667.19")
-
- -> { bd5667.send(@method, 0) }.should.raise(ZeroDivisionError)
- -> { bd5667.send(@method, BigDecimal("0")) }.should.raise(ZeroDivisionError)
- -> { @zero.send(@method, @zero) }.should.raise(ZeroDivisionError)
- end
-end
diff --git a/spec/ruby/library/bigdecimal/shared/to_int.rb b/spec/ruby/library/bigdecimal/shared/to_int.rb
deleted file mode 100644
index 3c9f3b4f97..0000000000
--- a/spec/ruby/library/bigdecimal/shared/to_int.rb
+++ /dev/null
@@ -1,16 +0,0 @@
-require 'bigdecimal'
-
-describe :bigdecimal_to_int, shared: true do
- it "raises FloatDomainError if BigDecimal is infinity or NaN" do
- -> { BigDecimal("Infinity").send(@method) }.should.raise(FloatDomainError)
- -> { BigDecimal("NaN").send(@method) }.should.raise(FloatDomainError)
- end
-
- it "returns Integer otherwise" do
- BigDecimal("3E-20001").send(@method).should == 0
- BigDecimal("2E4000").send(@method).should == 2 * 10 ** 4000
- BigDecimal("2").send(@method).should == 2
- BigDecimal("2E10").send(@method).should == 20000000000
- BigDecimal("3.14159").send(@method).should == 3
- end
-end
diff --git a/spec/ruby/library/bigdecimal/to_i_spec.rb b/spec/ruby/library/bigdecimal/to_i_spec.rb
index e5e65c562e..b6d9e43e57 100644
--- a/spec/ruby/library/bigdecimal/to_i_spec.rb
+++ b/spec/ruby/library/bigdecimal/to_i_spec.rb
@@ -1,7 +1,17 @@
require_relative '../../spec_helper'
-require_relative 'shared/to_int'
require 'bigdecimal'
describe "BigDecimal#to_i" do
- it_behaves_like :bigdecimal_to_int, :to_i
+ it "raises FloatDomainError if BigDecimal is infinity or NaN" do
+ -> { BigDecimal("Infinity").to_i }.should.raise(FloatDomainError)
+ -> { BigDecimal("NaN").to_i }.should.raise(FloatDomainError)
+ end
+
+ it "returns Integer otherwise" do
+ BigDecimal("3E-20001").to_i.should == 0
+ BigDecimal("2E4000").to_i.should == 2 * 10 ** 4000
+ BigDecimal("2").to_i.should == 2
+ BigDecimal("2E10").to_i.should == 20000000000
+ BigDecimal("3.14159").to_i.should == 3
+ end
end
diff --git a/spec/ruby/library/bigdecimal/to_int_spec.rb b/spec/ruby/library/bigdecimal/to_int_spec.rb
index 4df6749845..18f3620f5e 100644
--- a/spec/ruby/library/bigdecimal/to_int_spec.rb
+++ b/spec/ruby/library/bigdecimal/to_int_spec.rb
@@ -1,8 +1,8 @@
require_relative '../../spec_helper'
-require_relative 'shared/to_int'
require 'bigdecimal'
-
describe "BigDecimal#to_int" do
- it_behaves_like :bigdecimal_to_int, :to_int
+ it "is an alias of BigDecimal#to_i" do
+ BigDecimal.instance_method(:to_int).should == BigDecimal.instance_method(:to_i)
+ end
end