Example #1
0
        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);
        }
Example #2
0
        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)
     });
 }