Ejemplo n.º 1
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));
        }
Ejemplo n.º 2
0
        public List <Seat> MapToList(string map, int VenueID)
        {
            char[] seperator = { '\n' };
            Console.Out.Write(map);
            string[] FileArr = map.Split(seperator);
            Console.Out.WriteLine(FileArr);
            int         LineIndex   = 0;
            int         CharIndex   = 0;
            List <Seat> VenueLayout = new List <Seat>();

            foreach (string LineInFile in FileArr)
            {
                char[] CharArr = LineInFile.Trim().ToCharArray();
                CharIndex = 0;
                foreach (char CharInLine in CharArr)
                {
                    if (CharInLine != '0')
                    {
                        Seat temp = new Seat();
                        temp.SeatCatergory  = CharInLine - '0';
                        temp.SeatXCordinate = CharIndex;
                        temp.SeatYCordinate = LineIndex;
                        temp.VenueId        = VenueID;
                        VenueLayout.Add(temp);
                    }
                    CharIndex++;
                }
                LineIndex++;
            }
            return(VenueLayout);
        }
Ejemplo n.º 3
0
    public Venue(string Name, string FileName)
    {
        string[] FileArr = { "" };
        try
        {
            FileArr = System.IO.File.ReadAllLines(FileName);
        } catch (System.IO.FileNotFoundException)
        {
            Console.Out.WriteLine("But it does exist -_-");
        }
        int LineIndex = 0;
        int CharIndex = 0;

        VenueLayout = new List <Seat>();

        foreach (string LineInFile in FileArr)
        {
            char[] CharArr = LineInFile.ToCharArray();
            CharIndex = 0;
            foreach (char CharInLine in CharArr)
            {
                if (CharInLine != '0')
                {
                    VenueLayout.Add(new Seat(CharInLine - '0', CharIndex, LineIndex));
                }
                CharIndex++;
            }
            LineIndex++;
        }
    }
Ejemplo n.º 4
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());
        }
Ejemplo n.º 5
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());
        }
Ejemplo n.º 6
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)));
         }
     }
 }
Ejemplo n.º 7
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());
        }
Ejemplo n.º 8
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());
        }
Ejemplo n.º 9
0
 public Token(string content, LineInFile lineInFile)
 {
     LineInFile = lineInFile;
     Content = content;
 }
Ejemplo n.º 10
0
 public Token(string content, LineInFile lineInFile)
 {
     LineInFile = lineInFile;
     Content    = content;
 }
Ejemplo n.º 11
0
 public void SyntaxError(string state, string @event, IEnumerable <string> legalEvents, LineInFile lineInFile)
 {
 }
Ejemplo n.º 12
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))));
 }
Ejemplo n.º 13
0
 public void SyntaxError(string state, string @event, IEnumerable <string> legalEvents, LineInFile lineInFile)
 {
     events.Add(new GherkinParseEvent(GherkinTokenType.SyntaxError, new Token(@event, lineInFile)));
 }
Ejemplo n.º 14
0
 public void SyntaxError(string state, string @event, IEnumerable <string> legalEvents, LineInFile lineInFile)
 {
     listeners.ForEach(_ => _.SyntaxError(state, @event, legalEvents, lineInFile));
 }
Ejemplo n.º 15
0
 public void Table(IList <IList <Token> > rows, LineInFile lineInFile)
 {
     listeners.ForEach(_ => _.Table(rows, lineInFile));
 }