protected virtual void CompileScenario(List <Pickle> pickles, IEnumerable <PickleStep> backgroundSteps, Scenario scenario, IEnumerable <Tag> featureTags, string language) { var steps = new List <PickleStep>(); if (scenario.Steps.Any()) { steps.AddRange(backgroundSteps); } var scenarioTags = new List <Tag>(); scenarioTags.AddRange(featureTags); scenarioTags.AddRange(scenario.Tags); steps.AddRange(PickleSteps(scenario)); Pickle pickle = new Pickle( scenario.Name, language, steps, PickleTags(scenarioTags), SingletonList(PickleLocation(scenario.Location)) ); pickles.Add(pickle); }
protected virtual void CompileScenarioOutline(List <Pickle> pickles, IEnumerable <PickleStep> backgroundSteps, Scenario scenarioOutline, IEnumerable <Tag> featureTags, string language) { foreach (var examples in scenarioOutline.Examples) { if (examples.TableHeader == null) { continue; } var variableCells = examples.TableHeader.Cells; foreach (var values in examples.TableBody) { var valueCells = values.Cells; var steps = new List <PickleStep>(); if (scenarioOutline.Steps.Any()) { steps.AddRange(backgroundSteps); } var tags = new List <Tag>(); tags.AddRange(featureTags); tags.AddRange(scenarioOutline.Tags); tags.AddRange(examples.Tags); foreach (var scenarioOutlineStep in scenarioOutline.Steps) { string stepText = Interpolate(scenarioOutlineStep.Text, variableCells, valueCells); // TODO: Use an Array of location in DataTable/DocString as well. // If the Gherkin AST classes supported // a list of locations, we could just reuse the same classes PickleStep pickleStep = CreatePickleStep( scenarioOutlineStep, stepText, CreatePickleArguments(scenarioOutlineStep.Argument, variableCells, valueCells), new[] { PickleLocation(values.Location), PickleStepLocation(scenarioOutlineStep) } ); steps.Add(pickleStep); } Pickle pickle = new Pickle( Interpolate(scenarioOutline.Name, variableCells, valueCells), language, steps, PickleTags(tags), new[] { PickleLocation(values.Location), PickleLocation(scenarioOutline.Location) } ); pickles.Add(pickle); } } }
public Events.Args.Pickle.PickleEventArgs Convert(Pickle pickle, string sourceEventUri) { return(new Events.Args.Pickle.PickleEventArgs() { Name = pickle.Name == string.Empty ? null : pickle.Name, Locations = pickle.Locations.Select(ConvertLocation).ToReadOnlyCollection(), Language = pickle.Language, Uri = sourceEventUri, Steps = ConvertSteps(pickle.Steps) }); }