|
From: <luk...@us...> - 2006-09-21 18:19:16
|
Revision: 118
http://svn.sourceforge.net/asunit/?rev=118&view=rev
Author: lukebayes
Date: 2006-09-21 11:19:08 -0700 (Thu, 21 Sep 2006)
Log Message:
-----------
added asynchronous execution of test suites to avoid script timeouts on large projects
Modified Paths:
--------------
trunk/framework/as25/asunit/framework/TestSuite.as
trunk/framework/as25/asunit/runner/BaseTestRunner.as
Added Paths:
-----------
trunk/framework/as25/asunit/util/
trunk/framework/as25/asunit/util/ArrayIterator.as
trunk/framework/as25/asunit/util/ArrayIteratorTest.as
trunk/framework/as25/asunit/util/Iterator.as
Modified: trunk/framework/as25/asunit/framework/TestSuite.as
===================================================================
--- trunk/framework/as25/asunit/framework/TestSuite.as 2006-09-21 01:35:18 UTC (rev 117)
+++ trunk/framework/as25/asunit/framework/TestSuite.as 2006-09-21 18:19:08 UTC (rev 118)
@@ -1,6 +1,8 @@
import asunit.framework.TestCase;
import asunit.framework.Test;
import asunit.framework.TestResult;
+import asunit.util.Iterator;
+import asunit.util.ArrayIterator;
class asunit.framework.TestSuite extends TestCase {
private var fTests:Array = new Array();
@@ -49,14 +51,25 @@
*/
public function run():Void {
var result:TestResult = getResult();
+ runTests(fTests, result);
+ }
+
+ public function runTests(tests:Array, result:TestResult):Void {
+ var itr:Iterator = new ArrayIterator(tests);
var test:TestCase;
- var len:Number = fTests.length;
- for(var i:Number = 0; i < len; i++) {
- test = TestCase(fTests[i]);
- test.setResult(result);
- test.run();
+ if(itr.hasNext()) {
+ test = TestCase(itr.next());
+ runTest(itr, test, result);
}
}
+
+ public function runTest(itr:Iterator, test:TestCase, result:TestResult):Void {
+ test.setResult(result);
+ test.run();
+ if(itr.hasNext()) {
+ _global.setTimeout(this, "runTest", 10, itr, itr.next(), result);
+ }
+ }
/**
* Returns the number of tests in this suite
Modified: trunk/framework/as25/asunit/runner/BaseTestRunner.as
===================================================================
--- trunk/framework/as25/asunit/runner/BaseTestRunner.as 2006-09-21 01:35:18 UTC (rev 117)
+++ trunk/framework/as25/asunit/runner/BaseTestRunner.as 2006-09-21 18:19:08 UTC (rev 118)
@@ -2,6 +2,7 @@
import asunit.framework.Test;
import asunit.framework.TestResult;
import asunit.framework.Assert;
+import asunit.textui.ResultPrinter;
class asunit.runner.BaseTestRunner {
private static var instance:BaseTestRunner;
@@ -59,9 +60,16 @@
}
public static function trace(msg:String):Void {
- instance.getPrinter().trace(msg);
+ getInstance().getPrinter().trace(msg);
}
+ public static function getInstance():BaseTestRunner {
+ if(instance == undefined) {
+ return instance = new BaseTestRunner(ResultPrinter);
+ }
+ return instance;
+ }
+
public function setPrinter(printer:IResultPrinter):Void {
this.printer = printer;
}
Added: trunk/framework/as25/asunit/util/ArrayIterator.as
===================================================================
--- trunk/framework/as25/asunit/util/ArrayIterator.as (rev 0)
+++ trunk/framework/as25/asunit/util/ArrayIterator.as 2006-09-21 18:19:08 UTC (rev 118)
@@ -0,0 +1,24 @@
+
+import asunit.util.Iterator;
+import asunit.errors.IllegalOperationError;
+
+class asunit.util.ArrayIterator implements Iterator {
+
+ private var list:Array;
+ private var index:Number = 0;
+
+ public function ArrayIterator(list:Array) {
+ if(list == null) {
+ throw new IllegalOperationError("ArrayIterator needs an array in it's constructor");
+ }
+ this.list = list;
+ }
+
+ public function hasNext():Boolean {
+ return (list[index] != null);
+ }
+
+ public function next():Object {
+ return list[index++];
+ }
+}
\ No newline at end of file
Added: trunk/framework/as25/asunit/util/ArrayIteratorTest.as
===================================================================
--- trunk/framework/as25/asunit/util/ArrayIteratorTest.as (rev 0)
+++ trunk/framework/as25/asunit/util/ArrayIteratorTest.as 2006-09-21 18:19:08 UTC (rev 118)
@@ -0,0 +1,52 @@
+
+import asunit.util.ArrayIterator;
+import asunit.framework.TestCase;
+
+class asunit.util.ArrayIteratorTest extends TestCase {
+ private var className:String = "asunit.util.ArrayIteratorTest";
+ private var instance:ArrayIterator;
+
+ public function ArrayIteratorTest(testMethod:String) {
+ super(testMethod);
+ }
+
+ public function setUp():Void {
+ var arr:Array = new Array("one", "two", "three", "four", "five");
+ instance = new ArrayIterator(arr);
+ }
+
+ public function tearDown():Void {
+ delete instance;
+ }
+
+ public function testInstantiated():Void {
+ assertTrue("ArrayIterator instantiated", instance instanceof ArrayIterator);
+ }
+
+ public function testIterate():Void {
+ assertTrue("1", instance.hasNext());
+ assertEquals("2", "one", instance.next());
+ assertTrue("3", instance.hasNext());
+ assertEquals("4", "two", instance.next());
+ assertTrue("5", instance.hasNext());
+ assertEquals("6", "three", instance.next());
+ assertTrue("7", instance.hasNext());
+ assertEquals("8", "four", instance.next());
+ assertTrue("9", instance.hasNext());
+ assertEquals("10", "five", instance.next());
+ assertFalse("11", instance.hasNext());
+ }
+
+ public function testEmpty():Void {
+ var itr:ArrayIterator = new ArrayIterator(new Array());
+ assertFalse("1", itr.hasNext());
+ }
+
+ public function testSingleItem():Void {
+ var itr:ArrayIterator = new ArrayIterator(new Array("one"));
+ assertTrue(itr.hasNext());
+ assertEquals("2", "one", itr.next());
+ assertFalse("3", itr.hasNext());
+
+ }
+}
Added: trunk/framework/as25/asunit/util/Iterator.as
===================================================================
--- trunk/framework/as25/asunit/util/Iterator.as (rev 0)
+++ trunk/framework/as25/asunit/util/Iterator.as 2006-09-21 18:19:08 UTC (rev 118)
@@ -0,0 +1,5 @@
+
+interface asunit.util.Iterator {
+ public function hasNext():Boolean;
+ public function next():Object;
+}
\ No newline at end of file
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|