summaryrefslogtreecommitdiff
path: root/test/bigdecimal/test_bigdecimal.rb
diff options
context:
space:
mode:
authormrkn <mrkn@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2011-08-17 06:35:21 +0000
committermrkn <mrkn@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2011-08-17 06:35:21 +0000
commit4e8d6c105c22c40f1abf1aab357419e8f4ef2f5b (patch)
tree8663c427f448abbc89539c56d9f9e185e0e44d70 /test/bigdecimal/test_bigdecimal.rb
parentb30d203fed8c29fd05d010631ca8e4750ce34849 (diff)
Merge branch '5172_bigdecimal_gc_issue' into trunk
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32996 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'test/bigdecimal/test_bigdecimal.rb')
-rw-r--r--test/bigdecimal/test_bigdecimal.rb45
1 files changed, 44 insertions, 1 deletions
diff --git a/test/bigdecimal/test_bigdecimal.rb b/test/bigdecimal/test_bigdecimal.rb
index e3ae631820..a9524bb2ae 100644
--- a/test/bigdecimal/test_bigdecimal.rb
+++ b/test/bigdecimal/test_bigdecimal.rb
@@ -1086,7 +1086,7 @@ class TestBigDecimal < Test::Unit::TestCase
assert_equal(BigDecimal::SIGN_NEGATIVE_ZERO, BigDecimal.new("-1E-1" + "0" * 10000).sign)
end
- def test_gc
+ def test_split_under_gc_stress
bug3258 = '[ruby-dev:41213]'
stress, GC.stress = GC.stress, true
10.upto(20) do |i|
@@ -1097,6 +1097,21 @@ class TestBigDecimal < Test::Unit::TestCase
GC.stress = stress
end
+ def test_coerce_under_gc_stress
+ expect = ":too_long_to_embed_as_string can't be coerced into BigDecimal"
+ under_gc_stress do
+ b = BigDecimal.new("1")
+ 10.times do
+ begin
+ b.coerce(:too_long_to_embed_as_string)
+ rescue => e
+ assert_instance_of TypeError, e
+ assert_equal expect, e.message
+ end
+ end
+ end
+ end
+
def test_INFINITY
assert(BigDecimal::INFINITY.infinite?, "BigDecimal::INFINITY is not a infinity")
end
@@ -1157,6 +1172,20 @@ class TestBigDecimal < Test::Unit::TestCase
assert_in_epsilon(Math.exp(-40), BigMath.exp(BigDecimal("-40"), n))
end
+ def test_BigMath_exp_under_gc_stress
+ expect = ":too_long_to_embed_as_string can't be coerced into BigDecimal"
+ under_gc_stress do
+ 10.times do
+ begin
+ BigMath.exp(:too_long_to_embed_as_string, 6)
+ rescue => e
+ assert_instance_of ArgumentError, e
+ assert_equal expect, e.message
+ end
+ end
+ end
+ end
+
def test_BigMath_log_with_nil
assert_raise(ArgumentError) do
BigMath.log(nil, 20)
@@ -1241,4 +1270,18 @@ class TestBigDecimal < Test::Unit::TestCase
assert_in_delta(Math.log(1e-42), BigMath.log(1e-42, 20))
assert_in_delta(Math.log(1e-42), BigMath.log(BigDecimal("1e-42"), 20))
end
+
+ def test_BigMath_log_under_gc_stress
+ expect = ":too_long_to_embed_as_string can't be coerced into BigDecimal"
+ under_gc_stress do
+ 10.times do
+ begin
+ BigMath.log(:too_long_to_embed_as_string, 6)
+ rescue => e
+ assert_instance_of ArgumentError, e
+ assert_equal expect, e.message
+ end
+ end
+ end
+ end
end