// Copyright © 2011-2013, Esko Luontola <www.orfjackal.net>
// This software is released under the Apache License 2.0.
// The license text is at http://www.apache.org/licenses/LICENSE-2.0
package fi.jumi.core.suite;
import fi.jumi.api.drivers.Driver;
import fi.jumi.core.api.SuiteListener;
import fi.jumi.core.drivers.DriverFinder;
import fi.jumi.core.testbench.*;
import fi.jumi.core.util.SpyListener;
import java.io.PrintStream;
public abstract class SuiteRunnerIntegrationHelper {
private final SpyListener<SuiteListener> spy = new SpyListener<>(SuiteListener.class);
protected final SuiteListener expect = spy.getListener();
private final TestBench testBench = new TestBench();
protected final PrintStream stdout = testBench.out;
protected final PrintStream stderr = testBench.err;
protected void runAndCheckExpectations(Driver driver, Class<?>... testClasses) {
spy.replay();
run(driver, testClasses);
spy.verify();
}
protected void run(Driver driver, Class<?>... testClasses) {
run(new StubDriverFinder(driver), testClasses);
}
protected void run(DriverFinder driverFinder, Class<?>... testClasses) {
run(expect, driverFinder, testClasses);
}
protected void run(SuiteListener suiteListener, Driver driver, Class<?>... testClasses) {
run(suiteListener, new StubDriverFinder(driver), testClasses);
}
protected void run(SuiteListener suiteListener, DriverFinder driverFinder, Class<?>... testClasses) {
testBench.setDriverFinder(driverFinder);
testBench.run(suiteListener, testClasses);
}
}