1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
|
require 'spec_helper'
module OptionalSpec
describe "An optional terminal symbol" do
testing_expression '"foo"?'
it "parses input matching the terminal" do
parse('foo').should_not be_nil
end
it "parses epsilon, recording a failure" do
parse('') do |result|
result.should_not be_nil
result.interval.should == (0...0)
terminal_failures = parser.terminal_failures
terminal_failures.size.should == 1
failure = terminal_failures.first
failure.index.should == 0
failure.expected_string.should == '"foo"'
end
end
it "parses input not matching the terminal, returning an epsilon result and recording a failure" do
parse('bar', :consume_all_input => false) do |result|
result.should_not be_nil
result.interval.should == (0...0)
terminal_failures = parser.terminal_failures
terminal_failures.size.should == 1
failure = terminal_failures.first
failure.index.should == 0
failure.expected_string.should == '"foo"'
end
end
end
end
|