<xsl:stylesheet	xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="html" indent="yes"/>
<xsl:decimal-format decimal-separator="." grouping-separator="," />

<xsl:template match="testsuites">
	<HTML>
		<META http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
		<HEAD>
    <style type="text/css">
      body {
      	font:normal 11px verdana,arial,helvetica;
      	color:#000000;
      }
      table tr td, table tr th {
          font-size: 11px;
      }
      table.details tr th{
      	font-weight: bold;
      	text-align:left;
      	background:#a6caf0;
      }
      table.details tr td{
      	background:#eeeee0;
      }
      
      p {
      	line-height:1.5em;
      	margin-top:0.5em; margin-bottom:1.0em;
      }
      h1 {
      	margin: 0px 0px 5px; font: 165% verdana,arial,helvetica
      }
      h2 {
      	margin-top: 1em; margin-bottom: 0.5em; font: bold 125% verdana,arial,helvetica
      }
      h3 {
      	margin-bottom: 0.5em; font: bold 115% verdana,arial,helvetica
      }
      h4 {
      	margin-bottom: 0.5em; font: bold 100% verdana,arial,helvetica
      }
      h5 {
      	margin-bottom: 0.5em; font: bold 100% verdana,arial,helvetica
      }
      h6 {
      	margin-bottom: 0.5em; font: bold 100% verdana,arial,helvetica
      }
      .Error {
      	font-weight:bold; color:red;
      }
      .Failure {
      	font-weight:bold; color:purple;
      }
      .Properties {
      	text-align:right;
      }
      </style>
      <script language="JavaScript">
        var TestCases = new Array();
        var cur;
        <xsl:for-each select="./testsuite">      
            <xsl:apply-templates select="properties"/>
        </xsl:for-each>

       </script>
       <script language="JavaScript"><![CDATA[
        function displayProperties (name) {
          var win = window.open('','JUnitSystemProperties','scrollbars=1,resizable=1');
          var doc = win.document.open();
          doc.write("<html><head><title>Properties of " + name + "</title>");
          doc.write("<style>")
          doc.write("body {font:normal 68% verdana,arial,helvetica;	color:#000000; }");
          doc.write("table tr td, table tr th { font-size: 68%; }");
          doc.write("table.properties { border-collapse:collapse; border-left:solid 1 #cccccc; border-top:solid 1 #cccccc; padding:5px; }");
          doc.write("table.properties th { text-align:left; border-right:solid 1 #cccccc; border-bottom:solid 1 #cccccc; background-color:#eeeeee; }");
          doc.write("table.properties td { font:normal; text-align:left; border-right:solid 1 #cccccc; border-bottom:solid 1 #cccccc; background-color:#fffffff; }");
          doc.write("h3 { margin-bottom: 0.5em; font: bold 115% verdana,arial,helvetica }");
          doc.write("</style>");
          doc.write("</head><body>");
          doc.write("<h3>Properties of " + name + "</h3>");
          doc.write("<div align=\"right\"><a href=\"javascript:window.close();\">Close</a></div>");
          doc.write("<table class='properties'>");
          doc.write("<tr><th>Name</th><th>Value</th></tr>");
          for (prop in TestCases[name]) {
            doc.write("<tr><th>" + prop + "</th><td>" + TestCases[name][prop] + "</td></tr>");
          }
          doc.write("</table>");
          doc.write("</body></html>");
          doc.close();
          win.focus();
        }
      ]]>  
      </script>
		</HEAD>
		<body>
			<a name="top"></a>
			<xsl:call-template name="pageHeader"/>	
			
			<!-- Summary part -->
			<xsl:call-template name="summary"/>
			<hr size="1" width="95%" align="left"/>
			
			<!-- Package List part -->
			<xsl:call-template name="packagelist"/>
			<hr size="1" width="95%" align="left"/>
			
			<!-- For each package create its part -->
			<xsl:call-template name="packages"/>
			<hr size="1" width="95%" align="left"/>
			
			<!-- For each class create the  part -->
			<xsl:call-template name="classes"/>
			
		</body>
	</HTML>
