package cucumber.runtime.model; import cucumber.runtime.Runtime; import gherkin.formatter.Formatter; import gherkin.formatter.Reporter; import gherkin.formatter.model.Row; import gherkin.formatter.model.Tag; import gherkin.formatter.model.TagStatement; import java.util.HashSet; import java.util.Set; import static gherkin.util.FixJava.join; public abstract class CucumberTagStatement extends StepContainer { private final TagStatement gherkinModel; private final String visualName; CucumberTagStatement(CucumberFeature cucumberFeature, TagStatement gherkinModel) { super(cucumberFeature, gherkinModel); this.gherkinModel = gherkinModel; this.visualName = gherkinModel.getKeyword() + ": " + gherkinModel.getName(); } CucumberTagStatement(CucumberFeature cucumberFeature, TagStatement gherkinModel, Row example) { super(cucumberFeature, gherkinModel); this.gherkinModel = gherkinModel; this.visualName = "| " + join(example.getCells(), " | ") + " |"; } protected Set<Tag> tagsAndInheritedTags() { Set<Tag> tags = new HashSet<Tag>(); tags.addAll(cucumberFeature.getGherkinFeature().getTags()); tags.addAll(gherkinModel.getTags()); return tags; } public String getVisualName() { return visualName; } public TagStatement getGherkinModel() { return gherkinModel; } public abstract void run(Formatter formatter, Reporter reporter, Runtime runtime); }