Mercurial > hg > audiodb
diff bindings/as3/ext/asunit/framework/TestResult.as @ 732:3a0b9700b3d2
* Initial AS3 commit
author | mas01mj |
---|---|
date | Tue, 14 Sep 2010 16:47:10 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/bindings/as3/ext/asunit/framework/TestResult.as Tue Sep 14 16:47:10 2010 +0000 @@ -0,0 +1,174 @@ +package asunit.framework { + import asunit.errors.AssertionFailedError; + import asunit.errors.InstanceNotFoundError; + + /** + * A <code>TestResult</code> collects the results of executing + * a test case. It is an instance of the Collecting Parameter pattern. + * The test framework distinguishes between <i>failures</i> and <i>errors</i>. + * A failure is anticipated and checked for with assertions. Errors are + * unanticipated problems like an <code>ArrayIndexOutOfBoundsException</code>. + * + * @see Test + */ + public class TestResult implements TestListener { + protected var fFailures:Array; + protected var fErrors:Array; + protected var fListeners:Array; + protected var fRunTests:int; + private var fStop:Boolean; + + public function TestResult() { + fFailures = new Array(); + fErrors = new Array(); + fListeners = new Array(); + fRunTests = 0; + fStop = false; + } + /** + * Adds an error to the list of errors. The passed in exception + * caused the error. + */ + public function addError(test:Test, t:Error):void { + fErrors.push(new TestFailure(test, t)); + var len:uint = fListeners.length; + var item:TestListener; + for(var i:uint; i < len; i++) { + item = TestListener(fListeners[i]); + item.addError(test, t); + } + } + /** + * Adds a failure to the list of failures. The passed in exception + * caused the failure. + */ + public function addFailure(test:Test, t:AssertionFailedError):void { + fFailures.push(new TestFailure(test, t)); + var len:uint = fListeners.length; + var item:TestListener; + for(var i:uint; i < len; i++) { + item = TestListener(fListeners[i]); + item.addFailure(test, t); + } + } + /** + * Registers a TestListener + */ + public function addListener(listener:TestListener):void { + fListeners.push(listener); + } + /** + * Unregisters a TestListener + */ + public function removeListener(listener:TestListener):void { + var len:uint = fListeners.length; + for(var i:uint; i < len; i++) { + if(fListeners[i] == listener) { + fListeners.splice(i, 1); + return; + } + } + throw new InstanceNotFoundError("removeListener called without listener in list"); + } + /** + * Gets the number of detected errors. + */ + public function errorCount():int { + return fErrors.length; + } + /** + * Returns an Enumeration for the errors + */ + public function errors():Array { + return fErrors; + } + /** + * Gets the number of detected failures. + */ + public function failureCount():int { + return fFailures.length; + } + /** + * Returns an Enumeration for the failures + */ + public function failures():Array { + return fFailures; + } + + /** + * Runs a TestCase. + */ + public function run(test:Test):void { + startTest(test); + test.runBare(); + } + /** + * Gets the number of run tests. + */ + public function runCount():int { + return fRunTests; + } + /** + * Checks whether the test run should stop + */ + public function shouldStop():Boolean { + return fStop; + } + /** + * Informs the result that a test will be started. + */ + public function startTest(test:Test):void { + var count:int = test.countTestCases(); + fRunTests += count; + + var len:uint = fListeners.length; + var item:TestListener; + for(var i:uint; i < len; i++) { + item = TestListener(fListeners[i]); + item.startTest(test); + } + } + + public function startTestMethod(test:Test, method:String):void { + var len:uint = fListeners.length; + var item:TestListener; + for(var i:uint; i < len; i++) { + item = TestListener(fListeners[i]); + item.startTestMethod(test, method); + } + } + + public function endTestMethod(test:Test, method:String):void { + var len:uint = fListeners.length; + var item:TestListener; + for(var i:uint; i < len; i++) { + item = TestListener(fListeners[i]); + item.endTestMethod(test, method); + } + } + + /** + * Informs the result that a test was completed. + */ + public function endTest(test:Test):void { + var len:uint = fListeners.length; + var item:TestListener; + for(var i:uint; i < len; i++) { + item = TestListener(fListeners[i]); + item.endTest(test); + } + } + /** + * Marks that the test run should stop. + */ + public function stop():void { + fStop = true; + } + /** + * Returns whether the entire test was successful or not. + */ + public function wasSuccessful():Boolean { + return failureCount() == 0 && errorCount() == 0; + } + } +} \ No newline at end of file