</xsl:template>
	
	
	
	<!-- ================================================================== -->
	<!-- Write a list of all packages with an hyperlink to the anchor of    -->
	<!-- of the package name.                                               -->
	<!-- ================================================================== -->
	<xsl:template name="packagelist">	
		<h2>Packages</h2>
		Note: package statistics are not computed recursively, they only sum up all of its testsuites numbers.
		<table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
			<xsl:call-template name="testsuite.test.header"/>
			<!-- list all packages recursively -->
			<xsl:for-each select="./testsuite[not(./@package = preceding-sibling::testsuite/@package)]">
				<xsl:sort select="@package"/>
				<xsl:variable name="testsuites-in-package" select="/testsuites/testsuite[./@package = current()/@package]"/>
				<xsl:variable name="testCount" select="sum($testsuites-in-package/@tests)"/>
				<xsl:variable name="errorCount" select="sum($testsuites-in-package/@errors)"/>
				<xsl:variable name="failureCount" select="sum($testsuites-in-package/@failures)"/>
				<xsl:variable name="timeCount" select="sum($testsuites-in-package/@time)"/>
				
				<!-- write a summary for the package -->
				<tr valign="top">
					<!-- set a nice color depending if there is an error/failure -->
					<xsl:attribute name="class">
						<xsl:choose>
							<xsl:when test="$failureCount &gt; 0">Failure</xsl:when>
							<xsl:when test="$errorCount &gt; 0">Error</xsl:when>
						</xsl:choose>
					</xsl:attribute>
					<td><a href="#{@package}"><xsl:value-of select="@package"/></a></td>
					<td><xsl:value-of select="$testCount"/></td>
					<td><xsl:value-of select="$errorCount"/></td>
					<td><xsl:value-of select="$failureCount"/></td>
					<td>
					<xsl:call-template name="display-time">
						<xsl:with-param name="value" select="$timeCount"/>
					</xsl:call-template>
					</td>
				</tr>
			</xsl:for-each>
		</table>		
	</xsl:template>
	
	
	<!-- ================================================================== -->
	<!-- Write a package level report                                       -->
	<!-- It creates a table with values from the document:                  -->
	<!-- Name | Tests | Errors | Failures | Time                            -->
	<!-- ================================================================== -->
	<xsl:template name="packages">
		<!-- create an anchor to this package name -->
		<xsl:for-each select="/testsuites/testsuite[not(./@package = preceding-sibling::testsuite/@package)]">
			<xsl:sort select="@package"/>
				<a name="{@package}"></a>
				<h3>Package <xsl:value-of select="@package"/></h3>
				
				<table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
					<xsl:call-template name="testsuite.test.header"/>
			
					<!-- match the testsuites of this package -->
					<xsl:apply-templates select="/testsuites/testsuite[./@package = current()/@package]" mode="print.test"/>
				</table>
				<a href="#top">Back to top</a>
				<p/>
				<p/>
		</xsl:for-each>
	</xsl:template>
	
	<xsl:template name="classes">
		<xsl:for-each select="testsuite">
			<xsl:sort select="@classname" data-type="text" order="ascending" />
			<xsl:sort select="@name" data-type="text" order="ascending" />
			<!-- create an anchor to this class name -->
			<a name="{@name}"></a>
			<h3>TestCase <xsl:value-of select="@name"/></h3>
			
			<table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
			  <xsl:call-template name="testcase.test.header"/>
			  <!--
			  test can even not be started at all (failure to load the class)
			  so report the error directly
			  -->
				<xsl:if test="./error">
					<tr class="Error">
						<td colspan="4"><xsl:apply-templates select="./error"/></td>
					</tr>
				</xsl:if>
				<xsl:apply-templates select="./testcase" mode="print.test"/>
			</table>
            <div class="Properties">
                <a>
			        <xsl:attribute name="href">javascript:displayProperties('<xsl:value-of select="@package"/>.<xsl:value-of select="@name"/>');</xsl:attribute>
			        Properties &gt;&gt;
			    </a>
            </div>
			<p/>
			
			<a href="#top">Back to top</a>
		</xsl:for-each>
	</xsl:template>
	
	<xsl:template name="summary">
		<h2>Summary</h2>
		<xsl:variable name="testCount" select="sum(testsuite/@tests)"/>
		<xsl:variable name="errorCount" select="sum(testsuite/@errors)"/>
		<xsl:variable name="failureCount" select="sum(testsuite/@failures)"/>
		<xsl:variable name="timeCount" select="sum(testsuite/@time)"/>
		<xsl:variable name="successRate" select="($testCount - $failureCount - $errorCount) div $testCount"/>
		<table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
		<tr valign="top">
			<th>Tests</th>
			<th>Failures</th>
			<th>Errors</th>
			<th>Success rate</th>
			<th>Time</th>
		</tr>
		<tr valign="top">
			<xsl:attribute name="class">
				<xsl:choose>
					<xsl:when test="$failureCount &gt; 0">Failure</xsl:when>
					<xsl:when test="$errorCount &gt; 0">Error</xsl:when>
				</xsl:choose>
			</xsl:attribute>
			<td><xsl:value-of select="$testCount"/></td>
			<td><xsl:value-of select="$failureCount"/></td>
			<td><xsl:value-of select="$errorCount"/></td>
			<td>
				<xsl:call-template name="display-percent">
					<xsl:with-param name="value" select="$successRate"/>
				</xsl:call-template>
			</td>
			<td>
				<xsl:call-template name="display-time">
					<xsl:with-param name="value" select="$timeCount"/>
				</xsl:call-template>
			</td>

		</tr>
		</table>
		<table border="0" width="95%">
		<tr>
		<td	style="text-align: justify;">
		Note: <i>failures</i> are anticipated and checked for with assertions while <i>errors</i> are unanticipated.
		</td>
		</tr>
		</table>
	</xsl:template>
	
  <!--
   Write properties into a JavaScript data structure.
   This is based on the original idea by Erik Hatcher (erik@hatcher.net)
   -->
  <xsl:template match="properties">
    cur = TestCases['<xsl:value-of select="../@package"/>.<xsl:value-of select="../@name"/>'] = new Array();
  	<xsl:for-each select="property">
    <xsl:sort select="@name"/>
        cur['<xsl:value-of select="@name"/>'] = '<xsl:call-template name="JS-escape"><xsl:with-param name="string" select="@value"/></xsl:call-template>';
  	</xsl:for-each>
  </xsl:template>
	
