summaryrefslogtreecommitdiffhomepage
path: root/mrbgems/mruby-kernel-ext
diff options
context:
space:
mode:
authorKOBAYASHI Shuji <[email protected]>2019-12-10 21:31:02 +0900
committerKOBAYASHI Shuji <[email protected]>2019-12-10 21:31:30 +0900
commitbf431e77b8851e87f1a65ad3bf20d7e035b31472 (patch)
treee4ba019202bb26a8abc226438940072fc2c3322c /mrbgems/mruby-kernel-ext
parent543a9f84d11c2c0e96de52bd2e936467f13d26e8 (diff)
downloadmruby-bf431e77b8851e87f1a65ad3bf20d7e035b31472.tar.gz
mruby-bf431e77b8851e87f1a65ad3bf20d7e035b31472.zip
Fix behavior of `String#to_i`/`Kernel#Integer` to numbers starting with `_`
#### Before this patch: ```ruby Integer("_1") #=> 1 "_1".to_i #=> 1 ``` #### After this patch (same as Ruby): ```ruby Integer("_1") #=> ArgumentError "_1".to_i #=> 0 ```
Diffstat (limited to 'mrbgems/mruby-kernel-ext')
-rw-r--r--mrbgems/mruby-kernel-ext/test/kernel.rb7
1 files changed, 7 insertions, 0 deletions
diff --git a/mrbgems/mruby-kernel-ext/test/kernel.rb b/mrbgems/mruby-kernel-ext/test/kernel.rb
index 2bd901a4c..4966e4c88 100644
--- a/mrbgems/mruby-kernel-ext/test/kernel.rb
+++ b/mrbgems/mruby-kernel-ext/test/kernel.rb
@@ -55,11 +55,15 @@ assert('Kernel#Integer') do
assert_operator(0, :eql?, Integer("0"))
assert_operator(0, :eql?, Integer("00000"))
assert_operator(123, :eql?, Integer('1_2_3'))
+ assert_operator(123, :eql?, Integer("\t\r\n\f\v 123 \t\r\n\f\v"))
assert_raise(TypeError) { Integer(nil) }
assert_raise(ArgumentError) { Integer('a') }
assert_raise(ArgumentError) { Integer('4a5') }
assert_raise(ArgumentError) { Integer('1_2__3') }
assert_raise(ArgumentError) { Integer('68_') }
+ assert_raise(ArgumentError) { Integer('_68') }
+ assert_raise(ArgumentError) { Integer(' _68') }
+ assert_raise(ArgumentError) { Integer('6 8') }
assert_raise(ArgumentError) { Integer("15\0") }
assert_raise(ArgumentError) { Integer("15.0") }
skip unless Object.const_defined?(:Float)
@@ -74,7 +78,9 @@ assert('Kernel#Float') do
assert_operator(123.0, :eql?, Float('1_2_3'))
assert_operator(12.34, :eql?, Float('1_2.3_4'))
assert_operator(0.9, :eql?, Float('.9'))
+ assert_operator(0.9, :eql?, Float(" \t\r\n\f\v.9 \t\r\n\f\v"))
assert_raise(TypeError) { Float(nil) }
+ assert_raise(ArgumentError) { Float("1. 5") }
assert_raise(ArgumentError) { Float("1.5a") }
assert_raise(ArgumentError) { Float("1.5\0") }
assert_raise(ArgumentError) { Float('a') }
@@ -84,6 +90,7 @@ assert('Kernel#Float') do
assert_raise(ArgumentError) { Float('68._7') }
assert_raise(ArgumentError) { Float('68.7_') }
assert_raise(ArgumentError) { Float('_68') }
+ assert_raise(ArgumentError) { Float(' _68') }
assert_raise(ArgumentError) { Float('1_2.3__4') }
end