package cucumber.runtime.model; import gherkin.formatter.Formatter; import gherkin.formatter.model.Examples; import gherkin.formatter.model.ExamplesTableRow; import gherkin.formatter.model.Tag; import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; public class CucumberExamples { private final CucumberScenarioOutline cucumberScenarioOutline; private final Examples examples; public CucumberExamples(CucumberScenarioOutline cucumberScenarioOutline, Examples examples) { this.cucumberScenarioOutline = cucumberScenarioOutline; this.examples = examples; } public List<CucumberScenario> createExampleScenarios() { List<CucumberScenario> exampleScenarios = new ArrayList<CucumberScenario>(); List<ExamplesTableRow> rows = examples.getRows(); List<Tag> tags = new ArrayList<Tag>(tagsAndInheritedTags()); for (int i = 1; i < rows.size(); i++) { exampleScenarios.add(cucumberScenarioOutline.createExampleScenario(rows.get(0), rows.get(i), tags, examples.getDescription())); } return exampleScenarios; } private Set<Tag> tagsAndInheritedTags() { Set<Tag> tags = new HashSet<Tag>(); tags.addAll(cucumberScenarioOutline.tagsAndInheritedTags()); tags.addAll(examples.getTags()); return tags; } public Examples getExamples() { return examples; } public void format(Formatter formatter) { examples.replay(formatter); } }