<!-- Page HEADER -->
<xsl:template name="pageHeader">
	<h1>Unit Test Results</h1>
	<table width="100%">
	<tr>
		<td align="left"></td>
		<td align="right">Designed for use with <a href='http://www.junit.org'>JUnit</a> and <a href='http://ant.apache.org'>Ant</a>.</td>
	</tr>
	</table>
	<hr size="1"/>
</xsl:template>

<xsl:template match="testsuite" mode="header">
	<tr valign="top">
		<th width="80%">Name</th>
		<th>Tests</th>
		<th>Errors</th>
		<th>Failures</th>
		<th nowrap="nowrap">Time(s)</th>
	</tr>
</xsl:template>

<!-- class header -->
<xsl:template name="testsuite.test.header">
	<tr valign="top">
		<th width="80%">Name</th>
		<th>Tests</th>
		<th>Errors</th>
		<th>Failures</th>
		<th nowrap="nowrap">Time(s)</th>
	</tr>
</xsl:template>

<!-- method header -->
<xsl:template name="testcase.test.header">
	<tr valign="top">
		<th>Class Name</th>
		<th>Test Name</th>
		<th>Status</th>
		<th width="80%">Type</th>
		<th nowrap="nowrap">Time(s)</th>
	</tr>
</xsl:template>


<!-- class information -->
<xsl:template match="testsuite" mode="print.test">
	<tr valign="top">
		<!-- set a nice color depending if there is an error/failure -->
		<xsl:attribute name="class">
			<xsl:choose>
				<xsl:when test="@failures[.&gt; 0]">Failure</xsl:when>
				<xsl:when test="@errors[.&gt; 0]">Error</xsl:when>
			</xsl:choose>
		</xsl:attribute>
	
		<!-- print testsuite information -->
		<td><a href="#{@name}"><xsl:value-of select="@name"/></a></td>
		<td><xsl:value-of select="@tests"/></td>
		<td><xsl:value-of select="@errors"/></td>
		<td><xsl:value-of select="@failures"/></td>
		<td>
			<xsl:call-template name="display-time">
				<xsl:with-param name="value" select="@time"/>
			</xsl:call-template>
		</td>
	</tr>
