summaryrefslogtreecommitdiff
path: root/test/strscan/test_stringscanner.rb
diff options
context:
space:
mode:
authorJean Boussier <[email protected]>2025-02-20 10:25:03 +0100
committerHiroshi SHIBATA <[email protected]>2025-02-21 11:31:36 +0900
commitbf6c106d5467b51efb88fe6252093a59dbeeddee (patch)
tree048360ca872a85850d158e857a911ee5841b8caf /test/strscan/test_stringscanner.rb
parent0f8a6e1f592d19330695cc4c632f8fe2e08f2dd1 (diff)
[ruby/strscan] `scan_integer(base: 16)` ignore x suffix if not
followed by hexadecimal (https://github.com/ruby/strscan/pull/141) Fix: https://github.com/ruby/strscan/issues/140 `0x<EOF>`, `0xZZZ` should be parsed as `0` instead of not matching at all. https://github.com/ruby/strscan/commit/c4e4795ed2
Diffstat (limited to 'test/strscan/test_stringscanner.rb')
-rw-r--r--test/strscan/test_stringscanner.rb23
1 files changed, 14 insertions, 9 deletions
diff --git a/test/strscan/test_stringscanner.rb b/test/strscan/test_stringscanner.rb
index eb35dfa119..2f68331da5 100644
--- a/test/strscan/test_stringscanner.rb
+++ b/test/strscan/test_stringscanner.rb
@@ -1052,19 +1052,24 @@ module StringScannerTests
assert_predicate(s, :matched?)
s = create_string_scanner('0x')
- assert_nil(s.scan_integer(base: 16))
- assert_equal(0, s.pos)
- refute_predicate(s, :matched?)
+ assert_equal(0, s.scan_integer(base: 16))
+ assert_equal(1, s.pos)
+ assert_predicate(s, :matched?)
+
+ s = create_string_scanner('0xyz')
+ assert_equal(0, s.scan_integer(base: 16))
+ assert_equal(1, s.pos)
+ assert_predicate(s, :matched?)
s = create_string_scanner('-0x')
- assert_nil(s.scan_integer(base: 16))
- assert_equal(0, s.pos)
- refute_predicate(s, :matched?)
+ assert_equal(0, s.scan_integer(base: 16))
+ assert_equal(2, s.pos)
+ assert_predicate(s, :matched?)
s = create_string_scanner('+0x')
- assert_nil(s.scan_integer(base: 16))
- assert_equal(0, s.pos)
- refute_predicate(s, :matched?)
+ assert_equal(0, s.scan_integer(base: 16))
+ assert_equal(2, s.pos)
+ assert_predicate(s, :matched?)
s = create_string_scanner('-123abc')
assert_equal(-0x123abc, s.scan_integer(base: 16))