package com.fmr.flexunit
{
import flash.utils.*;
import flash.xml.XMLNode;
import flexunit.framework.AssertionFailedError;
import flexunit.framework.Test;
import flexunit.framework.TestCase;
import flexunit.framework.TestFailure;
import flexunit.framework.TestListener;
import flexunit.framework.TestResult;
import flexunit.utils.Iterator;;
public class CruiseControlResultPrinter implements TestListener
{
public function CruiseControlResultPrinter()
{
super();
__resultXML = new XML("");
}
//------------------------------------------------------------------------------
public function print( result:TestResult, runTime:Number ):void
{
printHeader(runTime);
printMain();
printFooter(result);
}
//------------------------------------------------------------------------------
private function printMain():void{
trace("Test Suite success: "+__suiteSuccess+"\n");
trace(__resultXML);
}
//------------------------------------------------------------------------------
public function printHeader( runTime:Number ):void
{
trace("-----------------TESTRUNNEROUTPUTBEGINS----------------");
}
//------------------------------------------------------------------------------
private function printFooter( result:TestResult ):void
{
trace("-----------------TESTRUNNEROUTPUTENDS----------------");
}
//------------------------------------------------------------------------------
public function addError( test:Test, error:Error ):void
{
__suiteSuccess = false;
var testNode:XML = getTestNode(test);
var errorNode:XML = new XML(""+error.getStackTrace()+"");
testNode.appendChild(errorNode);
}
//------------------------------------------------------------------------------
public function addFailure( test:Test, error:AssertionFailedError ):void
{
__suiteSuccess = false;
var testNode:XML = getTestNode(test);
var failureNode:XML = new XML(""+error.getStackTrace()+"");
testNode.appendChild(failureNode);
}
//------------------------------------------------------------------------------
public function endTest( test:Test ):void
{
var testNode:XML = getTestNode(test);
testNode.@time = (getTimer() - __testTimer)/1000;
}
//------------------------------------------------------------------------------
public function startTest( test:Test ):void
{
var suiteNode:XML = getSuiteNode(test)
suiteNode.appendChild(new XML(""));
__testTimer = getTimer();
}
//------------------------------------------------------------------------------
private function getSuiteNode (test:Test):XML{
var outNode:XML = __resultXML.testsuite.(@name==test.className)[0];
if(outNode==null){
outNode = new XML("");
__resultXML.appendChild(outNode);
}
return outNode;
}
private function getTestNode(test:Test):XML{
return __resultXML.testsuite.testcase.(@name==TestCase(test).methodName)[0];
}
private var __resultXML:XML;
private var __testTimer:int;
private var __suiteSuccess:Boolean = true;
}
}