summaryrefslogtreecommitdiff
path: root/spec/ruby/library/stringscanner/scan_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/ruby/library/stringscanner/scan_spec.rb')
-rw-r--r--spec/ruby/library/stringscanner/scan_spec.rb70
1 files changed, 37 insertions, 33 deletions
diff --git a/spec/ruby/library/stringscanner/scan_spec.rb b/spec/ruby/library/stringscanner/scan_spec.rb
index 2269abd6b3..ee8a9eb103 100644
--- a/spec/ruby/library/stringscanner/scan_spec.rb
+++ b/spec/ruby/library/stringscanner/scan_spec.rb
@@ -15,7 +15,7 @@ describe "StringScanner#scan" do
it "treats ^ as matching from the beginning of the current position" do
@s.scan(/\w+/).should == "This"
- @s.scan(/^\d/).should be_nil
+ @s.scan(/^\d/).should == nil
@s.scan(/^\s/).should == " "
end
@@ -26,7 +26,7 @@ describe "StringScanner#scan" do
it "treats \\A as matching from the beginning of the current position" do
@s.scan(/\w+/).should == "This"
- @s.scan(/\A\d/).should be_nil
+ @s.scan(/\A\d/).should == nil
@s.scan(/\A\s/).should == " "
end
@@ -41,32 +41,38 @@ describe "StringScanner#scan" do
it "returns nil when there is no more to scan" do
@s.scan(/[\w\s]+/).should == "This is a test"
- @s.scan(/\w+/).should be_nil
+ @s.scan(/\w+/).should == nil
end
it "returns an empty string when the pattern matches empty" do
@s.scan(/.*/).should == "This is a test"
@s.scan(/.*/).should == ""
- @s.scan(/./).should be_nil
+ @s.scan(/./).should == nil
end
- ruby_version_is ""..."2.7" do
- it "raises a TypeError if pattern is a String" do
- -> { @s.scan("aoeu") }.should raise_error(TypeError)
- end
+ it "treats String as the pattern itself" do
+ @s.scan("this").should == nil
+ @s.scan("This").should == "This"
end
- ruby_version_is "2.7" do
- it "treats String as the pattern itself" do
- @s.scan("this").should be_nil
- @s.scan("This").should == "This"
- end
+ it "raises a TypeError if pattern isn't a Regexp nor String" do
+ -> { @s.scan(5) }.should.raise(TypeError)
+ -> { @s.scan(:test) }.should.raise(TypeError)
+ -> { @s.scan(mock('x')) }.should.raise(TypeError)
end
- it "raises a TypeError if pattern isn't a Regexp nor String" do
- -> { @s.scan(5) }.should raise_error(TypeError)
- -> { @s.scan(:test) }.should raise_error(TypeError)
- -> { @s.scan(mock('x')) }.should raise_error(TypeError)
+ describe "#[] successive call with a capture group name" do
+ it "returns matched substring when matching succeeded" do
+ @s.scan(/(?<a>This)/)
+ @s.should.matched?
+ @s[:a].should == "This"
+ end
+
+ it "returns nil when matching failed" do
+ @s.scan(/(?<a>2008)/)
+ @s.should_not.matched?
+ @s[:a].should == nil
+ end
end
end
@@ -75,23 +81,21 @@ describe "StringScanner#scan with fixed_anchor: true" do
@s = StringScanner.new("This\nis\na\ntest", fixed_anchor: true)
end
- ruby_version_is "2.7" do
- it "returns the matched string" do
- @s.scan(/\w+/).should == "This"
- @s.scan(/.../m).should == "\nis"
- @s.scan(//).should == ""
- @s.scan(/\s+/).should == "\n"
- end
+ it "returns the matched string" do
+ @s.scan(/\w+/).should == "This"
+ @s.scan(/.../m).should == "\nis"
+ @s.scan(//).should == ""
+ @s.scan(/\s+/).should == "\n"
+ end
- it "treats ^ as matching from the beginning of line" do
- @s.scan(/\w+\n/).should == "This\n"
- @s.scan(/^\w/).should == "i"
- @s.scan(/^\w/).should be_nil
- end
+ it "treats ^ as matching from the beginning of line" do
+ @s.scan(/\w+\n/).should == "This\n"
+ @s.scan(/^\w/).should == "i"
+ @s.scan(/^\w/).should == nil
+ end
- it "treats \\A as matching from the beginning of string" do
- @s.scan(/\A\w/).should == "T"
- @s.scan(/\A\w/).should be_nil
- end
+ it "treats \\A as matching from the beginning of string" do
+ @s.scan(/\A\w/).should == "T"
+ @s.scan(/\A\w/).should == nil
end
end