diff bindings/as3/ext/asunit/framework/AsynchronousTestCaseExample.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/AsynchronousTestCaseExample.as	Tue Sep 14 16:47:10 2010 +0000
@@ -0,0 +1,82 @@
+package asunit.framework {
+    import flash.events.*;
+    import flash.net.URLLoader;
+    import flash.net.URLRequest;
+    
+    /**
+     * This example is built on the following mock data:
+     * <books>
+     *         <book publisher="Addison-Wesley" name="Design Patterns" />
+     *         <book publisher="Addison-Wesley" name="The Pragmattic Programmer" />
+     *         <book publisher="Addison-Wesley" name="Test Driven Development" />
+     *         <book publisher="Addison-Wesley" name="Refactoring to Patterns" />
+     *         <book publisher="O'Reilly Media" name="The Cathedral & the Bazaar" />
+     *         <book publisher="O'Reilly Media" name="Unit Test Frameworks" />
+     *     </books>
+     * 
+     * This example was created to illustrate how one can build an synchronous
+     * TestCase - one that relies on remote data of some sort.
+     * This use case is now diminished by the creation of E4X and easily
+     * readable/editable XML data directly in source form.
+     * But asynchronous tests will probably need to be built at some point
+     * by somebody... If you're them, maybe you can use this as a template.
+     */
+
+    public class AsynchronousTestCaseExample extends AsynchronousTestCase {
+        private var source:String = "asunit/framework/MockData.xml";
+        private var dataSource:XML;
+        private var instance:Object;
+
+        // Override the run method and begin the request for remote data
+        public override function run():void {
+            var request:URLRequest = new URLRequest(source);
+            var loader:URLLoader = new URLLoader();
+            // configureListeners is a method on the AsynchronousTestCase
+            // and it will handle error states by failing loudly...
+            configureListeners(loader);
+            loader.load(request);
+            
+            // call super.run() to start network duration:
+            super.run();
+        }
+
+        protected override function setDataSource(event:Event):void {
+            // put a copy of the data into a member reference
+            if (event == null)
+            {
+                dataSource = null;
+            }
+            else
+            {
+                dataSource = XML(event.target.data).copy();
+            }
+        }
+        
+        protected override function setUp():void {
+            // create a new instance of the class under test
+            instance = new Object();
+            if (dataSource != null)    // i.e. there was no IOError or SecurityError
+            {
+                // copy the data into a member or method of the _instance
+                instance.data = dataSource.copy();
+            }
+        }
+        
+        protected override function tearDown():void {
+            // destroy the class under test instance
+            instance = null;
+        }
+        
+        public function testBookCount():void {
+            var data:XML = XML(instance.data);
+            var list:XMLList = data..book;
+            assertTrue("list.length() == " + list.length() + " (6?)", list.length() == 6);
+        }
+        
+        public function testOReillyBookCount():void {
+            var data:XML = XML(instance.data);
+            var list:XMLList = data..book.(@publisher == "O'Reilly Media");
+            assertTrue("list.length() == " + list.length() + " (2?)", list.length() == 2);            
+        }
+    }
+}
\ No newline at end of file