class EmailableReporter2 {
/**
* Writes the scenario summary for the results of a given state for a single
* test.
*/
private int writeScenarioSummary(String description,
List<ClassResult> classResults, String cssClassPrefix,
int startingScenarioIndex) {
int scenarioCount = 0;
if (!classResults.isEmpty()) {
writer.print("<tr><th colspan=\"4\">");
writer.print(description);
writer.print("</th></tr>");
int scenarioIndex = startingScenarioIndex;
int classIndex = 0;
for (ClassResult classResult : classResults) {
String cssClass = cssClassPrefix
+ ((classIndex % 2) == 0 ? "even" : "odd");
buffer.setLength(0);
int scenariosPerClass = 0;
int methodIndex = 0;
for (MethodResult methodResult : classResult.getMethodResults()) {
List<ITestResult> results = methodResult.getResults();
int resultsCount = results.size();
assert resultsCount > 0;
ITestResult firstResult = results.iterator().next();
String methodName = Utils.escapeHtml(firstResult
.getMethod().getMethodName());
long start = firstResult.getStartMillis();
long duration = firstResult.getEndMillis() - start;
// The first method per class shares a row with the class
// header
if (methodIndex > 0) {
buffer.append("<tr class=\"").append(cssClass)
.append("\">");
}
// Write the timing information with the first scenario per
// method
buffer.append("<td><a href=\"#m").append(scenarioIndex)
.append("\">").append(methodName)
.append("</a></td>").append("<td rowspan=\"")
.append(resultsCount).append("\">").append(start)
.append("</td>").append("<td rowspan=\"")
.append(resultsCount).append("\">")
.append(duration).append("</td></tr>");
scenarioIndex++;
// Write the remaining scenarios for the method
for (int i = 1; i < resultsCount; i++) {
buffer.append("<tr class=\"").append(cssClass)
.append("\">").append("<td><a href=\"#m")
.append(scenarioIndex).append("\">")
.append(methodName).append("</a></td></tr>");
scenarioIndex++;
}
scenariosPerClass += resultsCount;
methodIndex++;
}
// Write the test results for the class
writer.print("<tr class=\"");
writer.print(cssClass);
writer.print("\">");
writer.print("<td rowspan=\"");
writer.print(scenariosPerClass);
writer.print("\">");
writer.print(Utils.escapeHtml(classResult.getClassName()));
writer.print("</td>");
writer.print(buffer);
classIndex++;
}
scenarioCount = scenarioIndex - startingScenarioIndex;
}
return scenarioCount;
}
}