summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorusa <usa@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2013-01-15 07:22:50 +0000
committerusa <usa@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2013-01-15 07:22:50 +0000
commit73eb0eafef3de25d637a7ac77b28049203dbb338 (patch)
tree47d41deb31e24c8e1e94aa19579a9ed434158062 /test
parentae92565e04071d63867cedd05f48b1ff39664534 (diff)
merge revision(s) 38801,38809,38810: [Backport #7404]
* ext/bigdecimal/bigdecimal.c (BigDecimal_sub): need to specify precision for converting Rational and Float. [ruby-dev:46544] [Bug #7404] * ext/bigdecimal/bigdecimal.c (BigDecimal_mult): ditto. * ext/bigdecimal/bigdecimal.c (BigDecimal_divide): ditto. * ext/bigdecimal/bigdecimal.c (BigDecimal_DoDivmod): ditto. * ext/bigdecimal/bigdecimal.c (BigDecimal_divremain): ditto. * test/bigdecimal/test_bigdecimal.rb: add tests for the above fixes. * ext/bigdecimal/bigdecimal.c: use `RB_TYPE_P(x, t)` instead of `TYPE(x) == t`. * ext/bigdecimal/bigdecimal.c (BigDecimal_to_s): use CRuby style. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_3@38829 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'test')
-rw-r--r--test/bigdecimal/test_bigdecimal.rb40
1 files changed, 40 insertions, 0 deletions
diff --git a/test/bigdecimal/test_bigdecimal.rb b/test/bigdecimal/test_bigdecimal.rb
index ed3639f058..055b0ff4f0 100644
--- a/test/bigdecimal/test_bigdecimal.rb
+++ b/test/bigdecimal/test_bigdecimal.rb
@@ -597,6 +597,14 @@ class TestBigDecimal < Test::Unit::TestCase
assert_equal(BigDecimal.new((2**100-1).to_s), x - 1)
end
+ def test_sub_with_float
+ assert_kind_of(BigDecimal, BigDecimal.new("3") - 1.0)
+ end
+
+ def test_sub_with_rational
+ assert_kind_of(BigDecimal, BigDecimal.new("3") - 1.quo(3))
+ end
+
def test_mult
x = BigDecimal.new((2**100).to_s)
assert_equal(BigDecimal.new((2**100 * 3).to_s), (x * 3).to_i)
@@ -605,6 +613,14 @@ class TestBigDecimal < Test::Unit::TestCase
assert_equal(BigDecimal.new((2**200).to_s), (x * x).to_i)
end
+ def test_mult_with_float
+ assert_kind_of(BigDecimal, BigDecimal.new("3") * 1.5)
+ end
+
+ def test_mult_with_rational
+ assert_kind_of(BigDecimal, BigDecimal.new("3") * 1.quo(3))
+ end
+
def test_div
x = BigDecimal.new((2**100).to_s)
assert_equal(BigDecimal.new((2**100 / 3).to_s), (x / 3).to_i)
@@ -614,6 +630,14 @@ class TestBigDecimal < Test::Unit::TestCase
assert_equal(-2, BigDecimal.new("2") / -1)
end
+ def test_div_with_float
+ assert_kind_of(BigDecimal, BigDecimal.new("3") / 1.5)
+ end
+
+ def test_div_with_rational
+ assert_kind_of(BigDecimal, BigDecimal.new("3") / 1.quo(3))
+ end
+
def test_mod
x = BigDecimal.new((2**100).to_s)
assert_equal(1, x % 3)
@@ -622,6 +646,14 @@ class TestBigDecimal < Test::Unit::TestCase
assert_equal(-1, (-x) % -3)
end
+ def test_mod_with_float
+ assert_kind_of(BigDecimal, BigDecimal.new("3") % 1.5)
+ end
+
+ def test_mod_with_rational
+ assert_kind_of(BigDecimal, BigDecimal.new("3") % 1.quo(3))
+ end
+
def test_remainder
x = BigDecimal.new((2**100).to_s)
assert_equal(1, x.remainder(3))
@@ -630,6 +662,14 @@ class TestBigDecimal < Test::Unit::TestCase
assert_equal(-1, (-x).remainder(-3))
end
+ def test_remainder_with_float
+ assert_kind_of(BigDecimal, BigDecimal.new("3").remainder(1.5))
+ end
+
+ def test_remainder_with_rational
+ assert_kind_of(BigDecimal, BigDecimal.new("3").remainder(1.quo(3)))
+ end
+
def test_divmod
x = BigDecimal.new((2**100).to_s)
assert_equal([(x / 3).floor, 1], x.divmod(3))