Esempio n. 1
0
 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));
 }
Esempio n. 2
0
        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));
        }
Esempio n. 3
0
        public void DocString(string str, int line)
        {
            tableAction();
            var position = new LineInFile(line);

            listener.DocString(new Token(str.Trim(), position));
        }
Esempio n. 4
0
        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));
        }
Esempio n. 5
0
        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));
        }
Esempio n. 6
0
 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));
 }
Esempio n. 7
0
        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);
        }
Esempio n. 8
0
        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));
        }
Esempio n. 9
0
        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());
        }
Esempio n. 10
0
        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());
        }
Esempio n. 11
0
        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);
        }
Esempio n. 12
0
 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)));
         }
     }
 }
Esempio n. 13
0
        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());
        }
Esempio n. 14
0
 public void Table(IList<IList<Token>> columns, LineInFile lineInFile)
 {
     events.Enqueue(new TableEvent(columns, e => TableEvent.Invoke(this, new EventArgs<IList<IList<Token>>>(columns))));
 }
Esempio n. 15
0
 public void SyntaxError(string state, string @event, IEnumerable<string> legalEvents, LineInFile lineInFile)
 {
 }
Esempio n. 16
0
 private void ParsedTable(LineInFile position)
 {
     listener.Table(table, position);
     tableAction = () => { };
     table = new List<IList<Token>>();
 }
Esempio n. 17
0
 private void ParsedTable(LineInFile position)
 {
     listener.Table(table, position);
     tableAction = () => { };
     table       = new List <IList <Token> >();
 }
Esempio n. 18
0
 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));
 }
Esempio n. 19
0
        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));
 }
Esempio n. 21
0
 public void SyntaxError(string state, string @event, IEnumerable<string> legalEvents, LineInFile lineInFile)
 {
     events.Add(new GherkinParseEvent(GherkinTokenType.SyntaxError, new Token(@event, lineInFile)));
 }
Esempio n. 22
0
        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());
        }
Esempio n. 23
0
 public void DocString(string str, int line)
 {
     tableAction();
     var position = new LineInFile(line);
     listener.DocString(new Token(str.Trim(), position));
 }
Esempio n. 24
0
 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);
 }
Esempio n. 25
0
 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));
 }
Esempio n. 26
0
 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));
 }