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; } }