





<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
  <head>
    <title></title>
    <style type="text/css" media="all">
      @import url("./css/maven-base.css");
      @import url("./css/maven-theme.css");
      @import url("./css/site.css");
    </style>
    <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
        <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
  </head>
  <body class="composite">
    <div id="banner">
                          <span id="bannerLeft">
    
            Core Library
    
            </span>
                    <div class="clear">
        <hr/>
      </div>
    </div>
    <div id="breadcrumbs">
      <div class="xleft">Last Published: Tue Jan 24 22:40:49 EST 2006</div>
      <div class="xright">      <a href="http://tacos.sourceforge.net">Core Library</a>
      </div>
      <div class="clear">
        <hr/>
      </div>
    </div>
    <div id="leftColumn"><div id="navcolumn">      <h5>Project Documentation</h5>
    <ul>
              
        <li class="collapsed">
          <ul>
                  
    <li class="none">
          <strong><a href="surefire-report.html">Maven Surefire Report</a></strong>
        </li>
              </ul>
        </li>
          </ul>
  <a href="http://maven.apache.org/" title="Built by Maven" id="poweredBy">
              <img alt="Built by Maven" src="./images/logos/maven-feather.png"></img>
            </a>
    </div></div>
    <div id="bodyColumn">
      <div id="contentBox">
        <script type="text/javascript">
function toggleDisplay(elementId) {
 var elm = document.getElementById(elementId + 'error');
 if (elm && typeof elm.style != "undefined") {
 if (elm.style.display == "none") {
 elm.style.display = "";
 document.getElementById(elementId + 'off').style.display = "none";
 document.getElementById(elementId + 'on').style.display = "inline";
 } else if (elm.style.display == "") { elm.style.display = "none";
 document.getElementById(elementId + 'off').style.display = "inline";
 document.getElementById(elementId + 'on').style.display = "none";
 } 
 } 
 }
