aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog6
-rw-r--r--ext/bigdecimal/bigdecimal.c4
-rw-r--r--test/bigdecimal/test_bigdecimal.rb12
3 files changed, 21 insertions, 1 deletions
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 <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