summaryrefslogtreecommitdiffhomepage
path: root/mrbgems/mruby-kernel-ext
diff options
context:
space:
mode:
authorKOBAYASHI Shuji <[email protected]>2019-12-09 21:47:59 +0900
committerKOBAYASHI Shuji <[email protected]>2019-12-09 21:47:59 +0900
commit0893ee492c189e4d2c5badfd326a2e45049c89a5 (patch)
tree94a9d96b616d91deb2876ef3b9c9e84eb35a613e /mrbgems/mruby-kernel-ext
parent8267993988971a7797cdc8a5c6d161f3355f1af2 (diff)
downloadmruby-0893ee492c189e4d2c5badfd326a2e45049c89a5.tar.gz
mruby-0893ee492c189e4d2c5badfd326a2e45049c89a5.zip
Fix that `String#to_f` accepts consecutive `_` as a numeric expression
Consecutive `_` is not allowed as a numeric expression: 1_2__3 #=> SyntaxError Float("1_2__3") #=> ArgumentError Integer("1_2__3") #=> ArgumentError "1_2__3".to_i #=> 12 But `String#to_f` accept it, so I fixed the issue. Before this patch: "1_2__3".to_f #=> 123 After this patch: "1_2__3".to_f #=> 12
Diffstat (limited to 'mrbgems/mruby-kernel-ext')
-rw-r--r--mrbgems/mruby-kernel-ext/test/kernel.rb36
1 files changed, 27 insertions, 9 deletions
diff --git a/mrbgems/mruby-kernel-ext/test/kernel.rb b/mrbgems/mruby-kernel-ext/test/kernel.rb
index ad9177165..2bd901a4c 100644
--- a/mrbgems/mruby-kernel-ext/test/kernel.rb
+++ b/mrbgems/mruby-kernel-ext/test/kernel.rb
@@ -49,24 +49,42 @@ assert('Kernel#__method__') do
end
assert('Kernel#Integer') do
- assert_equal(26, Integer("0x1a"))
- assert_equal(930, Integer("0930", 10))
- assert_equal(7, Integer("111", 2))
- assert_equal(0, Integer("0"))
- assert_equal(0, Integer("00000"))
+ assert_operator(26, :eql?, Integer("0x1a"))
+ assert_operator(930, :eql?, Integer("0930", 10))
+ assert_operator(7, :eql?, Integer("111", 2))
+ assert_operator(0, :eql?, Integer("0"))
+ assert_operator(0, :eql?, Integer("00000"))
+ assert_operator(123, :eql?, Integer('1_2_3'))
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("15\0") }
+ assert_raise(ArgumentError) { Integer("15.0") }
skip unless Object.const_defined?(:Float)
- assert_equal(123, Integer(123.999))
+ assert_operator(123, :eql?, Integer(123.999))
end
assert('Kernel#Float') do
skip unless Object.const_defined?(:Float)
- assert_equal(1.0, Float(1))
- assert_equal(123.456, Float(123.456))
- assert_equal(123.456, Float("123.456"))
+ assert_operator(1.0, :eql?, Float(1))
+ assert_operator(123.456, :eql?, Float(123.456))
+ assert_operator(123.456, :eql?, Float("123.456"))
+ 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_raise(TypeError) { Float(nil) }
assert_raise(ArgumentError) { Float("1.5a") }
assert_raise(ArgumentError) { Float("1.5\0") }
+ assert_raise(ArgumentError) { Float('a') }
+ assert_raise(ArgumentError) { Float('4a5') }
+ assert_raise(ArgumentError) { Float('1_2__3') }
+ assert_raise(ArgumentError) { Float('68_') }
+ assert_raise(ArgumentError) { Float('68._7') }
+ assert_raise(ArgumentError) { Float('68.7_') }
+ assert_raise(ArgumentError) { Float('_68') }
+ assert_raise(ArgumentError) { Float('1_2.3__4') }
end
assert('Kernel#String') do