summaryrefslogtreecommitdiff
path: root/test/strscan
diff options
context:
space:
mode:
authorHiroshi SHIBATA <hsbt@ruby-lang.org>2022-12-09 13:03:33 +0900
committerHiroshi SHIBATA <hsbt@ruby-lang.org>2022-12-09 16:36:22 +0900
commit4e31fea77d360c6535e33ff2525d80fba38d15d8 (patch)
tree92bdeec2cadb323f10197d1013c699589feb83d0 /test/strscan
parentbcf01b18cfe9b21bfde32e28edd4745703bf190c (diff)
downloadruby-4e31fea77d360c6535e33ff2525d80fba38d15d8.tar.gz
Merge strscan-3.0.5
Diffstat (limited to 'test/strscan')
-rw-r--r--test/strscan/test_ractor.rb2
-rw-r--r--test/strscan/test_stringscanner.rb33
2 files changed, 34 insertions, 1 deletions
diff --git a/test/strscan/test_ractor.rb b/test/strscan/test_ractor.rb
index 480c1ae8a6..a5de7e56ed 100644
--- a/test/strscan/test_ractor.rb
+++ b/test/strscan/test_ractor.rb
@@ -3,7 +3,7 @@ require 'test/unit'
class TestStringScannerRactor < Test::Unit::TestCase
def setup
- pend unless defined? Ractor
+ omit "Ractor not defined" unless defined? Ractor
end
def test_ractor
diff --git a/test/strscan/test_stringscanner.rb b/test/strscan/test_stringscanner.rb
index 6e30be1f7d..2fb8a17062 100644
--- a/test/strscan/test_stringscanner.rb
+++ b/test/strscan/test_stringscanner.rb
@@ -207,6 +207,8 @@ class TestStringScanner < Test::Unit::TestCase
end
def test_charpos_not_use_string_methods
+ omit "not supported on TruffleRuby" if RUBY_ENGINE == "truffleruby"
+
string = +'abcädeföghi'
scanner = create_string_scanner(string)
@@ -567,6 +569,8 @@ class TestStringScanner < Test::Unit::TestCase
end
def test_invalid_encoding_string
+ omit "no encoding check on TruffleRuby for scan(String)" if RUBY_ENGINE == "truffleruby"
+
str = "\xA1\xA2".dup.force_encoding("euc-jp")
ss = create_string_scanner(str)
assert_raise(Encoding::CompatibilityError) do
@@ -712,6 +716,8 @@ class TestStringScanner < Test::Unit::TestCase
end
def test_aref_without_regex
+ omit "#[:missing] always raises on TruffleRuby if matched" if RUBY_ENGINE == "truffleruby"
+
s = create_string_scanner('abc')
s.get_byte
assert_nil(s[:c])
@@ -757,6 +763,33 @@ class TestStringScanner < Test::Unit::TestCase
assert_equal(false, StringScanner.new("a", fixed_anchor: nil).fixed_anchor?)
assert_equal(false, StringScanner.new("a", fixed_anchor: false).fixed_anchor?)
end
+
+ def test_scan_aref_repeatedly
+ s = StringScanner.new('test string')
+ assert_equal "test", s.scan(/\w(\w)(\w*)/)
+ assert_equal "test", s[0]
+ assert_equal "e", s[1]
+ assert_equal "st", s[2]
+ assert_nil s.scan(/\w+/)
+ assert_nil s[0]
+ assert_nil s[1]
+ assert_nil s[2]
+ assert_equal " ", s.scan(/\s+/)
+ assert_equal " ", s[0]
+ assert_nil s[1]
+ assert_nil s[2]
+ assert_equal "string", s.scan(/\w(\w)(\w*)/)
+ assert_equal "string", s[0]
+ assert_equal "t", s[1]
+ assert_equal "ring", s[2]
+ end
+
+ def test_named_captures
+ omit("not implemented on TruffleRuby") if ["truffleruby"].include?(RUBY_ENGINE)
+ scan = StringScanner.new("foobarbaz")
+ assert_equal(9, scan.match?(/(?<f>foo)(?<r>bar)(?<z>baz)/))
+ assert_equal({"f" => "foo", "r" => "bar", "z" => "baz"}, scan.named_captures)
+ end
end
class TestStringScannerFixedAnchor < TestStringScanner