8000 [ruby/bigdecimal] Return US-ASCII string from BigDecimal#to_s · nobu/ruby@6a826eb · GitHub
[go: up one dir, main page]

Skip to content

Commit 6a826eb

Browse files
mrknnobu
authored andcommitted
[ruby/bigdecimal] Return US-ASCII string from BigDecimal#to_s
Fixes ruby#159 ruby/bigdecimal@57ee92e700
1 parent e794d96 commit 6a826eb

File tree

2 files changed

+18
-13
lines changed

2 files changed

+18
-13
lines changed

ext/bigdecimal/bigdecimal.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2092,7 +2092,7 @@ BigDecimal_to_s(int argc, VALUE *argv, VALUE self)
20922092
nc += (nc + mc - 1) / mc + 1;
20932093
}
20942094

2095-
str = rb_str_new(0, nc);
2095+
str = rb_usascii_str_new(0, nc);
20962096
psz = RSTRING_PTR(str);
20972097

20982098
if (fmt) {

test/bigdecimal/test_bigdecimal.rb

Lines changed: 17 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1534,29 +1534,34 @@ def test_inf
15341534
assert_equal(BigDecimal::SIGN_NEGATIVE_ZERO, (-1 / inf).sign)
15351535
end
15361536

1537+
def assert_equal_us_ascii_string(a, b)
1538+
assert_equal(a, b)
1539+
assert_equal(Encoding::US_ASCII, b.encoding)
1540+
end
1541+
15371542
def test_to_special_string
15381543
BigDecimal.mode(BigDecimal::EXCEPTION_OVERFLOW, false)
15391544
BigDecimal.mode(BigDecimal::EXCEPTION_NaN, false)
15401545
nan = BigDecimal("NaN")
1541-
assert_equal("NaN", nan.to_s)
1546+
assert_equal_us_ascii_string("NaN", nan.to_s)
15421547
inf = BigDecimal("Infinity")
1543-
assert_equal("Infinity", inf.to_s)
1544-
assert_equal(" Infinity", inf.to_s(" "))
1545-
assert_equal("+Infinity", inf.to_s("+"))
1546-
assert_equal("-Infinity", (-inf).to_s)
1548+
assert_equal_us_ascii_string("Infinity", inf.to_s)
1549+
assert_equal_us_ascii_string(" Infinity", inf.to_s(" "))
1550+
assert_equal_us_ascii_string("+Infinity", inf.to_s("+"))
1551+
assert_equal_us_ascii_string("-Infinity", (-inf).to_s)
15471552
pzero = BigDecimal("0")
1548-
assert_equal("0.0", pzero.to_s)
1549-
assert_equal(" 0.0", pzero.to_s(" "))
1550-
assert_equal("+0.0", pzero.to_s("+"))
1551-
assert_equal("-0.0", (-pzero).to_s)
1553+
assert_equal_us_ascii_string("0.0", pzero.to_s)
1554+
assert_equal_us_ascii_string(" 0.0", pzero.to_s(" "))
1555+
assert_equal_us_ascii_string("+0.0", pzero.to_s("+"))
1556+
assert_equal_us_ascii_string("-0.0", (-pzero).to_s)
15521557
end
15531558

15541559
def test_to_string
1555-
assert_equal("0.01", BigDecimal("0.01").to_s("F"))
1560+
assert_equal_us_ascii_string("0.01", BigDecimal("0.01").to_s("F"))
15561561
s = "0." + "0" * 100 + "1"
1557-
assert_equal(s, BigDecimal(s).to_s("F"))
1562+
assert_equal_us_ascii_string(s, BigDecimal(s).to_s("F"))
15581563
s = "1" + "0" * 100 + ".0"
1559-
assert_equal(s, BigDecimal(s).to_s("F"))
1564+
assert_equal_us_ascii_string(s, BigDecimal(s).to_s("F"))
15601565
end
15611566

15621567
def test_ctov

0 commit comments

Comments
 (0)
0