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.rb34
1 files changed, 24 insertions, 10 deletions
diff --git a/spec/ruby/library/stringscanner/scan_spec.rb b/spec/ruby/library/stringscanner/scan_spec.rb
index ea711767b9..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,24 +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
it "treats String as the pattern itself" do
- @s.scan("this").should be_nil
+ @s.scan("this").should == 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_error(TypeError)
- -> { @s.scan(:test) }.should raise_error(TypeError)
- -> { @s.scan(mock('x')) }.should raise_error(TypeError)
+ -> { @s.scan(5) }.should.raise(TypeError)
+ -> { @s.scan(:test) }.should.raise(TypeError)
+ -> { @s.scan(mock('x')) }.should.raise(TypeError)
+ end
+
+ 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
@@ -77,11 +91,11 @@ describe "StringScanner#scan with fixed_anchor: true" do
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
+ @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
+ @s.scan(/\A\w/).should == nil
end
end