</script><h2><a name="Summary"></a>Summary</h2><div class="section">[<a href="#Summary">Summary</a>][<a href="#Package_List">Package List</a>][<a href="#Test_Cases">Test Cases</a>]</div><table class="bodyTable"><tr class="a"></tr><tr class="b"></tr></table><table class="bodyTable"><tr class="a"><th>Tests</th><th>Errors </th><th>Failures</th><th>Success Rate</th><th>Time</th></tr><tr class="b"><td>7</td><td>0</td><td>1</td><td>85.714%</td><td>190.072</td></tr></table><br />Note: failures are anticipated and checked for with assertions while errors are unanticipated.<table class="bodyTable"><tr class="a"></tr><tr class="b"></tr></table><h2><a name="Package_List"></a>Package List</h2><div class="section">[<a href="#Summary">Summary</a>][<a href="#Package_List">Package List</a>][<a href="#Test_Cases">Test Cases</a>]</div><table class="bodyTable"><tr class="a"></tr><tr class="b"></tr></table><table class="bodyTable"><tr class="a"><th>Package</th><th>Tests</th><th>Errors </th><th>Failures</th><th>Success Rate</th><th>Time</th></tr><tr class="b"><td><a href="#TestNG Suite">TestNG Suite</a></td><td>7</td><td>0</td><td>1</td><td>85.714%</td><td>190.072</td></tr></table><br />Note: package statistics are not computed recursively, they only sum up all of its testsuites numbers.<h3><a name="TestNG Suite"></a>TestNG Suite</h3><table class="bodyTable"><tr class="a"><th></th><th>Class</th><th>Tests</th><th>Errors </th><th>Failures</th><th>Success Rate</th><th>Time</th></tr><tr class="b"><td><a href="#TestNG SuiteTestNG Suite"><img src="images/icon_warning_sml.gif" /></a></td><td><a href="#TestNG SuiteTestNG Suite">TestNG Suite</a></td><td>7</td><td>0</td><td>1</td><td>85.714%</td><td>190.072</td></tr></table><table class="bodyTable"><tr class="a"></tr><tr class="b"></tr></table><h2><a name="Test_Cases"></a>Test Cases</h2><div class="section">[<a href="#Summary">Summary</a>][<a href="#Package_List">Package List</a>][<a href="#Test_Cases">Test Cases</a>]</div><h3><a name="TestNG SuiteTestNG Suite"></a>TestNG Suite</h3><table class="bodyTable"><tr class="a"><td><a href="#TestNG Suite.TestNG Suite.net.sf.tacos.ajax.components.DialogTest#testClickDialog"><img src="images/icon_error_sml.gif" /></a></td><td>net.sf.tacos.ajax.components.DialogTest#testClickDialog  <div class="detailToggle" style="display:inline"><a href="javascript:toggleDisplay('net.sf.tacos.ajax.components.DialogTest#testClickDialog');"><span style="display: inline;" id="net.sf.tacos.ajax.components.DialogTest#testClickDialogoff">+</span><span id="net.sf.tacos.ajax.components.DialogTest#testClickDialogon" style="display: none;">-</span> [ Detail ]</a></div></td><td>189.174</td></tr><tr class="b"><td></td><td>Connection timed out</td><td></td></tr><tr class="a"><td></td><td>  <div id="net.sf.tacos.ajax.components.DialogTest#testClickDialogerror" style="display:none;">java.net.ConnectException: Connection timed out<br />at java.net.PlainSocketImpl.socketConnect(Native Method)<br />at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:372)<br />at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:233)<br />at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:220)<br />at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:378)<br />at java.net.Socket.connect(Socket.java:536)<br />at java.net.Socket.connect(Socket.java:486)<br />at java.net.Socket.<init>(Socket.java:394)<br />at java.net.Socket.<init>(Socket.java:267)<br />at org.apache.commons.httpclient.protocol.DefaultProtocolSocketFactory.createSocket(DefaultProtocolSocketFactory.java:79)<br />at org.apache.commons.httpclient.protocol.DefaultProtocolSocketFactory.createSocket(DefaultProtocolSocketFactory.java:121)<br />at org.apache.commons.httpclient.HttpConnection.open(HttpConnection.java:704)<br />at org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:384)<br />at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:170)<br />at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:396)<br />at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:324)<br />at com.gargoylesoftware.htmlunit.HttpWebConnection.getResponse(HttpWebConnection.java:139)<br />at com.gargoylesoftware.htmlunit.WebClient.loadWebResponse(WebClient.java:1523)<br />at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:325)<br />at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:377)<br />at net.sf.tacos.ajax.components.DialogTest.testClickDialog(DialogTest.java:50)<br />at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)<br />at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)<br />at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)<br />at java.lang.reflect.Method.invoke(Method.java:615)<br />at org.testng.internal.MethodHelper.invokeMethod(MethodHelper.java:461)<br />at org.testng.internal.Invoker.invokeMethod(Invoker.java:378)<br />at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:580)<br />at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:89)<br />at org.testng.TestRunner.privateRun(TestRunner.java:612)<br />at org.testng.TestRunner.run(TestRunner.java:503)<br />at org.testng.SuiteRunner.privateRun(SuiteRunner.java:218)<br />at org.testng.SuiteRunner.run(SuiteRunner.java:144)<br />at org.testng.TestNG.createAndRunSuiteRunners(TestNG.java:576)<br />at org.testng.TestNG.runSuitesLocally(TestNG.java:539)<br />at org.apache.maven.surefire.Surefire.run(Surefire.java:236)<br />at org.apache.maven.surefire.Surefire.run(Surefire.java:128)<br />at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)<br />at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)<br />at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)<br />at java.lang.reflect.Method.invoke(Method.java:615)<br />at org.apache.maven.surefire.SurefireBooter.runTestsInProcess(SurefireBooter.java:345)<br />at org.apache.maven.surefire.SurefireBooter.run(SurefireBooter.java:258)<br />at org.apache.maven.test.SurefirePlugin.execute(SurefirePlugin.java:477)<br />at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:415)<br />at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:531)<br />at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycle(DefaultLifecycleExecutor.java:472)<br />at org.apache.maven.lifecycle.DefaultLifecycleExecutor.forkProjectLifecycle(DefaultLifecycleExecutor.java:859)<br />at org.apache.maven.lifecycle.DefaultLifecycleExecutor.forkLifecycle(DefaultLifecycleExecutor.java:731)<br />at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:522)<br />at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycle(DefaultLifecycleExecutor.java:472)<br />at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:451)<br />at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:303)<br />at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:270)<br />at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:139)<br />at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:322)<br />at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:115)<br />at org.apache.maven.cli.MavenCli.main(MavenCli.java:249)<br />at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)<br />at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)<br />at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)<br />at java.lang.reflect.Method.invoke(Method.java:615)<br />at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315)<br />at org.codehaus.classworlds.Launcher.launch(Launcher.java:255)<br />at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430)<br />at org.codehaus.classworlds.Launcher.main(Launcher.java:375)<br /></div></td><td></td></tr><tr class="b"><td><img src="images/icon_success_sml.gif" /></td><td>net.sf.tacos.services.SiteMapTest#testInitialize</td><td>0.006</td></tr><tr class="a"><td><img src="images/icon_success_sml.gif" /></td><td>net.sf.tacos.services.SiteMapTest#testCategory</td><td>0.569</td></tr><tr class="b"><td><img src="images/icon_success_sml.gif" /></td><td>net.sf.tacos.services.SiteMapTest#testContains</td><td>0.138</td></tr><tr class="a"><td><img src="images/icon_success_sml.gif" /></td><td>net.sf.tacos.services.SiteMapTest#testSitemapXml1</td><td>0.05</td></tr><tr class="b"><td><img src="images/icon_success_sml.gif" /></td><td>net.sf.tacos.services.SiteMapTest#testCategoryLists</td><td>0.117</td></tr><tr class="a"><td><img src="images/icon_success_sml.gif" /></td><td>net.sf.tacos.services.SiteMapTest#testUnsetResource</td><td>0</td></tr></table><table class="bodyTable"><tr class="b"></tr><tr class="a"></tr></table><table class="bodyTable"><tr class="b"></tr><tr class="a"></tr></table>
      </div>
    </div>
    <div class="clear">
      <hr/>
    </div>
    <div id="footer">
      <div class="xright">&#169;  
          2001-2006
    
          Sourceforge
      </div>
      <div class="clear">
        <hr/>
      </div>
    </div>
  </body>
</html>
