public void Examples(string examples, string str2, int line) { tableAction(); table = new List<IList<Token>>(); var position = new LineInFile(line); listener.Examples(new Token(examples.Trim(), position), new Token(str2, position)); }
public void Scenario(string scenario, string title, int line) { tableAction(); var lineInFile = new LineInFile(line); listener.Scenario(new Token(scenario.Trim(), lineInFile), new Token(title, lineInFile)); }
public void DocString(string str, int line) { tableAction(); var position = new LineInFile(line); listener.DocString(new Token(str.Trim(), position)); }
public void Step(string step, string stepText, int line) { tableAction(); var position = new LineInFile(line); listener.Step(new Token(step.Trim(), position), new Token(stepText, position)); }
public void Examples(string examples, string str2, int line) { tableAction(); table = new List <IList <Token> >(); var position = new LineInFile(line); listener.Examples(new Token(examples.Trim(), position), new Token(str2, position)); }
public void Feature(string feature, string title, string narrative, int line) { tableAction(); var lineInFile = new LineInFile(line); if (Environment.NewLine == "\r\n") narrative = narrative.Replace("\r", "").Replace("\n", Environment.NewLine); listener.Feature(new Token(feature.Trim(), lineInFile), new Token(title, lineInFile), new Token(narrative, lineInFile)); }
public void Row(List<string> l, int line) { if (table.Any() == false) tableAction = () => ParsedTable(new LineInFile(line)); var columns = l.ToArray(); var lineInFile = new LineInFile(line); var cols = columns.Select(_ => new Token(_, lineInFile)).ToList(); table.Add(cols); }
public void Feature(string feature, string title, string narrative, int line) { tableAction(); var lineInFile = new LineInFile(line); if (Environment.NewLine == "\r\n") { narrative = narrative.Replace("\r", "").Replace("\n", Environment.NewLine); } listener.Feature(new Token(feature.Trim(), lineInFile), new Token(title, lineInFile), new Token(narrative, lineInFile)); }
public void Should_tag_scenario_with_title_spanning_multiple_lines() { var gherkinStepTagger = new GherkinStepTagger(); var line = new LineInFile(0); var evt = new GherkinParseEvent(GherkinTokenType.Scenario, new Token("Scenario", line), new Token("title\n\tbar", line)); ITextSnapshot snapshot = new MockTextSnapshot("bar"); var span = new SnapshotSpan(snapshot, 0, snapshot.Length); var tags = gherkinStepTagger.CreateTags(new[] { evt }, span).ToArray(); Assert.AreEqual(GherkinTokenType.ScenarioTitle, tags[0].Tag.Type); Assert.AreEqual("bar", tags[0].Span.GetText()); }
public void Should_tag_feature_narrative_spanning_multiple_lines() { var gherkinStepTagger = new GherkinStepTagger(); var line = new LineInFile(0); var evt = new GherkinParseEvent(GherkinTokenType.Feature, new Token("Feature", line), new Token("title", line), new Token("foo\r\n\tbar", line)); ITextSnapshot snapshot = new MockTextSnapshot("\tbar\r\n"); var span = new SnapshotSpan(snapshot, 0, snapshot.Length); var tags = gherkinStepTagger.CreateTags(new[] { evt }, span).ToArray(); Assert.AreEqual(GherkinTokenType.FeatureDescription, tags[0].Tag.Type); Assert.AreEqual("bar", tags[0].Span.GetText()); }
public void Row(List <string> l, int line) { if (table.Any() == false) { tableAction = () => ParsedTable(new LineInFile(line)); } var columns = l.ToArray(); var lineInFile = new LineInFile(line); var cols = columns.Select(_ => new Token(_, lineInFile)).ToList(); table.Add(cols); }
public void Table(IList<IList<Token>> rows, LineInFile lineInFile) { if (rows.Any()) { var header = rows.First(); events.Add(new GherkinParseEvent(GherkinTokenType.TableHeader, new Token(string.Join(" | ", header).Trim(), lineInFile))); var cells = rows.Skip(1); var cellLine = lineInFile; foreach (var cell in cells) { cellLine = new LineInFile(cellLine.Line + 1); events.Add(new GherkinParseEvent(GherkinTokenType.TableCell, new Token(string.Join(" | ", cell).Trim(), cellLine))); } } }
public void Should_tag_feature_with_title() { var gherkinStepTagger = new GherkinStepTagger(); var line = new LineInFile(0); var evt = new GherkinParseEvent(GherkinTokenType.Feature, new Token("Feature", line), new Token("title", line), new Token("foo", line)); ITextSnapshot snapshot = new MockTextSnapshot("Feature: title"); var span = new SnapshotSpan(snapshot, 0, snapshot.Length); var tags = gherkinStepTagger.CreateTags(new[] { evt }, span).ToArray(); Assert.AreEqual(GherkinTokenType.Feature, tags[0].Tag.Type); Assert.AreEqual("Feature", tags[0].Span.GetText()); Assert.AreEqual(GherkinTokenType.FeatureTitle, tags[1].Tag.Type); Assert.AreEqual("title", tags[1].Span.GetText()); }
public void Table(IList<IList<Token>> columns, LineInFile lineInFile) { events.Enqueue(new TableEvent(columns, e => TableEvent.Invoke(this, new EventArgs<IList<IList<Token>>>(columns)))); }
public void SyntaxError(string state, string @event, IEnumerable<string> legalEvents, LineInFile lineInFile) { }
private void ParsedTable(LineInFile position) { listener.Table(table, position); tableAction = () => { }; table = new List<IList<Token>>(); }
private void ParsedTable(LineInFile position) { listener.Table(table, position); tableAction = () => { }; table = new List <IList <Token> >(); }
public void Step(string step, string stepText, int line) { tableAction(); var position = new LineInFile(line); listener.Step(new Token(step.Trim(), position), new Token(stepText, position)); }
public void Background(string background, string title, int line) { var lineInFile = new LineInFile(line); listener.Background(new Token(background.Trim(), lineInFile), new Token(title, lineInFile)); }
public void Table(IList<IList<Token>> rows, LineInFile lineInFile) { listeners.ForEach(_ => _.Table(rows, lineInFile)); }
public void SyntaxError(string state, string @event, IEnumerable<string> legalEvents, LineInFile lineInFile) { events.Add(new GherkinParseEvent(GherkinTokenType.SyntaxError, new Token(@event, lineInFile))); }
public void Should_tag_tags() { var gherkinStepTagger = new GherkinStepTagger(); var line = new LineInFile(0); var evt = new GherkinParseEvent(GherkinTokenType.Tag, new Token("Tag", line), new Token("@foo", line), new Token("@bar", line), new Token("@baz", line)); ITextSnapshot snapshot = new MockTextSnapshot("@foo @bar @baz"); var span = new SnapshotSpan(snapshot, 0, snapshot.Length); var tags = gherkinStepTagger.CreateTags(new[] { evt }, span).ToArray(); Assert.AreEqual(GherkinTokenType.Tag, tags[0].Tag.Type); Assert.AreEqual("@foo", tags[0].Span.GetText()); Assert.AreEqual(GherkinTokenType.Tag, tags[1].Tag.Type); Assert.AreEqual("@bar", tags[1].Span.GetText()); Assert.AreEqual(GherkinTokenType.Tag, tags[2].Tag.Type); Assert.AreEqual("@baz", tags[2].Span.GetText()); }
public void DocString(string str, int line) { tableAction(); var position = new LineInFile(line); listener.DocString(new Token(str.Trim(), position)); }
private Tuple<List<GherkinParseEvent>, List<Feature>> Parse(string content) { var features = new List<Feature>(); var nBehaveConfiguration = NBehaveConfiguration.New.DontIsolateInAppDomain().SetDryRun(true); var gherkinScenarioParser = new GherkinScenarioParser(nBehaveConfiguration); gherkinScenarioParser.FeatureEvent += (s, e) => features.Add(e.EventInfo); var gherkinEventListener = new GherkinEventListener(); IListener listener = new CompositeGherkinListener(gherkinEventListener, gherkinScenarioParser); var newEvents = new List<GherkinParseEvent>(); var parser = new Parser(listener); try { parser.Scan(content); } catch (Exception e) { var match = new Regex(@"^Line: (?<lineNumber>\d+). (\w+\s*)+ '(?<lineText>.*)'$").Match(e.Message); if (match.Success && (e is ParseException)) { var line = int.Parse(match.Groups["lineNumber"].Value); var lineInFile = new LineInFile(line - 1); var text = match.Groups["lineText"].Value; var token = new Token(text, lineInFile); var error = new Token(e.Message, lineInFile); newEvents.Add(new GherkinParseEvent(GherkinTokenType.SyntaxError, token, error)); } } finally { newEvents.AddRange(ToZeroBasedLines(gherkinEventListener).ToList()); } return new Tuple<List<GherkinParseEvent>, List<Feature>>(newEvents, features); }
public void Background(string background, string title, int line) { var lineInFile = new LineInFile(line); listener.Background(new Token(background.Trim(), lineInFile), new Token(title, lineInFile)); }
public void Scenario(string scenario, string title, int line) { tableAction(); var lineInFile = new LineInFile(line); listener.Scenario(new Token(scenario.Trim(), lineInFile), new Token(title, lineInFile)); }
public void SyntaxError(string state, string @event, IEnumerable<string> legalEvents, LineInFile lineInFile) { listeners.ForEach(_ => _.SyntaxError(state, @event, legalEvents, lineInFile)); }