diff options
Diffstat (limited to 'spec/ruby/library/stringscanner/scan_spec.rb')
| -rw-r--r-- | spec/ruby/library/stringscanner/scan_spec.rb | 70 |
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 |
