package com.google.jstestdriver.output;
import static com.google.jstestdriver.TestResult.Result.error;
import static com.google.jstestdriver.TestResult.Result.passed;
import static java.io.File.createTempFile;
import static java.util.Arrays.asList;
import java.io.File;
import java.util.Arrays;
import junit.framework.TestCase;
import com.google.jstestdriver.BrowserInfo;
import com.google.jstestdriver.TestResult;
/**
* @author alexeagle@google.com (Alex Eagle)
*/
public class XmlPrinterTest extends TestCase {
TestResultHolder data = new TestResultHolder();
File tempFile;
BrowserInfo firefox = makeBrowser("Firefox", "Linux", "2.5", 1);
BrowserInfo firefox2 = makeBrowser("Firefox", "Linux", "2.5", 2);
BrowserInfo safari = makeBrowser("Safari", "MacIntel", "3", 3);
String stdout = "Some standard out\n logging";
TestResult firefoxPassed1 =
new TestResult(firefox, passed.toString(), "", stdout, "testCase1", "test1", 1.0f);
TestResult firefoxPassed2 =
new TestResult(firefox2, passed.toString(), "", "", "testCase1", "test1", 2.0f);
TestResult firefoxPassed3 =
new TestResult(firefox, passed.toString(), "", stdout, "testCase1", "test2", 1.0f);
TestResult safariError1 =
new TestResult(safari, error.toString(), "", "", "testCase1", "test4", 4.0f);
TestResult safariPassed1 =
new TestResult(safari, passed.toString(), "", "", "testCase2", "test4", 4.0f);
@Override
protected void setUp() throws Exception {
super.setUp();
tempFile = createTempFile(getName(), "tmp");
tempFile.delete();
tempFile.mkdirs();
}
@Override
protected void tearDown() throws Exception {
super.tearDown();
for (File file : tempFile.listFiles()) {
file.delete();
}
tempFile.delete();
}
public void testTestSuiteFileNameIsNice() throws Exception {
data.onTestComplete(firefoxPassed1);
XmlPrinter printer = new XmlPrinterImpl(data, tempFile.getAbsolutePath(), new FileNameFormatter());
printer.writeXmlReportFiles();
File[] files = tempFile.listFiles();
assertEquals(1, files.length);
assertEquals("TEST-Firefox_25_Linux.testCase1.xml", files[0].getName());
}
public void testSeveralTestCasesInSeveralBrowsers() throws Exception {
for (TestResult testResult : asList(firefoxPassed1, firefoxPassed2, firefoxPassed3,
safariError1, safariPassed1)) {
data.onTestComplete(testResult);
}
XmlPrinter printer = new XmlPrinterImpl(data, tempFile.getAbsolutePath(), new FileNameFormatter());
printer.writeXmlReportFiles();
String[] files = tempFile.list();
assertEquals(4, files.length);
Arrays.sort(files);
assertEquals("TEST-Firefox_25_Linux.testCase1.xml", files[0]);
assertEquals("TEST-Firefox_25_Linux_2.testCase1.xml", files[1]);
assertEquals("TEST-Safari_3_MacIntel.testCase1.xml", files[2]);
assertEquals("TEST-Safari_3_MacIntel.testCase2.xml", files[3]);
}
private BrowserInfo makeBrowser(String name, String os, String version, long id) {
BrowserInfo info = new BrowserInfo();
info.setName(name);
info.setOs(os);
info.setVersion(version);
info.setId(id);
return info;
}
}