package fitnesse.responders.run.formatters;
import fitnesse.responders.run.TestPage;
import fitnesse.wiki.WikiPage;
import fitnesse.responders.run.CompositeExecutionLog;
import fitnesse.responders.run.TestSystem;
import fitnesse.responders.run.TestSummary;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import util.TimeMeasurement;
public class CompositeFormatter extends BaseFormatter {
List<BaseFormatter> formatters = new ArrayList<BaseFormatter>();
public void add(BaseFormatter formatter) {
formatters.add(formatter);
}
@Override
protected WikiPage getPage() {
throw new RuntimeException("Should not get here.");
}
@Override
public void errorOccured() {
for (BaseFormatter formatter : formatters)
formatter.errorOccured();
}
@Override
public void announceNumberTestsToRun(int testsToRun) {
for (BaseFormatter formatter : formatters)
formatter.announceNumberTestsToRun(testsToRun);
}
@Override
public void addMessageForBlankHtml() throws Exception {
for (BaseFormatter formatter : formatters)
formatter.addMessageForBlankHtml();
}
public void setExecutionLogAndTrackingId(String stopResponderId, CompositeExecutionLog log) {
for (BaseFormatter formatter : formatters)
formatter.setExecutionLogAndTrackingId(stopResponderId, log);
}
public void testSystemStarted(TestSystem testSystem, String testSystemName, String testRunner) {
for (BaseFormatter formatter : formatters)
formatter.testSystemStarted(testSystem, testSystemName, testRunner);
}
public void newTestStarted(TestPage test, TimeMeasurement timeMeasurement) throws IOException {
for (BaseFormatter formatter : formatters)
formatter.newTestStarted(test, timeMeasurement);
}
public void testOutputChunk(String output) throws IOException {
for (BaseFormatter formatter : formatters)
formatter.testOutputChunk(output);
}
public void testComplete(TestPage test, TestSummary testSummary, TimeMeasurement timeMeasurement) throws IOException {
for (BaseFormatter formatter : formatters)
formatter.testComplete(test, testSummary, timeMeasurement);
}
@Override
public void allTestingComplete(TimeMeasurement totalTimeMeasurement) throws IOException {
for (BaseFormatter formatter : formatters) {
formatter.allTestingComplete(totalTimeMeasurement);
}
}
public int getErrorCount() {
int exitCode = 0;
for (BaseFormatter formatter : formatters)
exitCode = Math.max(exitCode, formatter.getErrorCount());
return exitCode;
}
}