package stepdef.subtest; import gherkin.formatter.Formatter; import gherkin.formatter.Reporter; import gherkin.formatter.model.Background; import gherkin.formatter.model.Examples; import gherkin.formatter.model.Feature; import gherkin.formatter.model.Match; import gherkin.formatter.model.Result; import gherkin.formatter.model.Scenario; import gherkin.formatter.model.ScenarioOutline; import gherkin.formatter.model.Step; import com.github.shell88.bddvideoannotator.javaadapters.CucumberReportingAdapter; import java.util.List; /** * TestProxy which will be used to execute tests on a mocked * {@link com.github.shell88.bddvideoannotator.javaadapters.CucumberReportingAdapter} * * @author Hell * */ /*TODO: simplify design of redirects to underlying instance maybe a Mediator can match the corresponding methods */ public class CucumberReportingAdapterTestProxy implements Reporter, Formatter { private static CucumberReportingAdapter testMock; /** * Initializes the Testproxy from the SubTest. * A concrete adapter instance must be set before * {@link #setUnderlyingInstance(CucumberReportingAdapter)} */ public CucumberReportingAdapterTestProxy() { if (testMock == null) { throw new RuntimeException("No Adapter instance for proxy set!"); } } public static void setUnderlyingInstance(CucumberReportingAdapter instance) { testMock = instance; } public static CucumberReportingAdapter getUnderlyingInstance() { return testMock; } @Override public void before(Match match, Result result) { testMock.before(match, result); } @Override public void result(Result result) { testMock.result(result); } @Override public void after(Match match, Result result) { testMock.after(match, result); } @Override public void match(Match match) { testMock.match(match); } @Override public void embedding(String mimeType, byte[] data) { testMock.embedding(mimeType, data); } @Override public void write(String text) { testMock.write(text); } @Override public void syntaxError(String state, String event, List<String> legalEvents, String uri, Integer line) { testMock.syntaxError(state, event, legalEvents, uri, line); } @Override public void uri(String uri) { testMock.uri(uri); } @Override public void feature(Feature feature) { testMock.feature(feature); } @Override public void scenarioOutline(ScenarioOutline scenarioOutline) { testMock.scenarioOutline(scenarioOutline); } @Override public void examples(Examples examples) { testMock.examples(examples); } @Override public void startOfScenarioLifeCycle(Scenario scenario) { testMock.startOfScenarioLifeCycle(scenario); } @Override public void background(Background background) { testMock.background(background); } @Override public void scenario(Scenario scenario) { testMock.scenario(scenario); } @Override public void step(Step step) { testMock.step(step); } @Override public void endOfScenarioLifeCycle(Scenario scenario) { testMock.endOfScenarioLifeCycle(scenario); } @Override public void done() { testMock.done(); } @Override public void close() { testMock.close(); } @Override public void eof() { testMock.eof(); } }