You can subscribe to this list here.
2006 |
Jan
|
Feb
|
Mar
(45) |
Apr
(7) |
May
(2) |
Jun
(5) |
Jul
|
Aug
(8) |
Sep
(49) |
Oct
(13) |
Nov
(11) |
Dec
(2) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2007 |
Jan
(13) |
Feb
(4) |
Mar
(1) |
Apr
|
May
(2) |
Jun
(4) |
Jul
|
Aug
|
Sep
|
Oct
(4) |
Nov
(7) |
Dec
(1) |
2008 |
Jan
|
Feb
(7) |
Mar
|
Apr
|
May
|
Jun
|
Jul
(15) |
Aug
|
Sep
|
Oct
(1) |
Nov
(1) |
Dec
|
2009 |
Jan
(3) |
Feb
(1) |
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: <luk...@us...> - 2006-03-05 01:34:39
|
Revision: 8 Author: lukebayes Date: 2006-03-04 17:34:36 -0800 (Sat, 04 Mar 2006) ViewCVS: http://svn.sourceforge.net/asunit/?rev=8&view=rev Log Message: ----------- - Removed alert statement from constructorType changed - set "public" as the default type for constructors as they were printing "undefined" for as2 and as25 builds Modified Paths: -------------- trunk/xului/src/chrome/asunit/content/asunit/script/ClassModel.js trunk/xului/src/chrome/asunit/content/asunit/script/CreateClass.js Modified: trunk/xului/src/chrome/asunit/content/asunit/script/ClassModel.js =================================================================== --- trunk/xului/src/chrome/asunit/content/asunit/script/ClassModel.js 2006-03-05 01:18:26 UTC (rev 7) +++ trunk/xului/src/chrome/asunit/content/asunit/script/ClassModel.js 2006-03-05 01:34:36 UTC (rev 8) @@ -61,7 +61,7 @@ ClassModel.prototype.template = ""; ClassModel.prototype.classPath = ""; ClassModel.prototype.className = ""; -ClassModel.prototype.constructorType = ""; +ClassModel.prototype.constructorType = "public"; ClassModel.prototype.superClassName = ""; ClassModel.prototype.testCaseType = ClassModel.STANDARD_TYPE; ClassModel.prototype.interfaces = new Array(); Modified: trunk/xului/src/chrome/asunit/content/asunit/script/CreateClass.js =================================================================== --- trunk/xului/src/chrome/asunit/content/asunit/script/CreateClass.js 2006-03-05 01:18:26 UTC (rev 7) +++ trunk/xului/src/chrome/asunit/content/asunit/script/CreateClass.js 2006-03-05 01:34:36 UTC (rev 8) @@ -287,8 +287,7 @@ CreateClass.prototype.onConstructorTypeChanged = function(event) { var combo = this.targetEnvironment; - - alert("on template changed with: " + combo); +// alert("on template changed with: " + combo); } CreateClass.prototype.onConstructorTypeChanged = function(event) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <luk...@us...> - 2006-03-05 01:18:31
|
Revision: 7 Author: lukebayes Date: 2006-03-04 17:18:26 -0800 (Sat, 04 Mar 2006) ViewCVS: http://svn.sourceforge.net/asunit/?rev=7&view=rev Log Message: ----------- Got TestSuites working. Still need to get Visual TestCases and Async TestCases. Modified Paths: -------------- trunk/framework/as25/AsUnitTestRunner.as trunk/framework/as25/AsUnitTestRunner.fla trunk/framework/as25/AsUnitTestRunner.swf trunk/framework/as25/asunit/framework/Assert.as trunk/framework/as25/asunit/framework/TestCase.as trunk/framework/as25/asunit/framework/TestSuite.as Modified: trunk/framework/as25/AsUnitTestRunner.as =================================================================== --- trunk/framework/as25/AsUnitTestRunner.as 2006-03-05 00:14:34 UTC (rev 6) +++ trunk/framework/as25/AsUnitTestRunner.as 2006-03-05 01:18:26 UTC (rev 7) @@ -3,7 +3,7 @@ class AsUnitTestRunner extends TestRunner { public function AsUnitTestRunner() { - start(asunit.framework.ObjectTest); + start(AllTests); } public static function main():Void { Modified: trunk/framework/as25/AsUnitTestRunner.fla =================================================================== (Binary files differ) Modified: trunk/framework/as25/AsUnitTestRunner.swf =================================================================== (Binary files differ) Modified: trunk/framework/as25/asunit/framework/Assert.as =================================================================== --- trunk/framework/as25/asunit/framework/Assert.as 2006-03-05 00:14:34 UTC (rev 6) +++ trunk/framework/as25/asunit/framework/Assert.as 2006-03-05 01:18:26 UTC (rev 7) @@ -9,13 +9,11 @@ * @see TestCase */ class asunit.framework.Assert { -// private static var testRunner:TestRunner; private static var defaultClassName:String = "[ClassName Unknown]"; private static var lastDepth:Number = 1; - -// private function Assert() { -// } + private function Assert() { + } /** * Returns the next available depth for attaching a MovieClip. @@ -352,7 +350,6 @@ * </pre> */ public static function fail(msg:String):Void { - trace("attempting to fail an assertion now with: " + msg); throw new AssertionFailedError(msg); - } + } } \ No newline at end of file Modified: trunk/framework/as25/asunit/framework/TestCase.as =================================================================== --- trunk/framework/as25/asunit/framework/TestCase.as 2006-03-05 00:14:34 UTC (rev 6) +++ trunk/framework/as25/asunit/framework/TestCase.as 2006-03-05 01:18:26 UTC (rev 7) @@ -58,7 +58,15 @@ result.addFailure(this, e); } catch(ioe:Error) { - result.addError(this, ioe); + // Had to add this catch because compiling from Flash 8 Authoring + // Always sends the error to this catch statement... + // Compiling with MTASC seems to capture above... + if(ioe instanceof AssertionFailedError) { + result.addFailure(this, AssertionFailedError(ioe)); + } + else { + result.addError(this, ioe); + } } } } @@ -117,7 +125,6 @@ } public function toString():String { - trace("TEST CASE TO STRING: " + getCurrentMethod()); return getName() + "." + getCurrentMethod() + "()"; } Modified: trunk/framework/as25/asunit/framework/TestSuite.as =================================================================== --- trunk/framework/as25/asunit/framework/TestSuite.as 2006-03-05 00:14:34 UTC (rev 6) +++ trunk/framework/as25/asunit/framework/TestSuite.as 2006-03-05 01:18:26 UTC (rev 7) @@ -1,9 +1,77 @@ import asunit.framework.TestCase; import asunit.framework.Test; +import asunit.framework.TestResult; class asunit.framework.TestSuite extends TestCase { - + private var fTests:Array = new Array(); + + public function TestSuite() { + super(); + fTests = new Array(); + } + + private function getTestMethods():Array { + return new Array(); + } + /** + * Adds a test to the suite. + */ public function addTest(test:Test):Void { - trace("addTest called with: " + test); + fTests.push(test); } + + /** + * Counts the number of tests that will be run by this Suite. + */ + public function countTestCases():Number { + var count:Number; + var len:Number = fTests.length; + for(var i:Number = 0; i < len; i++) { + count = count + fTests[i].countTestCases(); + } + return count; + } + + /** + * Runs the tests and collects their result in a TestResult. + */ + public function run():Void { + var result:TestResult = getResult(); + 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(); + } + } + + /** + * Returns the number of tests in this suite + */ + public function testCount():Number { + return fTests.length; + } + + public function toString():String { + return getName(); + } + + public function getIsComplete():Boolean { + var len:Number = fTests.length; + for(var i:Number = 0; i < len; i++) { + if(!fTests[i].getIsComplete()) { + return false; + } + } + return true; + } + + public function setContext(context:MovieClip):Void { + super.setContext(context); + var len:Number = fTests.length; + for(var i:Number = 0; i < len; i++) { + fTests[i].setContext(context); + } + } } \ 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...> - 2006-03-05 00:14:46
|
Revision: 6 Author: lukebayes Date: 2006-03-04 16:14:34 -0800 (Sat, 04 Mar 2006) ViewCVS: http://svn.sourceforge.net/asunit/?rev=6&view=rev Log Message: ----------- Working on custom build for Flash Players 7 and 8 Added Paths: ----------- trunk/framework/as25/ trunk/framework/as25/AsUnitTestRunner.as trunk/framework/as25/AsUnitTestRunner.fla trunk/framework/as25/AsUnitTestRunner.swf trunk/framework/as25/asunit/ trunk/framework/as25/asunit/errors/ trunk/framework/as25/asunit/errors/AssertionFailedError.as trunk/framework/as25/asunit/errors/ClassNotFoundError.as trunk/framework/as25/asunit/errors/IllegalOperationError.as trunk/framework/as25/asunit/errors/InstanceNotFoundError.as trunk/framework/as25/asunit/errors/InvocationTargetError.as trunk/framework/as25/asunit/errors/UnimplementedFeatureError.as trunk/framework/as25/asunit/framework/ trunk/framework/as25/asunit/framework/Assert.as trunk/framework/as25/asunit/framework/ITestListener.as trunk/framework/as25/asunit/framework/Test.as trunk/framework/as25/asunit/framework/TestCase.as trunk/framework/as25/asunit/framework/TestFailure.as trunk/framework/as25/asunit/framework/TestResult.as trunk/framework/as25/asunit/framework/TestSuite.as trunk/framework/as25/asunit/runner/ trunk/framework/as25/asunit/runner/BaseTestRunner.as trunk/framework/as25/asunit/runner/IResultPrinter.as trunk/framework/as25/asunit/textui/ trunk/framework/as25/asunit/textui/ResultPrinter.as trunk/framework/as25/asunit/textui/SuccessBar.as trunk/framework/as25/asunit/textui/TestRunner.as Added: trunk/framework/as25/AsUnitTestRunner.as =================================================================== --- trunk/framework/as25/AsUnitTestRunner.as (rev 0) +++ trunk/framework/as25/AsUnitTestRunner.as 2006-03-05 00:14:34 UTC (rev 6) @@ -0,0 +1,12 @@ +import asunit.textui.TestRunner; + +class AsUnitTestRunner extends TestRunner { + + public function AsUnitTestRunner() { + start(asunit.framework.ObjectTest); + } + + public static function main():Void { + var runner = new AsUnitTestRunner(); + } +} Added: trunk/framework/as25/AsUnitTestRunner.fla =================================================================== (Binary files differ) Property changes on: trunk/framework/as25/AsUnitTestRunner.fla ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/framework/as25/AsUnitTestRunner.swf =================================================================== (Binary files differ) Property changes on: trunk/framework/as25/AsUnitTestRunner.swf ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/framework/as25/asunit/errors/AssertionFailedError.as =================================================================== --- trunk/framework/as25/asunit/errors/AssertionFailedError.as (rev 0) +++ trunk/framework/as25/asunit/errors/AssertionFailedError.as 2006-03-05 00:14:34 UTC (rev 6) @@ -0,0 +1,7 @@ + +class asunit.errors.AssertionFailedError extends Error { + + public function AssertionFailedError(msg:String) { + super(msg); + } +} \ No newline at end of file Added: trunk/framework/as25/asunit/errors/ClassNotFoundError.as =================================================================== --- trunk/framework/as25/asunit/errors/ClassNotFoundError.as (rev 0) +++ trunk/framework/as25/asunit/errors/ClassNotFoundError.as 2006-03-05 00:14:34 UTC (rev 6) @@ -0,0 +1,7 @@ + +class asunit.errors.ClassNotFoundError extends Error { + + public function ClassNotFoundError(msg:String) { + super(msg); + } +} \ No newline at end of file Added: trunk/framework/as25/asunit/errors/IllegalOperationError.as =================================================================== --- trunk/framework/as25/asunit/errors/IllegalOperationError.as (rev 0) +++ trunk/framework/as25/asunit/errors/IllegalOperationError.as 2006-03-05 00:14:34 UTC (rev 6) @@ -0,0 +1,7 @@ + +class asunit.errors.IllegalOperationError extends Error { + + public function IllegalOperationError(msg:String) { + super(msg); + } +} \ No newline at end of file Added: trunk/framework/as25/asunit/errors/InstanceNotFoundError.as =================================================================== --- trunk/framework/as25/asunit/errors/InstanceNotFoundError.as (rev 0) +++ trunk/framework/as25/asunit/errors/InstanceNotFoundError.as 2006-03-05 00:14:34 UTC (rev 6) @@ -0,0 +1,7 @@ + +class asunit.errors.InstanceNotFoundError extends Error { + + public function InstanceNotFoundError(msg:String) { + super(msg); + } +} \ No newline at end of file Added: trunk/framework/as25/asunit/errors/InvocationTargetError.as =================================================================== --- trunk/framework/as25/asunit/errors/InvocationTargetError.as (rev 0) +++ trunk/framework/as25/asunit/errors/InvocationTargetError.as 2006-03-05 00:14:34 UTC (rev 6) @@ -0,0 +1,7 @@ + +class asunit.errors.InvocationTargetError extends Error { + + public function InvocationTargetError(msg:String) { + super(msg); + } +} \ No newline at end of file Added: trunk/framework/as25/asunit/errors/UnimplementedFeatureError.as =================================================================== --- trunk/framework/as25/asunit/errors/UnimplementedFeatureError.as (rev 0) +++ trunk/framework/as25/asunit/errors/UnimplementedFeatureError.as 2006-03-05 00:14:34 UTC (rev 6) @@ -0,0 +1,7 @@ + +class asunit.errors.UnimplementedFeatureError extends Error { + + public function UnimplementedFeatureError(msg:String) { + super(msg); + } +} \ No newline at end of file Added: trunk/framework/as25/asunit/framework/Assert.as =================================================================== --- trunk/framework/as25/asunit/framework/Assert.as (rev 0) +++ trunk/framework/as25/asunit/framework/Assert.as 2006-03-05 00:14:34 UTC (rev 6) @@ -0,0 +1,358 @@ +import asunit.errors.AssertionFailedError; + +/** + * Provides assert methods and other utility methods which are inherited by + * the {@link TestCase} subclass. Since all user-defined test cases should + * extend {@link TestCase} you should never have to use this class + * directly. + * + * @see TestCase + */ +class asunit.framework.Assert { +// private static var testRunner:TestRunner; + private static var defaultClassName:String = "[ClassName Unknown]"; + private static var lastDepth:Number = 1; + + +// private function Assert() { +// } + + /** + * Returns the next available depth for attaching a MovieClip. + * + * @return + * Number of next available depth. + */ + private static function nextDepth():Number { + return Assert.lastDepth++; + } + + /** + * Appends a test result to the {@link TestRunner} which manages test + * result output. This method is intended for use by the AsUnit + * framework and should never have to be called directly. + * + * @param msg + * The message associated with the assertion. + * @param assertType + * The assertion type. + * @param passFail + * Indicates whether the test passed (<code>true</code>) or + * failed (<code>false</code>). + * + */ + public static function addTestResult(msg:String, assertType:String, passed:Boolean) { + if(!passed) { + var str:String = ""; + if(msg != "") { + str += assertType + ".message: " + msg; + } + fail(str); + } + } + + /** + * Returns a reference to the {@link TestRunner} instance which manages + * the output of test results. This method is intended for use by the + * AsUnit framework and should never have to be called directly. + private static function getTestRunner():TestRunner { + if(testRunner == null) { + testRunner = new TestRunner(); + } + return testRunner; + } + */ + + /** + * Returns the number of {@link TestCases} that have completed. + public static function countTestCases():Number { + return testRunner.length; + } + */ + + /** + * Asserts that two objects are equal. If either of the + * objects provides an <code>equals()</code> method it will be used to + * determine equality. Otherwise, equality will be evaluated using the + * strict equality operator (<code>===</code>).<br /> + * <br /> + * The method below tests the <code>getFullName()</code> method of the + * <code>Person</code> class to make sure that the formatting of its + * return value is correct.<br /> + * + * <pre> + * public function testGetFullName():Void { + * var person:Person = new Person("John", "Alan", "Smith"); + * assertEquals("full name should be formatted: [first] [middleInitial]. [last]", + * "John A. Smith", + * person.getFullName()); + * } + * </pre> + * + * @param msg + * Optional; Message to display should the test fail. It is + * recommended that this message describe what is asserted to be + * true rather than describing what went wrong. + * @param assertion1 + * First object to use in evaluation. + * @param assertion2 + * Second object to use in evaluation. + */ + public static function assertEquals(msg:Object, assertion1:Object, assertion2:Object):Void { + if(arguments.length == 2) { + assertion2 = assertion1; + assertion1 = msg; + msg = ""; + } + if(assertion1["equals"] instanceof Function) { + addTestResult(String(msg), "assertEquals", assertion1["equals"](assertion2)); + } else if(assertion2["equals"] != undefined) { + addTestResult(String(msg), "assertEquals", assertion2["equals"](assertion1)); + } else { + addTestResult(String(msg), "assertEquals", assertion1 === assertion2); + } + + } + + /** + * Asserts that a value is <code>null</code>.<br /> + * <br /> + * The method below tests to confirm that the parameter passed to the + * <code>getProductBySku</code> method of the + * <code>ProductCatalog</code> is treated as case sensitive.<br /> + * + * <pre> + * public function testGetProductBySku():Void { + * // Set up a fixture to test against. + * var productCatalog:ProductCatalog = new ProductCatalog(); + * productCatalog.addProduct(new Product("sku123a")); + * + * // Try retrieving a product using improper text case. + * var product:Product = productCatalog.getProductBySku("SKU123A"); + * assertNull("the SKU parameter should be case sensitive", + * product); + * } + * </pre> + * + * @param msg + * Optional; Message to display should the test fail. It is + * recommended that this message describe what is asserted to be + * true rather than describing what went wrong. + * @param assertion + * Object to be evaluated. + */ + public static function assertNull(msg:Object, assertion:Object):Void { + if(arguments.length == 1) { + assertion = msg; + msg = ""; + } + addTestResult(String(msg), "assertNull", (assertion === null)); + } + + /** + * Asserts that a value is not <code>null</code>.<br /> + * <br /> + * The method below tests to confirm that the parameter passed to the + * <code>getColorByName</code> method of the <code>ColorManager</code> + * class is treated as case insensitive.<br /> + * + * <pre> + * public function testGetColorByName():Void { + * // Set up a fixture to test against. + * var colorManager:ColorManager = new ColorManager(); + * colorManager.addColor(new Color("blue")); + * + * // Try retrieving a color using alternate text case. + * var color:Color = colorManager.getColorByName("Blue"); + * assertNotNull("color name parameter should not be case sensitive", + * color); + * } + * </pre> + * + * @param msg + * Optional; Message to display should the test fail. It is + * recommended that this message describe what is asserted to be + * true rather than describing what went wrong. + * @param assertion + * Object to be evaluated. + */ + public static function assertNotNull(msg:Object, assertion:Object):Void { + if(arguments.length == 1) { + assertion = msg; + msg = ""; + } + addTestResult(String(msg), "assertNotNull", (assertion !== null)); + } + + /** + * Asserts that a value is <code>undefined</code>. + * + * @param msg + * Optional; Message to display should the test fail. It is + * recommended that this message describe what is asserted to be + * true rather than describing what went wrong. + * @param assertion + * Object to be evaluated. + */ + public static function assertUndefined(msg:Object, assertion:Object):Void { + if(arguments.length == 1) { + assertion = msg; + msg = ""; + } + addTestResult(String(msg), "assertUndefined", (assertion === undefined)); + } + + /** + * Asserts that a value is not <code>undefined</code>. + * + * @param msg + * Optional; Message to display should the test fail. It is + * recommended that this message describe what is asserted to be + * true rather than describing what went wrong. + * @param assertion + * Object to be evaluated. + */ + public static function assertNotUndefined(msg:Object, assertion:Object):Void { + if(arguments.length == 1) { + assertion = msg; + msg = ""; + } + addTestResult(String(msg), "assertNotUndefined", (assertion !== undefined)); + } + + /** + * Asserts that two variables are pointing to the same object in + * memory.<br /> + * <br /> + * The method below tests to confirm that the static + * <code>getInstance()</code> method of the <code>ServiceLocator</code> + * class always returns a reference to the same instance of + * <code>ServiceLocator</code>.<br /> + * + * <pre> + * public function testGetInstance():Void { + * var instance1:ServiceLocator = ServiceLocator.getInstance(); + * var instance2:ServiceLocator = ServiceLocator.getInstance(); + * assertSame("getInstance() should always return the same ServiceLocator instance", + * instance1, + * instance2); + * } + * </code> + * + * @param msg + * Optional; Message to display should the test fail. It is + * recommended that this message describe what is asserted to be + * true rather than describing what went wrong. + * @param object1 + * First object to use in evaluation. + * @param object2 + * Second object to use in evaluation. + */ + public static function assertSame(msg:Object, object1:Object, object2:Object):Void { + if(arguments.length == 2) { + object2 = object1; + object1 = msg; + msg = ""; + } + addTestResult(String(msg), "assertSame", (object1 === object2)); + } + + /** + * Asserts that a statement evaluates to <code>true</code>. Since this + * method lets you pass in any expression that evaluates to a boolean + * value, it is a good method to fall back on when the other + * <code>assert<i>XXX</i></code> methods don't provide the kind of + * functionality your test requires.<br /> + * <br /> + * The method below test to confirm that new <code>Product</code> objects + * are assigned ascending catalog numbers when created by the + * <code>ProductGenerator</code> class.<br /> + * + * <pre> + * public function testMakeProductCatalogNumberAssignement():Void { + * var generator:ProductGenerator = ProductGenerator.getInstance(); + * var product1:Product = generator.makeProduct("sku123"); + * var product2:Product = generator.makeProduct("sku456"); + * assertTrue("products should be assigned ascending catalog numbers", + * product1.catNumber < product2.catNumber); + * } + * </code> + * + * @param msg + * Optional; Message to display should the test fail. It is + * recommended that this message describe what is asserted to be + * true rather than describing what went wrong. + * @param assertion + * A statement that evaluates to a boolean value. + */ + public static function assertTrue(msg:Object, assertion:Boolean):Void { + if(arguments.length == 1) { + assertion = Boolean(msg); + msg = ""; + } + addTestResult(String(msg), "assertTrue", assertion); + } + + /** + * Asserts that a statement evaluates to <code>false</code>. Since this + * method lets you pass in any expression that evaluates to a boolean + * value, it is a good method to fall back on when the other + * <code>assert<i>XXX</i></code> methods don't provide the kind of + * functionality your test requires.<br /> + * <br /> + * The method below tests to confirm that the return value of the + * <code>truncate()</code> method of the <code>TextUtil</code> + * class is no longer than the specified limit<br /> + * + * <pre> + * public function testTruncate():Void { + * var limit:Number = 30; + * var text:String = "As a reviewer, I got an early opportunity to read the book you are holding."; + * var clippedText:String = TextUtil.truncate(text, limit); + * assertFalse("return value should be no more than 30 characters", + * clippedText.length > 30); + * } + * </code> + * + * @param msg + * Optional; Message to display should the test fail. It is + * recommended that this message describe what is asserted to be + * true rather than describing what went wrong. + * @param assertion + * A statement that evaluates to a boolean value. + */ + public static function assertFalse(msg:Object, assertion:Boolean):Void { + if(arguments.length == 1) { + assertion = Boolean(msg); + msg = ""; + } + addTestResult(String(msg), "assertFalse", !assertion); + } + + /** + * Forces a failing test result to be recorded. This method is useful + * in the rare circumstances where the <code>assert<i>XXX</i></code> + * methods can not be used, for example, when testing error + * handling.<br> + * <br /> + * The method below tests to confirm that a "gifts" product category can + * be accessed through a <code>Catalog</code> instance.<br /> + * + * <pre> + * public function testGiftsProductCategoryAccess():Void { + * var catalog:ProductCatalog = CatalogFactory.getCatalog("fall2005"); + * + * // Try accessing the "gifts" product category. + * try { + * var products:Array = catalog.getProducts("gifts"); + * } catch (error:com.mycompany.errors.InvalidProductCategoryError) { + * fail("catalog should contain 'gifts' products"); + * } + * } + * </pre> + */ + public static function fail(msg:String):Void { + trace("attempting to fail an assertion now with: " + msg); + throw new AssertionFailedError(msg); + } +} \ No newline at end of file Added: trunk/framework/as25/asunit/framework/ITestListener.as =================================================================== --- trunk/framework/as25/asunit/framework/ITestListener.as (rev 0) +++ trunk/framework/as25/asunit/framework/ITestListener.as 2006-03-05 00:14:34 UTC (rev 6) @@ -0,0 +1,13 @@ +import asunit.errors.AssertionFailedError; +import asunit.framework.Test; + +interface asunit.framework.ITestListener { + // A test started. + public function startTest(test:Test):Void; + // An error occurred. + public function addError(test:Test, e:Error):Void; + // A failure occurred. + public function addFailure(test:Test, e:AssertionFailedError):Void; + // A test ended. + public function endTest(test:Test):Void; +} Added: trunk/framework/as25/asunit/framework/Test.as =================================================================== --- trunk/framework/as25/asunit/framework/Test.as (rev 0) +++ trunk/framework/as25/asunit/framework/Test.as 2006-03-05 00:14:34 UTC (rev 6) @@ -0,0 +1,10 @@ +import asunit.framework.TestResult; + +interface asunit.framework.Test { + + public function setResult(result:TestResult):Void; + public function setContext(context:MovieClip):Void; + public function run():Void; + public function countTestCases():Number; + public function toString():String; +} \ No newline at end of file Added: trunk/framework/as25/asunit/framework/TestCase.as =================================================================== --- trunk/framework/as25/asunit/framework/TestCase.as (rev 0) +++ trunk/framework/as25/asunit/framework/TestCase.as 2006-03-05 00:14:34 UTC (rev 6) @@ -0,0 +1,127 @@ +import asunit.framework.Assert; +import asunit.framework.Test; +import asunit.framework.TestResult; +import asunit.errors.AssertionFailedError; + +class asunit.framework.TestCase extends Assert implements Test { + private var className:String = "[default]"; + + private var result:TestResult; + private var context:MovieClip; + private var currentMethod:String; + private var runSingle:Boolean; + private var isComplete:Boolean; + + public function TestCase(testMethod:String) { + if(testMethod != undefined) { + runSingle = true; + currentMethod = testMethod; + } + } + + public function countTestCases():Number { + return getTestMethods().length; + } + + private function setUp():Void { + } + + private function tearDown():Void { + } + + private function cleanUp():Void { + } + + public function setResult(result:TestResult):Void { + this.result = result; + } + + public function setContext(context:MovieClip):Void { + this.context = context; + } + + public function run():Void { + var result:TestResult = getResult(); + result.run(this); + } + + public function runBare():Void { + var methods:Array = getTestMethods(); + var name:String; + try { + for(var i:Number = 0; i < methods.length; i++) { + name = methods[i]; + try { + runMethod(name); + } + catch(e:AssertionFailedError) { + result.addFailure(this, e); + } + catch(ioe:Error) { + result.addError(this, ioe); + } + } + } + finally { + if(!runSingle) { + cleanUp(); + } + } + + isComplete = true; + } + + private function runMethod(methodName:String):Void { + currentMethod = methodName; + setUp(); + try { + this[methodName](); + } + finally { + if(!runSingle) { + tearDown(); + } + } + } + + private function getTestMethods():Array { + if(runSingle) { + return new Array(currentMethod); + } + var methods:Array = new Array(); + _global.ASSetPropFlags(this.__proto__, null, 6, true); + for(var i:String in this) { + if(i.indexOf("test") == 0 && this[i] instanceof Function) { + methods.push(i); + } + } + _global.ASSetPropFlags(this.__proto__, null, 1, true); + methods.reverse(); + return methods; + } + + private function getResult():TestResult { + return result; + } + + /** + * Returns the name of the currently running test method. This + * method is intended for use by the AsUnit framework and should never + * have to be called directly. + * + * @return + * A method name. Ex. <code>"testGetValue"</code>. + */ + public function getCurrentMethod():String { + return currentMethod; + } + + public function toString():String { + trace("TEST CASE TO STRING: " + getCurrentMethod()); + return getName() + "." + getCurrentMethod() + "()"; + } + + public function getName():String { + return className; + } +} \ No newline at end of file Added: trunk/framework/as25/asunit/framework/TestFailure.as =================================================================== --- trunk/framework/as25/asunit/framework/TestFailure.as (rev 0) +++ trunk/framework/as25/asunit/framework/TestFailure.as 2006-03-05 00:14:34 UTC (rev 6) @@ -0,0 +1,53 @@ +//import flash.util.StringBuilder; +import asunit.errors.AssertionFailedError; +import asunit.framework.Test; + +/** + * A <code>TestFailure</code> collects a failed test together with + * the caught exception. + * @see TestResult + */ +class asunit.framework.TestFailure { + private var fFailedTest:String; + private var fThrownException:Error; + + /** + * Constructs a TestFailure with the given test and exception. + */ + public function TestFailure(failedTest:Test, thrownException:Error) { + fFailedTest = failedTest.toString(); + fThrownException = thrownException; + } + /** + * Gets the failed test. + */ + public function failedTest():String { + return fFailedTest; + } + /** + * Gets the thrown exception. + */ + public function thrownException():Error { + return fThrownException; + } + /** + * Returns a short description of the failure. + */ + public function toString():String { + return ""; +// return fFailedTest.toString(); +// var buffer:StringBuilder = new StringBuilder(); +// buffer.append(fFailedTest.toString()); +// buffer.append(":\n"); +// buffer.append(fThrownException.toString()); +// return buffer.toString(); + } + + public function exceptionMessage():String { + return thrownException().message; + } + + public function isFailure():Boolean { + return thrownException() instanceof AssertionFailedError; + } +} \ No newline at end of file Added: trunk/framework/as25/asunit/framework/TestResult.as =================================================================== --- trunk/framework/as25/asunit/framework/TestResult.as (rev 0) +++ trunk/framework/as25/asunit/framework/TestResult.as 2006-03-05 00:14:34 UTC (rev 6) @@ -0,0 +1,170 @@ +//import flash.events.EventDispatcher; +import asunit.errors.IllegalOperationError; +import asunit.errors.AssertionFailedError; +import asunit.errors.InstanceNotFoundError; +import asunit.framework.Test; +import asunit.framework.TestCase; +import asunit.framework.TestFailure; +import asunit.framework.ITestListener; + +/** + * 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 + */ +class asunit.framework.TestResult { + private var fFailures:Array; + private var fErrors:Array; + private var fListeners:Array; + private var fRunTests:Number; + 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:Number = fListeners.length; + var item:ITestListener; + for(var i:Number = 0; i < len; i++) { + item = ITestListener(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:Number = fListeners.length; + var item:ITestListener; + for(var i:Number = 0; i < len; i++) { + item = ITestListener(fListeners[i]); + item.addFailure(test, t); + } + } + /** + * Registers a ITestListener + */ + public function addListener(listener:ITestListener):Void { + fListeners.push(listener); + } + /** + * Unregisters a ITestListener + */ + public function removeListener(listener:ITestListener):Void { + var len:Number = fListeners.length; + for(var i:Number = 0; 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():Number { + return fErrors.length; + } + /** + * Returns an Enumeration for the errors + */ + public function errors():Array { + return fErrors; + } + /** + * Gets the number of detected failures. + */ + public function failureCount():Number { + return fFailures.length; + } + /** + * Returns an Enumeration for the failures + */ + public function failures():Array { + return fFailures; + } + + /** + * Runs a TestCase. + */ + public function run(test:TestCase):Void { + startTest(test); + try { + test.runBare(); + } + catch(e:AssertionFailedError) { + addFailure(test, e); + } + catch(ioe:IllegalOperationError) { + addError(test, ioe); + } + finally { + endTest(test); + } + } + /** + * Gets the number of run tests. + */ + public function runCount():Number { + 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:Number = test.countTestCases(); + fRunTests += count; + + var len:Number = fListeners.length; + var item:ITestListener; + for(var i:Number = 0; i < len; i++) { + item = ITestListener(fListeners[i]); + item.startTest(test); + } + } + /** + * Informs the result that a test was completed. + */ + public function endTest(test:Test):Void { + var len:Number = fListeners.length; + var item:ITestListener; + for(var i:Number = 0; i < len; i++) { + item = ITestListener(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 Added: trunk/framework/as25/asunit/framework/TestSuite.as =================================================================== --- trunk/framework/as25/asunit/framework/TestSuite.as (rev 0) +++ trunk/framework/as25/asunit/framework/TestSuite.as 2006-03-05 00:14:34 UTC (rev 6) @@ -0,0 +1,9 @@ +import asunit.framework.TestCase; +import asunit.framework.Test; + +class asunit.framework.TestSuite extends TestCase { + + public function addTest(test:Test):Void { + trace("addTest called with: " + test); + } +} \ No newline at end of file Added: trunk/framework/as25/asunit/runner/BaseTestRunner.as =================================================================== --- trunk/framework/as25/asunit/runner/BaseTestRunner.as (rev 0) +++ trunk/framework/as25/asunit/runner/BaseTestRunner.as 2006-03-05 00:14:34 UTC (rev 6) @@ -0,0 +1,81 @@ +import asunit.runner.IResultPrinter; +import asunit.framework.Test; +import asunit.framework.TestResult; + +class asunit.runner.BaseTestRunner { + private static var instance:BaseTestRunner; + private var printer:IResultPrinter; + + public function BaseTestRunner(printerReference:Function) { + if(printerReference == undefined) { + throw new Error("BaseTestRunner instantiated without a ResultPrinter"); + } + Stage.scaleMode = "noscale"; + Stage.align = "TL"; + instance = this; + setPrinter(createResultPrinter(printerReference)); + } + + public static function getFilteredTrace(stack:String):String { + return stack; + } + + public function start(testCase:Function, testMethod:String, showTrace:Boolean):TestResult { + try { + var suite:Test = Test(new testCase(testMethod)); + return doRun(suite, showTrace); + } + catch(e:Error) { + trace("ERROR: Failed to create and run test suite with: \n" + e.toString()); + } + } + + public function doRun(suite:Test, showTrace:Boolean):TestResult { + try { + var result:TestResult = new TestResult(); + result.addListener(getPrinter()); + var startTime:Number = getTimer(); + suite.setResult(result); + suite.setContext(getClipContext()); + suite.run(); + onTestsCompleted(result, startTime); + return result; + } + catch(e:Error) { + trace(e.toString()); + } + } + + private function onTestsCompleted(result:TestResult, startTime:Number):Void { + getPrinter().printResult(result, (getTimer() - startTime)); + } + + public static function trace(msg:String):Void { + instance.getPrinter().trace(msg); + } + + public function setPrinter(printer:IResultPrinter):Void { + this.printer = printer; + } + + public function getPrinter():IResultPrinter { + return IResultPrinter(printer); + } + + /* + * This function should return a refrence to the + * MovieClip that all test cases will attach items + * to. This MovieClip should probably *not* be _root. + */ + public function getClipContext():MovieClip { + return _root; + } + + private static function createResultPrinter(reference:Function):IResultPrinter { + var printer:IResultPrinter; + if(printer == undefined) { + printer = IResultPrinter(_root.attachMovie(reference.linkageId, "asUnitResultPrinter_" + 9000, 10000)); + } + return printer; + } +} \ No newline at end of file Added: trunk/framework/as25/asunit/runner/IResultPrinter.as =================================================================== --- trunk/framework/as25/asunit/runner/IResultPrinter.as (rev 0) +++ trunk/framework/as25/asunit/runner/IResultPrinter.as 2006-03-05 00:14:34 UTC (rev 6) @@ -0,0 +1,8 @@ +import asunit.framework.ITestListener; +import asunit.framework.TestResult; + +interface asunit.runner.IResultPrinter extends ITestListener { + + public function printResult(result:TestResult, runTime:Number):Void; + public function trace():Void; +} \ No newline at end of file Added: trunk/framework/as25/asunit/textui/ResultPrinter.as =================================================================== --- trunk/framework/as25/asunit/textui/ResultPrinter.as (rev 0) +++ trunk/framework/as25/asunit/textui/ResultPrinter.as 2006-03-05 00:14:34 UTC (rev 6) @@ -0,0 +1,249 @@ +import asunit.runner.IResultPrinter; +import asunit.errors.AssertionFailedError; +import asunit.framework.Test; +import asunit.framework.TestResult; +import asunit.framework.TestFailure; +import asunit.runner.BaseTestRunner; +import asunit.textui.SuccessBar; +import asunit.framework.ITestListener; + +class asunit.textui.ResultPrinter extends MovieClip implements IResultPrinter, ITestListener { + public static var linkageId:String = "__Packages.asunit.textui.ResultPrinter"; + public static var classRef:Function = ResultPrinter; + private static var instance:ResultPrinter; + + private var fColumn:Number = 0; + private var showTrace:Boolean; + private var barHeight:Number = 3; + private var bgColor:Number = 0x333333; + private var fontColor:Number = 0xFFFFFF; + private var spacing:Number = 5; + private var textArea:TextField; + private var traceOutput:TextField; + private var successMeter:MovieClip; + private var bar:SuccessBar; + + public function ResultPrinter() { + init(); + configureAssets(); + println("AsUnit - Powered by Pattern Park"); + } + + private function init():Void { + if(instance != undefined) { + throw new Error("Resultprinter instantiated twice in one session, this will likely cause problems"); + } + instance = this; + Stage.addListener(this); + } + + private function onLoad():Void { + onResize(); + } + + private function configureAssets():Void { + createTextArea(); + createOutput(); + createSuccessBar(); + } + + public function trace():Void { + traceOutput.text += arguments.toString() + "\n"; + traceOutput.scroll = traceOutput.maxscroll; + } + + public function println():Void { + textArea.text += arguments.toString() + "\n"; + } + + public function printf():Void { + textArea.text += arguments.toString(); + } + + public function startTest(test:Test):Void { + var count:Number = test.countTestCases(); + for(var i:Number = 0; i < count; i++) { + printf("."); + if (fColumn++ >= 80) { + println(); + fColumn = 0; + } + } + } + + public function addError(test:Test, e:Error):Void { + printf("E"); + } + + public function addFailure(test:Test, e:AssertionFailedError):Void { + printf("F"); + } + + public function endTest(test:Test):Void { + } + + private function createTextArea():Void { + textArea = getTextField("textArea", 2); + } + + private function createOutput():Void { + traceOutput = getTextField("output", 1); + var format:TextFormat = traceOutput.getTextFormat(); + format.align = "right"; + traceOutput.setNewTextFormat(format); + } + + private function getTextField(name:String, depth:Number):TextField { + this.createTextField(name, depth, 0, 0, 100, 100); + var textField:TextField = this[name]; + textField.wordWrap = true; + textField.multiline = true; + var format:TextFormat = new TextFormat(); + format.font = "Verdana"; + format.color = fontColor; + format.size = 11; + format.leftMargin = spacing/2; + format.rightMargin = spacing/2; + textField.setNewTextFormat(format); + return textField; + } + + private function createSuccessBar():Void { + bar = SuccessBar(attachMovie(SuccessBar.linkageId, "bar", 3)); + } + + private function onResize():Void { + draw(); + } + + public function draw():Void { + var w:Number = Stage.width; + var h:Number = Stage.height; + drawBackground(w, h); + drawTextArea(w, h); + drawOutput(w, h); + drawBar(w, h); + } + + private function drawBackground(w:Number, h:Number):Void { + clear(); + beginFill(bgColor); + lineTo(w, 0); + lineTo(w, h); + lineTo(0, h); + lineTo(0, 0); + endFill(); + } + + private function drawTextArea(w:Number, h:Number):Void { + drawTextField(textArea, w, h); + } + + private function drawOutput(w:Number, h:Number):Void { + drawTextField(traceOutput, w, h); + } + + private function drawTextField(ref:TextField, w:Number, h:Number):Void { + ref._width = w - (spacing*2); + ref._height = h - (barHeight + (spacing*2)); + ref._x = spacing; + ref._y = spacing; + } + + private function drawBar(w:Number, h:Number):Void { + bar._x = 0; + bar._y = h - (barHeight); + bar.width = w; + bar.height = barHeight; + } + + public function printResult(result:TestResult, runTime:Number):Void { + printHeader(runTime); + printErrors(result); + printFailures(result); + printFooter(result); + + bar.setSuccess(result.wasSuccessful()); + if(showTrace) { + trace(textArea.text); + } + } + + private function printHeader(runTime:Number):Void { + println(); + println(); + println("Time: " + elapsedTimeAsString(runTime)); + } + + /** + * Returns the formatted string of the elapsed time. + * Duplicated from BaseTestRunner. Fix it. + */ + private function elapsedTimeAsString(runTime:Number):String { + return Number(runTime/1000).toString(); + } + + private function printErrors(result:TestResult):Void { + printDefects(result.errors(), result.errorCount(), "error"); + } + + private function printFailures(result:TestResult):Void { + printDefects(result.failures(), result.failureCount(), "failure"); + } + + private function printDefects(booBoos:Array, count:Number, type:String):Void { + if (count == 0) { + return; + } + if (count == 1) { + println("There was " + count + " " + type + ":"); + } + else { + println("There were " + count + " " + type + "s:"); + } + var item:TestFailure; + var len:Number = booBoos.length; + for(var i:Number = 0; i < len; i++) { + printDefect(TestFailure(booBoos[i]), i); + } + } + + public function printDefect(booBoo:TestFailure, count:Number ):Void { // only public for testing purposes + printDefectHeader(booBoo, count); + printDefectTrace(booBoo); + } + + private function printDefectTrace(booBoo:TestFailure):Void { + println(BaseTestRunner.getFilteredTrace(booBoo.thrownException().toString())); + } + + private function printDefectHeader(booBoo:TestFailure, count:Number):Void { + // I feel like making this a println, then adding a line giving the throwable a chance to print something + // before we get to the stack trace. + var startIndex:Number = textArea.text.length; + println(count + ") " + booBoo.failedTest()); + var endIndex:Number = textArea.text.length; + + var format:TextFormat = textArea.getTextFormat(); + format.bold = true; + + // GROSS HACK because of bug in flash player - TextField isn't accepting formats... +// setTimeout(onFormatTimeout, 1, format, startIndex, endIndex); + } + + private function printFooter(result:TestResult):Void { + println(); + if (result.wasSuccessful()) { + printf("OK"); + println (" (" + result.runCount() + " test" + (result.runCount() == 1 ? "": "s") + ")"); + } else { + println("FAILURES!!!"); + println("Tests run: " + result.runCount()+ + ", Failures: "+result.failureCount()+ + ", Errors: "+result.errorCount()); + } + println(); + } + + public static var serializable:Boolean = Object.registerClass(linkageId, classRef); +} \ No newline at end of file Added: trunk/framework/as25/asunit/textui/SuccessBar.as =================================================================== --- trunk/framework/as25/asunit/textui/SuccessBar.as (rev 0) +++ trunk/framework/as25/asunit/textui/SuccessBar.as 2006-03-05 00:14:34 UTC (rev 6) @@ -0,0 +1,41 @@ + +class asunit.textui.SuccessBar extends MovieClip { + public static var linkageId:String = "__Packages.asunit.textui.SuccessBar"; + public static var classRef:Function = SuccessBar; + + private var myWidth:Number = 0; + private var myHeight:Number = 0; + private var bgColor:Number; + private var passingColor:Number = 0x00FF00; + private var failingColor:Number = 0xFD0000; + + public function SuccessBar() { + } + + public function setSuccess(success:Boolean):Void { + bgColor = (success) ? passingColor : failingColor; + draw(); + } + + public function set width(num:Number):Void { + myWidth = num; + draw(); + } + + public function set height(num:Number):Void { + myHeight = num; + draw(); + } + + private function draw():Void { + clear(); + beginFill(bgColor); + lineTo(myWidth, 0); + lineTo(myWidth, myHeight); + lineTo(0, myHeight); + lineTo(0, 0); + endFill(); + } + + public static var serializable:Boolean = Object.registerClass(linkageId, classRef); +} \ No newline at end of file Added: trunk/framework/as25/asunit/textui/TestRunner.as =================================================================== --- trunk/framework/as25/asunit/textui/TestRunner.as (rev 0) +++ trunk/framework/as25/asunit/textui/TestRunner.as 2006-03-05 00:14:34 UTC (rev 6) @@ -0,0 +1,17 @@ +import asunit.runner.BaseTestRunner; +import asunit.textui.ResultPrinter; + +/* + * This concrete TestRunner is simply created in order + * to choose a concrete ResultPrinter... This was + * set up so that we can easily output results + * to any target desired - this should include + * XMLSocket, LocalConnection, trace window, + * file system, etc. + */ +class asunit.textui.TestRunner extends BaseTestRunner { + + public function TestRunner() { + super(ResultPrinter); + } +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <luk...@us...> - 2006-03-04 03:13:41
|
Revision: 5 Author: lukebayes Date: 2006-03-03 19:13:39 -0800 (Fri, 03 Mar 2006) ViewCVS: http://svn.sourceforge.net/asunit/?rev=5&view=rev Log Message: ----------- Added link to svn instructions on sourceforge Modified Paths: -------------- trunk/comm/www/html/index.html Modified: trunk/comm/www/html/index.html =================================================================== --- trunk/comm/www/html/index.html 2006-03-04 02:16:48 UTC (rev 4) +++ trunk/comm/www/html/index.html 2006-03-04 03:13:39 UTC (rev 5) @@ -148,7 +148,7 @@ </tr> <tr> <td class="question">Get More Involved</td> - <td class="answer"><p>If you are interested in becoming a more serious contributor, please feel free to start <a href="http://svn.sourceforge.net/viewcvs.cgi/asunit/">browsing the Subversion repository</a></p> + <td class="answer"><p>If you are interested in becoming a more serious contributor, please feel free to start <a href="http://svn.sourceforge.net/viewcvs.cgi/asunit/">browsing the Subversion repository</a> or <a href="http://sourceforge.net/svn/?group_id=108947">checking out the sources directly</a>.</p> <p>If you're going to pull down the source code, be aware that it's pretty large. You would probably do well to grab only the module or folders that interest you.</p> <ul> <li><strong><a href="http://svn.sourceforge.net/viewcvs.cgi/asunit/trunk/comm/">comm</a>:</strong> Communications sources are in here. This web site, our <a href="http://svn.sourceforge.net/viewcvs.cgi/*checkout*/asunit/trunk/comm/marketing/trailer/fla/AsUnit-TechnicalMerit-Trailer.swf">trailer for being Flashforward film festival finalists</a>, T-shirt art, logos, etc... <i>We built this web page at 2:00am the night before we presented at Flashforward... These skinny green lines look great on firefox (about 3px) but in IE, they're huge. If you know why - please modify the page and/or stylesheet so we can make them consistent. Thanks...</i></li> @@ -160,7 +160,7 @@ </ul> <p>Once you get the appropriate sources down to your disk, please make sure you're up to date with the head revision before you begin making modifications. You can then easily make the changes you want, and when you're done - create a patch file directly from subversion. You can then easily send us your patch file in order to simplify our integration process. If you find yourself sending us patches more than once or twice, we will likely promote you to developer on the project and just get you write access to SVN. </p> <p><strong>Any contributions will be greatly appreciated!</strong></p> - + </td> </tr> <tr> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <luk...@us...> - 2006-03-04 02:16:50
|
Revision: 4 Author: lukebayes Date: 2006-03-03 18:16:48 -0800 (Fri, 03 Mar 2006) ViewCVS: http://svn.sourceforge.net/asunit/?rev=4&view=rev Log Message: ----------- Added information related to the SWFUI Modified Paths: -------------- trunk/comm/www/html/index.html Modified: trunk/comm/www/html/index.html =================================================================== --- trunk/comm/www/html/index.html 2006-03-04 02:09:29 UTC (rev 3) +++ trunk/comm/www/html/index.html 2006-03-04 02:16:48 UTC (rev 4) @@ -59,7 +59,7 @@ <ul> <li><strong>XUL UI:</strong> This is a complete, <i>(soon-to-be cross-platform)</i> desktop application written entirely in <a href="http://xulplanet.com/">XUL</a> that simplifies the work involved in creating classes, <a href="http://en.wikipedia.org/wiki/Test_case">test cases</a>, <a href="http://en.wikipedia.org/wiki/Test_suite">test suites</a>, and <a href="http://en.wikipedia.org/wiki/Mock_object">mock objects</a>. The XUL UI includes everything found in the <a href="#getStarted">framework</a> package. <i>(Mac users beware - the installer provided will only work on windows. We are <strong>really</strong> hoping to get someone on a Mac to help us with the Mac deployment path - if you might be that someone, please <a href="http://lists.sourceforge.net/lists/listinfo/asunit-users">post to the list</a>.</i></li> <li><strong>MXP:</strong> This is a self-extracting Macromedia extension that will install AsUnit directly into Flash MX 2004 and/or Flash 8 Authoring. This extension requres the <a href="http://www.macromedia.com/exchange/em_download/">Macromedia Extension Manager</a>.</li> - <li><a href="files/releases/SwfUi-20060302.swf" alt="Right-Click and choose 'save target' to download the Ui"><strong>SWF UI:</strong></a> This is a simple SWF file that can be run from anywhere on your system <i>(including the desktop or the browser)</i> to present test results from an ActionScript 2.0 application that has implemented the ActionScript 2.0 AsUnit <a href="#getStarted">framework</a>.</li> + <li><a href="files/releases/SwfUi-20060302.swf" alt="Right-Click and choose 'save target' to download the Ui"><strong>SWF UI:</strong></a> This is a simple SWF file that can be run from anywhere on your system <i>(including the desktop or the browser)</i> to present test results from an ActionScript 2.0 application that has implemented the ActionScript 2.0 AsUnit <a href="#getStarted">framework</a>. <i>(You can right-click and save this link to your desktop if you want to run the UI locally)</i></li> </ul> </p> </td> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <luk...@us...> - 2006-03-04 02:09:37
|
Revision: 3 Author: lukebayes Date: 2006-03-03 18:09:29 -0800 (Fri, 03 Mar 2006) ViewCVS: http://svn.sourceforge.net/asunit/?rev=3&view=rev Log Message: ----------- Cleaned up page layout Added svn content for new sourceforge svn repository Modified Paths: -------------- trunk/comm/www/html/css/AsUnit.css trunk/comm/www/html/index.html Modified: trunk/comm/www/html/css/AsUnit.css =================================================================== --- trunk/comm/www/html/css/AsUnit.css 2006-03-04 00:33:13 UTC (rev 2) +++ trunk/comm/www/html/css/AsUnit.css 2006-03-04 02:09:29 UTC (rev 3) @@ -70,6 +70,7 @@ .question { padding:10px 0px 10px 0px; + text-align:left; vertical-align:top; width:300px; font-size:28px; Modified: trunk/comm/www/html/index.html =================================================================== --- trunk/comm/www/html/index.html 2006-03-04 00:33:13 UTC (rev 2) +++ trunk/comm/www/html/index.html 2006-03-04 02:09:29 UTC (rev 3) @@ -88,8 +88,13 @@ <!-- Get Started --> <div id="getStarted" class="success-bar"></div> <div class="section"> - <div class="question answer">Get Started</div> - <div id="section-description"><p>Please read each of the following items as you may want to download more than one depending on your system configuration and project needs.</p> + <table> + <tr> + <td class="question">Get Started</td> + <td class="answer"><p>Please read each of the following items as you may want to download more than one depending on your system configuration and project needs.</p> + </td> + </tr> + </table> </div> <center> <table id="badges"> @@ -128,22 +133,40 @@ <!-- Get Started --> <div id="getInvolved" class="success-bar"></div> <div class="section"> - <div class="section-header question answer">Get Involved<!--<img class="badgeLabel" src="img/GetInvolvedText.gif" alt="Get Involved" /><br />--></div> <div id="section-description"> - <p>AsUnit was first released in March of 2004 by <a href="http://www.lukebayes.com">Luke Bayes</a> and <a href="http://www.alimills.com">Ali Mills</a> of <a href="http://www.patternpark.com">Pattern Park</a>. Since then, many people have contributed to the project and you can be one of them.</p> - <p>One of the simplest and most helpful ways you can get involved is by <a href="http://lists.sourceforge.net/lists/listinfo/asunit-users">joining our mailing list</a> and asking questions about things that seem unclear. Your questions help us figure out what to focus on next.</p> - <p>If you're interested in contributing some real time to the project, please check out the to-do lists and writeboards at our <a href="http://patternpark.projectpath.com">basecamp</a> site.</p> + <table> + <tr> + <td class="question">Get Involved</td> + <td class="answer"> + <p>AsUnit was first released in March of 2004 by <a href="http://www.lukebayes.com">Luke Bayes</a> and <a href="http://www.alimills.com">Ali Mills</a> of <a href="http://www.patternpark.com">Pattern Park</a>. Since then, many people have contributed to the project and you can be one of them.</p> + <p>One of the simplest and most helpful ways you can get involved is by <a href="http://lists.sourceforge.net/lists/listinfo/asunit-users">joining our mailing list</a> and asking questions about things that seem unclear. Your questions help us figure out what to focus on next.</p> + <p>If you're interested in contributing some real time to the project, please check out the to-do lists and writeboards at our <a href="http://patternpark.projectpath.com/projects/333541/todos">basecamp</a> site.</p> <p>Username: anonymous<br /> Password: anonymous</p> </p> - <p>We would like to give the following contributors special recognition for contributing more <a href="http://www.toontracker.com/huck/yogi.htm">than the average bear</a>:</p> - - <center> - <table> + </td> + </tr> <tr> - <td class="question"></td> - <td class="answer"> + <td class="question">Get More Involved</td> + <td class="answer"><p>If you are interested in becoming a more serious contributor, please feel free to start <a href="http://svn.sourceforge.net/viewcvs.cgi/asunit/">browsing the Subversion repository</a></p> + <p>If you're going to pull down the source code, be aware that it's pretty large. You would probably do well to grab only the module or folders that interest you.</p> <ul> + <li><strong><a href="http://svn.sourceforge.net/viewcvs.cgi/asunit/trunk/comm/">comm</a>:</strong> Communications sources are in here. This web site, our <a href="http://svn.sourceforge.net/viewcvs.cgi/*checkout*/asunit/trunk/comm/marketing/trailer/fla/AsUnit-TechnicalMerit-Trailer.swf">trailer for being Flashforward film festival finalists</a>, T-shirt art, logos, etc... <i>We built this web page at 2:00am the night before we presented at Flashforward... These skinny green lines look great on firefox (about 3px) but in IE, they're huge. If you know why - please modify the page and/or stylesheet so we can make them consistent. Thanks...</i></li> + <li><strong><a href="http://svn.sourceforge.net/viewcvs.cgi/asunit/trunk/flashui">flashui</a>:</strong> The files required to build the MXP file for the Flash IDE extension are in here. <i>These files are pretty stale at this point and probably won't build easily without some human intervention. It would be nice if someone could write a shell script that copies requisite framework sources into the MXI's expected directories, builds the MXP and then removes the copied sources?</i></li> + <li><strong><a href="http://svn.sourceforge.net/viewcvs.cgi/asunit/trunk/framework">framework</a>:</strong> This module should house the absolute minimal files for getting AsUnit to work manually across platforms. This is the tiny foundation upon which all that is AsUnit is built.</li> + <li><strong><a href="http://svn.sourceforge.net/viewcvs.cgi/asunit/trunk/installers">installers</a>:</strong> Right now, there is only a win installer. <i>Hopefully some kind person will create some mac and *nix packages?</i></li> + <li><strong><a href="http://svn.sourceforge.net/viewcvs.cgi/asunit/trunk/swfui">swfui</a>:</strong> The source files required for the SWF-based AsUnit Ui that has been so popular with the AS 2.0 crowd.</li> + <li><strong><a href="http://svn.sourceforge.net/viewcvs.cgi/asunit/trunk/xului">xului</a>:</strong> The source and build files associated with the xului. <i>The files required to build the existing XUL UI installer are currently hiding in the xului/exploration package. We still need to clean these up and resolve some issues before publishing out to the actual installers module.</i></li> + </ul> + <p>Once you get the appropriate sources down to your disk, please make sure you're up to date with the head revision before you begin making modifications. You can then easily make the changes you want, and when you're done - create a patch file directly from subversion. You can then easily send us your patch file in order to simplify our integration process. If you find yourself sending us patches more than once or twice, we will likely promote you to developer on the project and just get you write access to SVN. </p> + <p><strong>Any contributions will be greatly appreciated!</strong></p> + + </td> + </tr> + <tr> + <td class="question">Contributors</td> + <td class="answer"><p>We would like to give the following contributors special recognition for their efforts:</p> + <ul> <li><a href="http://www.flashant.org/">Aral</a> <a href="http://www.osflash.org">Balkan</a></li> <li><a href="http://cvs.caleb.org/viewcvs.py/caleb/portfolio/docs/resume.html?rev=1.2">Caleb Haye</a></li> <li><a href="http://www.danieldura.com/">Daniel Dura</a></li> @@ -153,28 +176,22 @@ <li><a href="http://www.robertpenner.com/">Robert Penner</a></li> <li><a href="http://www.imagerator.com">Tibor Claassen</a></li> </ul> - <p>Regardless of whether you are just a casual user, or are interested in becoming the next super-star contributor, you should definitely <a href="http://lists.sourceforge.net/lists/listinfo/asunit-users">join our mailing list</a>. It is relatively low-traffic (1 or 2 emails per week) and is the central source for all of our communication.</p> - <p>If you are interested in contributing in some other capacity (we have many needs), please <a href="http://lists.sourceforge.net/lists/listinfo/asunit-users">send an email to the list</a> as someone may be working on the same thing right now... - </p> + </td> </tr> </table> - </center> - </div> </div> <!-- Get Started --> <div class="success-bar"></div> <div id="learnMore" class="section"> - <div class="section-header question answer">Learn More</div> - <div id="section-description"><p> - Check out the following resources to learn more about AsUnit in particular and <a href="http://en.wikipedia.org/wiki/Unit_test">unit testing</a> in general.</p> - <table> <tr> - <td class="question"> + <td class="question">Learn More </td> <td class="answer"> +<p>Check out the following resources to learn more about AsUnit in particular and <a href="http://en.wikipedia.org/wiki/Unit_test">unit testing</a> in general.</p> <ul> + <li><a href="http://svn.sourceforge.net/viewcvs.cgi/*checkout*/asunit/trunk/comm/marketing/trailer/fla/AsUnit-TechnicalMerit-Trailer.swf">The trailer that was played at the Flashforward film festival</a> Thanks to all of you - AsUnit was a finalist in the Technical Merit category!</li> <li><a href="http://www.v-i-a.net/blog/mt-search.cgi?IncludeBlogs=1&search=asunit"><strong>Unit Testing en ActionScript 1-4</strong> <i>(French)</i></a><i> by <a href="http://www.v-i-a.net/">Eric Priou</a></i></li> <li><a href="http://flashant.org/index.php?p=375&more=1&c=1"><strong>Unit Testing with FAMES</strong> <i>(and AsUnit)</i></a> <i>by <a href="http://flashant.org/">Aral Balkan</a></i></li> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |