diff options
Diffstat (limited to 'spec/ruby/library/stringscanner/unscan_spec.rb')
| -rw-r--r-- | spec/ruby/library/stringscanner/unscan_spec.rb | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/spec/ruby/library/stringscanner/unscan_spec.rb b/spec/ruby/library/stringscanner/unscan_spec.rb new file mode 100644 index 0000000000..f738778273 --- /dev/null +++ b/spec/ruby/library/stringscanner/unscan_spec.rb @@ -0,0 +1,28 @@ +require_relative '../../spec_helper' +require 'strscan' + +describe "StringScanner#unscan" do + before :each do + @s = StringScanner.new("This is a test") + end + + it "set the scan pointer to the previous position" do + @s.scan(/This/) + @s.unscan + @s.matched.should == nil + @s.pos.should == 0 + end + + it "remember only one previous position" do + @s.scan(/This/) + pos = @s.pos + @s.scan(/ is/) + @s.unscan + @s.pos.should == pos + end + + it "raises a StringScanner::Error when the previous match had failed" do + -> { @s.unscan }.should.raise(StringScanner::Error) + -> { @s.scan(/\d/); @s.unscan }.should.raise(StringScanner::Error) + end +end |
