package net.jsunit.model; import junit.framework.TestCase; import net.jsunit.utility.FileUtility; import java.io.File; import java.util.List; public class BrowserResultTest extends TestCase { private BrowserResult result; private String expectedXmlFragment = "<browserResult id=\"An ID\" time=\"4.3\">" + "<properties>" + "<property name=\"browserFileName\" value=\"c:\\Program Files\\Internet Explorer\\iexplore.exe\" />" + "<property name=\"browserId\" value=\"7\" />" + "<property name=\"jsUnitVersion\" value=\"2.5\" />" + "<property name=\"userAgent\" value=\"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)\" />" + "<property name=\"remoteAddress\" value=\"Dummy Remote Address\" />" + "<property name=\"url\" value=\"http://www.example.com/\" />" + "</properties>" + "<testCases>" + "<testCase name=\"page1.html:testFoo\" time=\"1.3\" />" + "<testCase name=\"page1.html:testFoo\" time=\"1.3\">" + "<error>Test Error Message</error>" + "</testCase>" + "<testCase name=\"page2.html:testFoo\" time=\"1.3\">" + "<failure>Test Failure Message</failure>" + "</testCase>" + "</testCases>" + "</browserResult>"; private BrowserSource browserSource = new DummyBrowserSource("c:\\Program Files\\Internet Explorer\\iexplore.exe", 7); public void setUp() throws Exception { super.setUp(); result = createBrowserResult(); result.setTestCaseStrings(new String[]{ "page1.html:testFoo|1.3|S||", "page1.html:testFoo|1.3|E|Test Error Message|", "page2.html:testFoo|1.3|F|Test Failure Message|"} ); } public void testId() { assertNotNull(result.getId()); result = new BrowserResult(); result.setId("foo"); assertEquals("foo", result.getId()); } public void testFields() { assertFields(result); } public void testXml() { assertEquals(expectedXmlFragment, result.asXmlFragment()); } public void testResultType() { assertFalse(result.wasSuccessful()); assertEquals(ResultType.ERROR, result.getResultType()); } public void testDisplayString() { assertEquals(ResultType.ERROR.getDisplayString(), result.getDisplayString()); } public void testBuildFromXmlFile() { File file = null; try { FileUtility.write(new File("resultXml.xml"), expectedXmlFragment); file = new File("resultXml.xml"); BrowserResult reconstitutedResult = new BrowserResultBuilder(browserSource).build(file); assertEquals(BrowserResult.class, reconstitutedResult.getClass()); assertFields(reconstitutedResult); } finally { if (file != null) file.delete(); } } public void testBuildFromXmlDocument() { BrowserResult reconstitutedResult = new BrowserResultBuilder(browserSource).build(result.asXmlDocument()); assertFields(reconstitutedResult); } public void testFailure() { BrowserResult result = createBrowserResult(); result.setTestCaseStrings(new String[]{ "page.html:testFoo|1.3|S||", "page.html:testBar|1.3|F|Test Failure Message|" }); assertFalse(result.wasSuccessful()); assertEquals(ResultType.FAILURE, result.getResultType()); assertEquals("The test run had 0 error(s) and 1 failure(s).", result.displayString()); } public void testSuccess() { BrowserResult result = createBrowserResult(); result.setTestCaseStrings(new String[]{ "page.html:testFoo|1.3|S||", "page.html:testBar|1.3|S||" }); assertTrue(result.wasSuccessful()); assertEquals(ResultType.SUCCESS, result.getResultType()); } public void testGetTestPageResults() { List<TestPageResult> testPageResults = result.getTestPageResults(); assertEquals(2, testPageResults.size()); TestPageResult result1 = testPageResults.get(0); assertEquals("page1.html", result1.getTestPageName()); assertEquals(2, result1.getTestCaseResults().size()); TestPageResult result2 = testPageResults.get(1); assertEquals("page2.html", result2.getTestPageName()); assertEquals(1, result2.getTestCaseResults().size()); } public void testCompleted() { assertTrue(result.completedTestRun()); assertFalse(result.timedOut()); assertFalse(result.failedToLaunch()); assertFalse(result.externallyShutDown()); } public void testIsForBrowser() throws Exception { assertFalse(result.isForBrowser(new Browser("mybrowser.exe", 9))); assertFalse(result.isForBrowser(new Browser("c:\\Program Files\\Internet Explorer\\iexplore.exe", 9))); assertFalse(result.isForBrowser(new Browser("mybrowser.exe", 7))); assertTrue(result.isForBrowser(new Browser("c:\\Program Files\\Internet Explorer\\iexplore.exe", 7))); } private BrowserResult createBrowserResult() { BrowserResult browserResult = new BrowserResult(); browserResult.setBrowser(new Browser("c:\\Program Files\\Internet Explorer\\iexplore.exe", 7)); browserResult.setJsUnitVersion("2.5"); browserResult.setId("An ID"); browserResult.setUserAgent("Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)"); browserResult.setRemoteAddress("Dummy Remote Address"); browserResult.setBaseURL("http://www.example.com/"); browserResult.setTime(4.3); return browserResult; } private void assertFields(BrowserResult aResult) { assertEquals("2.5", aResult.getJsUnitVersion()); assertEquals("An ID", aResult.getId()); assertEquals("Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)", aResult.getUserAgent()); assertEquals("Dummy Remote Address", aResult.getRemoteAddress()); assertEquals(4.3d, aResult.getTime(), 0.001d); assertEquals(3, aResult.getTestCaseResults().size()); for (TestCaseResult testCaseResult : aResult.getTestCaseResults()) { assertNotNull(testCaseResult); } } }