static bool AddScenario(ParserContext context) { if (context.Step != null) { context.Steps.Add(context.Step()); } if (context.Scenario != null) { context.Scenarios.Add(context.Scenario()); } if (context.Keyword == null || !context.IsWord) { return(false); } var steps = new List <Step> (); context.Steps = steps; context.Examples = null; context.Table = null; var tags = context.Tags; context.Tags = new List <string> (); var content = context.RemainingContent; var fileName = context.FileName; var line = context.LineNumber; var column = context.Column; var keyword = context.Keyword; switch (context.Keyword) { case "Scenario Outline:": context.Scenario = () => { if (context.Examples == null && steps.Count > 0) { context.Errors.Add(new Error(ErrorType.Error, "Expecting Examples for Scenario Outline", new DomRegion(line, column, line, column + keyword.Length))); } Examples examples = null; if (context.Examples != null) { examples = context.Examples(); if (examples.Table != null && examples.Table.Header != null) { foreach (var j in steps) { foreach (var k in j.Placeholders) { if (!examples.Table.Header.Columns.Contains(k.Name)) { context.Errors.Add(new Error(ErrorType.Warning, "Placeholder does not match column in table", new DomRegion(k.Line, k.Column, line, k.Column + k.Name.Length))); } } } } } return(new ScenarioOutline(examples, steps, tags, content, fileName, line, column)); }; break; case "Scenario:": context.Scenario = () => new Scenario(steps, tags, content, fileName, line, column); break; case "Background:": context.Scenario = () => new Background(steps, tags, fileName, line, column); break; } return(true); }
public ScenarioOutline(Examples examples, IList<Step> actions, IList<string> tags, string name, string file, int line, int column) : base(actions, tags, name, file, line, column) { Examples = examples; }
public ScenarioOutline(Examples examples, IList <Step> actions, IList <string> tags, string name, string file, int line, int column) : base(actions, tags, name, file, line, column) { Examples = examples; }