diff options
| author | KOBAYASHI Shuji <[email protected]> | 2019-12-10 21:31:02 +0900 |
|---|---|---|
| committer | KOBAYASHI Shuji <[email protected]> | 2019-12-10 21:31:30 +0900 |
| commit | bf431e77b8851e87f1a65ad3bf20d7e035b31472 (patch) | |
| tree | e4ba019202bb26a8abc226438940072fc2c3322c /mrbgems/mruby-kernel-ext | |
| parent | 543a9f84d11c2c0e96de52bd2e936467f13d26e8 (diff) | |
| download | mruby-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.rb | 7 |
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 |
