From a3e5a86596c8a34559361055911f724a2200d287 Mon Sep 17 00:00:00 2001 From: mrkn Date: Thu, 1 Nov 2012 13:04:04 +0000 Subject: [PATCH] * ext/bigdecimal/bigdecimal.c (BigDecimal_new), test/bigdecimal/test_bigdecimal.rb: Fix exception message of BigDecimal constructor with a Float. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37407 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 6 ++++++ ext/bigdecimal/bigdecimal.c | 4 +++- test/bigdecimal/test_bigdecimal.rb | 12 ++++++++++++ 3 files changed, 21 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 0bbf7a2956..76ccbc2bee 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +Thu Nov 1 21:57:00 2012 Kenta Murata + + * 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 * 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