|
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.
|
|
From: <luk...@us...> - 2007-06-03 22:41:23
|
Revision: 166
http://svn.sourceforge.net/asunit/?rev=166&view=rev
Author: lukebayes
Date: 2007-06-03 15:41:21 -0700 (Sun, 03 Jun 2007)
Log Message:
-----------
Added support for shell trace output
Modified Paths:
--------------
trunk/framework/as25/asunit/runner/BaseTestRunner.as
trunk/framework/as25/asunit/textui/ResultPrinter.as
trunk/framework/as25/asunit/textui/TestRunner.as
Modified: trunk/framework/as25/asunit/runner/BaseTestRunner.as
===================================================================
--- trunk/framework/as25/asunit/runner/BaseTestRunner.as 2007-06-03 22:13:34 UTC (rev 165)
+++ trunk/framework/as25/asunit/runner/BaseTestRunner.as 2007-06-03 22:41:21 UTC (rev 166)
@@ -27,6 +27,7 @@
public function start(testCase:Function, testMethod:String, showTrace:Boolean):TestResult {
try {
+ getPrinter().setShowTrace(showTrace);
var suite:Test = Test(new testCase(testMethod));
return doRun(suite, showTrace);
}
@@ -60,7 +61,7 @@
}
public static function trace(msg:String):Void {
- getInstance().getPrinter().trace(msg);
+ getInstance().getPrinter().traceln(msg);
}
public static function getInstance():BaseTestRunner {
Modified: trunk/framework/as25/asunit/textui/ResultPrinter.as
===================================================================
--- trunk/framework/as25/asunit/textui/ResultPrinter.as 2007-06-03 22:13:34 UTC (rev 165)
+++ trunk/framework/as25/asunit/textui/ResultPrinter.as 2007-06-03 22:41:21 UTC (rev 166)
@@ -50,7 +50,7 @@
createSuccessBar();
}
- public function trace():Void {
+ public function traceln():Void {
traceOutput._visible = true;
traceOutput.text += arguments.toString() + "\n";
traceOutput.scroll = traceOutput.maxscroll;
@@ -162,6 +162,14 @@
bar.height = barHeight;
}
+ public function setShowTrace(showTrace:Boolean):Void {
+ this.showTrace = showTrace;
+ }
+
+ public function getShowTrace():Boolean {
+ return showTrace;
+ }
+
public function printResult(result:TestResult, runTime:Number):Void {
printHeader(runTime);
printErrors(result);
@@ -170,7 +178,7 @@
bar.setSuccess(result.wasSuccessful());
if(showTrace) {
- trace(textArea.text);
+ trace(textArea.text.split("\r").join("\n"));
}
}
Modified: trunk/framework/as25/asunit/textui/TestRunner.as
===================================================================
--- trunk/framework/as25/asunit/textui/TestRunner.as 2007-06-03 22:13:34 UTC (rev 165)
+++ trunk/framework/as25/asunit/textui/TestRunner.as 2007-06-03 22:41:21 UTC (rev 166)
@@ -10,6 +10,7 @@
* file system, etc.
*/
class asunit.textui.TestRunner extends BaseTestRunner {
+ public static var SHOW_TRACE:Boolean = true;
public function TestRunner() {
super(ResultPrinter);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|