diff options
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | ext/bigdecimal/bigdecimal.c | 4 | ||||
-rw-r--r-- | test/bigdecimal/test_bigdecimal.rb | 12 |
3 files changed, 21 insertions, 1 deletions
@@ -1,3 +1,9 @@ +Thu Nov 1 21:57:00 2012 Kenta Murata <mrkn@mrkn.jp> + + * ext/bigdecimal/bigdecimal.c (BigDecimal_new), + test/bigdecimal/test_bigdecimal.rb: + Fix exception message of BigDecimal constructor with a Float. + Thu Nov 1 21:52:20 2012 Kenta Murata <mrkn@mrkn.jp> * ext/bigdecimal/bigdecimal.c (BigDecimal_add), diff --git a/ext/bigdecimal/bigdecimal.c b/ext/bigdecimal/bigdecimal.c index 8b3fef095a..f58b640f30 100644 --- a/ext/bigdecimal/bigdecimal.c +++ b/ext/bigdecimal/bigdecimal.c @@ -2354,7 +2354,9 @@ BigDecimal_new(int argc, VALUE *argv) /* fall through */ case T_RATIONAL: if (NIL_P(nFig)) { - rb_raise(rb_eArgError, "can't omit precision for a Rational."); + rb_raise(rb_eArgError, + "can't omit precision for a %s.", + rb_class2name(CLASS_OF(iniValue))); } return GetVpValueWithPrec(iniValue, mf, 1); diff --git a/test/bigdecimal/test_bigdecimal.rb b/test/bigdecimal/test_bigdecimal.rb index e1f98a28ca..ed4a1d40ab 100644 --- a/test/bigdecimal/test_bigdecimal.rb +++ b/test/bigdecimal/test_bigdecimal.rb @@ -52,6 +52,18 @@ class TestBigDecimal < Test::Unit::TestCase assert_equal(1, BigDecimal("1")) assert_equal(1, BigDecimal("1", 1)) assert_raise(ArgumentError) { BigDecimal("1", -1) } + assert_raise(ArgumentError) { BigDecimal(4.2) } + begin + BigDecimal(4.2) + rescue ArgumentError => error + assert_match(/Float/, error.message) + end + assert_raise(ArgumentError) { BigDecimal(42.quo(7)) } + begin + BigDecimal(42.quo(7)) + rescue ArgumentError => error + assert_match(/Rational/, error.message) + end end def test_global_new_with_integer |