</xsl:template>

<xsl:template match="testcase" mode="print.test">
	<tr valign="top">
		<xsl:attribute name="class">
			<xsl:choose>
				<xsl:when test="failure | error">Error</xsl:when>
			</xsl:choose>
		</xsl:attribute>
		<td><xsl:value-of select="@classname"/></td>
		<td><xsl:value-of select="@name"/></td>
		<xsl:choose>
			<xsl:when test="failure">
				<td>Failure</td>
				<td><xsl:apply-templates select="failure"/></td>
			</xsl:when>
			<xsl:when test="error">
				<td>Error</td>
				<td><xsl:apply-templates select="error"/></td>
			</xsl:when>
			<xsl:otherwise>
				<td>Success</td>
				<td></td>
			</xsl:otherwise>
		</xsl:choose>
		<td>
			<xsl:call-template name="display-time">
				<xsl:with-param name="value" select="@time"/>
			</xsl:call-template>
		</td>
	</tr>
</xsl:template>


<xsl:template match="failure">
	<xsl:call-template name="display-failures"/>
</xsl:template>

<xsl:template match="error">
	<xsl:call-template name="display-failures"/>
</xsl:template>

<!-- Style for the error and failure in the tescase template -->
<xsl:template name="display-failures">
	<xsl:choose>
		<xsl:when test="not(@message)">N/A</xsl:when>
		<xsl:otherwise>
			<xsl:value-of select="@message"/>
		</xsl:otherwise>
	</xsl:choose>
	<!-- display the stacktrace -->
	<code>
		<p/>
		<xsl:call-template name="br-replace">
			<xsl:with-param name="word" select="."/>
		</xsl:call-template>
	</code>
	<!-- the later is better but might be problematic for non-21" monitors... -->
	<!--pre><xsl:value-of select="."/></pre-->
</xsl:template>

<xsl:template name="JS-escape">
	<xsl:param name="string"/>
	<xsl:choose><!-- something isn't right here, basically all single quotes need to be replaced with backslash-single-quote
		<xsl:when test="contains($string,'&apos;')">
			<xsl:value-of select="substring-before($string,'&apos;')"/>
			\&apos;
			<xsl:call-template name="JS-escape">
				<xsl:with-param name="string" select="substring-after($string,'&apos;')"/>
			</xsl:call-template>
		</xsl:when> -->
		<xsl:when test="contains($string,'\')">
			<xsl:value-of select="substring-before($string,'\')"/>\\<xsl:call-template name="JS-escape">
				<xsl:with-param name="string" select="substring-after($string,'\')"/>
			</xsl:call-template>
		</xsl:when>
		<xsl:otherwise>
			<xsl:value-of select="$string"/>
		</xsl:otherwise>
	</xsl:choose>
</xsl:template>


<!--
	template that will convert a carriage return into a br tag
	@param word the text from which to convert CR to BR tag
-->
<xsl:template name="br-replace">
	<xsl:param name="word"/>
	<xsl:choose>
		<xsl:when test="contains($word,'&#xA;')">
			<xsl:value-of select="substring-before($word,'&#xA;')"/>
			<br/>
			<xsl:call-template name="br-replace">
				<xsl:with-param name="word" select="substring-after($word,'&#xA;')"/>
			</xsl:call-template>
		</xsl:when>
		<xsl:otherwise>
			<xsl:value-of select="$word"/>
		</xsl:otherwise>
	</xsl:choose>
</xsl:template>

<xsl:template name="display-time">
	<xsl:param name="value"/>
	<xsl:value-of select="format-number($value,'0.000')"/>
</xsl:template>

<xsl:template name="display-percent">
	<xsl:param name="value"/>
	<xsl:value-of select="format-number($value,'0.00%')"/>
</xsl:template>

</xsl:stylesheet>

