You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by jb...@apache.org on 2010/06/25 21:43:41 UTC

svn commit: r958095 - in /commons/sandbox/gsoc/2010/scxml-js/branches/core-module.SCXML-137: build.js test/conditional_transition/scripts/unitTest.js test/kitchen_sink/scripts/unitTest.js test/kitchen_sink/scripts/unitTest_executableContent.js

Author: jbeard
Date: Fri Jun 25 19:43:40 2010
New Revision: 958095

URL: http://svn.apache.org/viewvc?rev=958095&view=rev
Log:
Intermediate commit. Currently overhauling unit test system to no longer use global variable reference to statechart constructor, but instead allow statechart constructor to be passed in when registering the test (dependency injection). Works for runUnitTestsWithRhino task, but definitely broken for most other tasks.

Modified:
    commons/sandbox/gsoc/2010/scxml-js/branches/core-module.SCXML-137/build.js
    commons/sandbox/gsoc/2010/scxml-js/branches/core-module.SCXML-137/test/conditional_transition/scripts/unitTest.js
    commons/sandbox/gsoc/2010/scxml-js/branches/core-module.SCXML-137/test/kitchen_sink/scripts/unitTest.js
    commons/sandbox/gsoc/2010/scxml-js/branches/core-module.SCXML-137/test/kitchen_sink/scripts/unitTest_executableContent.js

Modified: commons/sandbox/gsoc/2010/scxml-js/branches/core-module.SCXML-137/build.js
URL: http://svn.apache.org/viewvc/commons/sandbox/gsoc/2010/scxml-js/branches/core-module.SCXML-137/build.js?rev=958095&r1=958094&r2=958095&view=diff
==============================================================================
--- commons/sandbox/gsoc/2010/scxml-js/branches/core-module.SCXML-137/build.js (original)
+++ commons/sandbox/gsoc/2010/scxml-js/branches/core-module.SCXML-137/build.js Fri Jun 25 19:43:40 2010
@@ -56,8 +56,8 @@ require.def("build",
 			//enums
 			//we keep backward links of these
 			var backends = {
-				"switch" : true,
-				"table" : true,
+				//"switch" : true,
+				//"table" : true,
 				"state" : true
 			}
 
@@ -73,11 +73,9 @@ require.def("build",
 
 			//paths to all of the SCXML files we want to compile
 			var scxmlTests = {
-/*
 				KitchenSink :"test/kitchen_sink/KitchenSink.xml",
 				KitchenSink_performance :"test/kitchen_sink/KitchenSink_performance.xml",
 				KitchenSink_executableContent :"test/kitchen_sink/KitchenSink_executableContent.xml",
-*/
 				ConditionalTransition :"test/conditional_transition/TestConditionalTransition.xml",
 				ConditionalTransition_executableContent :"test/conditional_transition/TestConditionalTransition_executableContent.xml"
 			}
@@ -99,6 +97,7 @@ require.def("build",
 
 			var pathToPreprocessScript = "src/xslt/util/preprocess_import.xsl"
 
+			//TODO: fix performanceTestScripts to requirejs, as is now done with unitTestScripts
 			var performanceTestScripts = [ 
 				{ 
 					path : "test/kitchen_sink/scripts/performanceTest.js",
@@ -108,25 +107,10 @@ require.def("build",
 
 
 			var unitTestScripts = [
-/*
-				{ 
-					path : "test/kitchen_sink/scripts/unitTest.js",
-					scxmlTest : scxmlTests.KitchenSink		//back-link
-				},
-				{ 
-					path : "test/kitchen_sink/scripts/unitTest_executableContent.js",
-					scxmlTest : scxmlTests.KitchenSink_executableContent		//back-link
-				},
-*/
-				{ 
-					path : "test/conditional_transition/scripts/unitTest.js",
-					scxmlTest : scxmlTests.ConditionalTransition 		//back-link
-				},
-				{ 
-					path : "test/conditional_transition/scripts/unitTest.js",
-					scxmlTest : scxmlTests.ConditionalTransition_executableContent 		//back-link
-				}
-				
+					"test/kitchen_sink/scripts/unitTest",
+					"test/kitchen_sink/scripts/unitTest_executableContent",
+					"test/conditional_transition/scripts/unitTest",
+					"test/conditional_transition/scripts/unitTest",
 			]
 
 			//gets populated at run-time
@@ -714,23 +698,29 @@ require.def("build",
 						//unit tests have a doh dependency, so load doh with dojo.require
 						dojo.require("doh.runner");	
 
-						unitTestScripts.forEach(function(unitTestScript){
+						require(unitTestScripts,
+							function(){
+								var unitTestModules = util.toJsArray(arguments);
 
-							scriptsGenerated.	
-								filter(function(s){return scxmlTests[s.scxmlTest] == unitTestScript.scxmlTest}).
-								filter(function(s){return !s.ie}).
-								forEach(function(generatedScript){
+								unitTestModules.forEach(function(unitTestModule){
 
-								load(generatedScript.path);
+									scriptsGenerated.	
+										filter(function(s){return scxmlTests[s.scxmlTest] == unitTestModule.scxmlTest}).
+										filter(function(s){return !s.ie}).
+										forEach(function(generatedScript){
 
-								load(unitTestScript.path);
+											load(generatedScript.path);
 
-								delete StatechartExecutionContext;
-							});
+											unitTestModule.register(StatechartExecutionContext);
 
-						});
+											delete StatechartExecutionContext;
+									});
 
-						doh.run();
+								});
+
+								doh.run();
+
+							});
 					});
 
 

Modified: commons/sandbox/gsoc/2010/scxml-js/branches/core-module.SCXML-137/test/conditional_transition/scripts/unitTest.js
URL: http://svn.apache.org/viewvc/commons/sandbox/gsoc/2010/scxml-js/branches/core-module.SCXML-137/test/conditional_transition/scripts/unitTest.js?rev=958095&r1=958094&r2=958095&view=diff
==============================================================================
--- commons/sandbox/gsoc/2010/scxml-js/branches/core-module.SCXML-137/test/conditional_transition/scripts/unitTest.js (original)
+++ commons/sandbox/gsoc/2010/scxml-js/branches/core-module.SCXML-137/test/conditional_transition/scripts/unitTest.js Fri Jun 25 19:43:40 2010
@@ -16,69 +16,74 @@
  */
 
 
-dojo.require("doh.runner");
+require.def( "test/conditional_transition/scripts/unitTest",
+{
 
-//we assume statechart is imported here. should probably do registermodulepath instead
+	scxmlTest : "test/conditional_transition/TestConditionalTransition.xml",
 
-(function(){
-	var sc;
-	doh.register("testConditionalTransitionSuite",[
-			{
-				name:"testAll",
-				//timeout:5000,
-				setUp:function(){
-					sc = new StatechartExecutionContext()
-					sc.initialize();
-				},
-				runTest:function(){
-					var $ = function(conf){return conf.map(function(s){return s.toString()})};
-
-					var conf0 = sc.getCurrentConfiguration();
-					console.log($(conf0));
-					doh.assertTrue(setwiseEqual(conf0,[sc._states.b]));
-
-					//should enter into c and take first default transition to d1
-					console.info("sending event t1")
-					sc.t1()
-					var conf1 = sc.getCurrentConfiguration();
-					console.log($(conf1));
-					doh.assertTrue(setwiseEqual(conf1,[sc._states.d1]));
-
-
-					console.info("sending event t2")
-					sc.t2()
-					var conf2 = sc.getCurrentConfiguration();
-					console.log($(conf2));
-					doh.assertTrue(setwiseEqual(conf2,[sc._states.e1]));
-
-					console.info("sending event t3")
-					sc.t3()
-					var conf3 = sc.getCurrentConfiguration();
-					console.log($(conf3));
-					doh.assertTrue(setwiseEqual(conf3,[sc._states.f2]));
-
-					console.info("sending event t4")
-					sc.t4()
-					var conf4 = sc.getCurrentConfiguration();
-					console.log($(conf4));
-					doh.assertTrue(setwiseEqual(conf4,[sc._states.h]));
-
-					console.info("sending event t5")
-					sc.t5()
-					var conf5 = sc.getCurrentConfiguration();
-					console.log($(conf5));
-					doh.assertTrue(setwiseEqual(conf5,[sc._states.i]));
-
-					console.info("sending event t5")
-					sc.t5()
-					var conf6 = sc.getCurrentConfiguration();
-					console.log($(conf6));
-					doh.assertTrue(setwiseEqual(conf6,[sc._states.last]));
-				},
-				tearDown:function(){
-					 sc.destroy();
+	register:function(scConstructor){
+
+		//TODO: can load this using RequireJS, so we don't need to use the dojo module system?
+		dojo.require("doh.runner");
+		var sc;
+		doh.register("testConditionalTransitionSuite",[
+				{
+					name:"testAll",
+					//timeout:5000,
+					setUp:function(){
+						sc = new scConstructor()
+						sc.initialize();
+					},
+					runTest:function(){
+						var $ = function(conf){return conf.map(function(s){return s.toString()})};
+
+						var conf0 = sc.getCurrentConfiguration();
+						console.log($(conf0));
+						doh.assertTrue(setwiseEqual(conf0,[sc._states.b]));
+
+						//should enter into c and take first default transition to d1
+						console.info("sending event t1")
+						sc.t1()
+						var conf1 = sc.getCurrentConfiguration();
+						console.log($(conf1));
+						doh.assertTrue(setwiseEqual(conf1,[sc._states.d1]));
+
+
+						console.info("sending event t2")
+						sc.t2()
+						var conf2 = sc.getCurrentConfiguration();
+						console.log($(conf2));
+						doh.assertTrue(setwiseEqual(conf2,[sc._states.e1]));
+
+						console.info("sending event t3")
+						sc.t3()
+						var conf3 = sc.getCurrentConfiguration();
+						console.log($(conf3));
+						doh.assertTrue(setwiseEqual(conf3,[sc._states.f2]));
+
+						console.info("sending event t4")
+						sc.t4()
+						var conf4 = sc.getCurrentConfiguration();
+						console.log($(conf4));
+						doh.assertTrue(setwiseEqual(conf4,[sc._states.h]));
+
+						console.info("sending event t5")
+						sc.t5()
+						var conf5 = sc.getCurrentConfiguration();
+						console.log($(conf5));
+						doh.assertTrue(setwiseEqual(conf5,[sc._states.i]));
+
+						console.info("sending event t5")
+						sc.t5()
+						var conf6 = sc.getCurrentConfiguration();
+						console.log($(conf6));
+						doh.assertTrue(setwiseEqual(conf6,[sc._states.last]));
+					},
+					tearDown:function(){
+						 sc.destroy();
+					}
 				}
-			}
-	]);
-})()
+		]);
+	}
+})
 

Modified: commons/sandbox/gsoc/2010/scxml-js/branches/core-module.SCXML-137/test/kitchen_sink/scripts/unitTest.js
URL: http://svn.apache.org/viewvc/commons/sandbox/gsoc/2010/scxml-js/branches/core-module.SCXML-137/test/kitchen_sink/scripts/unitTest.js?rev=958095&r1=958094&r2=958095&view=diff
==============================================================================
--- commons/sandbox/gsoc/2010/scxml-js/branches/core-module.SCXML-137/test/kitchen_sink/scripts/unitTest.js (original)
+++ commons/sandbox/gsoc/2010/scxml-js/branches/core-module.SCXML-137/test/kitchen_sink/scripts/unitTest.js Fri Jun 25 19:43:40 2010
@@ -15,92 +15,95 @@
  * limitations under the License.
  */
 
-
-dojo.require("doh.runner");
-
-//we assume statechart is imported here. should probably do registermodulepath instead
-
-(function(){
-	var sc;
-	doh.register("testKitchenSinkSuite",[
-			{
-				name:"testAll",
-				//timeout:5000,
-				setUp:function(){
-					sc = new StatechartExecutionContext()
-					sc.initialize();
-				},
-				runTest:function(){
-					var $ = function(conf){return conf.map(function(s){return s.toString()})};
-
-					var conf0 = sc.getCurrentConfiguration();
-					console.log($(conf0));
-					doh.assertTrue(setwiseEqual(conf0,[sc._states.Basic1]));
-
-					console.info("sending event t1")
-					sc.t1()
-					var conf1 = sc.getCurrentConfiguration();
-					console.log($(conf1));
-					doh.assertTrue(setwiseEqual(conf1,[sc._states.Basic2]));
-
-
-					console.info("sending event t2_7")
-					sc.t2_7()
-					var conf2 = sc.getCurrentConfiguration();
-					console.log($(conf2));
-					doh.assertTrue(setwiseEqual(conf2,[sc._states.Basic4,sc._states.Basic6]));
-
-
-					console.info("sending event t3")
-					sc.t3()
-					var conf3 = sc.getCurrentConfiguration();
-					console.log($(conf3));
-					doh.assertTrue(setwiseEqual(conf3,[sc._states.Basic5,sc._states.Basic7]));
-
-					console.info("sending event t4_9")
-					sc.t4_9()
-					var conf4 = sc.getCurrentConfiguration();
-					console.log($(conf4));
-					doh.assertTrue(setwiseEqual(conf4,[sc._states.Basic2]));
-
-					console.info("sending event t5")
-					sc.t5()
-					var conf5 = sc.getCurrentConfiguration();
-					console.log($(conf5));
-					doh.assertTrue(setwiseEqual(conf5,[sc._states.Basic1]));
-
-					console.info("sending event t2_7")
-					sc.t2_7()
-					var conf6 = sc.getCurrentConfiguration();
-					console.log($(conf6));
-					doh.assertTrue(setwiseEqual(conf6,[sc._states.Basic5,sc._states.Basic7]));
-
-					console.info("sending event t8")
-					sc.t8()
-					var conf7 = sc.getCurrentConfiguration();
-					console.log($(conf7));
-					doh.assertTrue(setwiseEqual(conf7,[sc._states.Basic4,sc._states.Basic7]));
-
-					console.info("sending event t4_9")
-					sc.t4_9()
-					var conf8 = sc.getCurrentConfiguration();
-					console.log($(conf8));
-					doh.assertTrue(setwiseEqual(conf8,[sc._states.Basic3]));
-
-					//TODO: hook this up with doh.Deferred...
-					/*
-					var deferred = new doh.Deferred();
-					window.setTimeout(function(){
-						var conf9 = sc.getCurrentConfiguration();
-						console.log($(conf9));
-						deferred.callback(setwiseEqual(conf9,[sc._states.FinalState]));
-					},1500);
-					return deferred;
-					*/
-				},
-				tearDown:function(){
-					 sc.destroy();
+require.def( "test/kitchen_sink/scripts/unitTest",
+{
+	scxmlTest:"test/kitchen_sink/KitchenSink.xml",
+
+	register : function(scConstructor){
+
+		//TODO: can load this using RequireJS, so we don't need to use the dojo module system?
+		dojo.require("doh.runner");
+		var sc;
+		doh.register("testKitchenSinkSuite",[
+				{
+					name:"testAll",
+					//timeout:5000,
+					setUp:function(){
+						sc = new scConstructor()
+						sc.initialize();
+					},
+					runTest:function(){
+						var $ = function(conf){return conf.map(function(s){return s.toString()})};
+
+						var conf0 = sc.getCurrentConfiguration();
+						console.log($(conf0));
+						doh.assertTrue(setwiseEqual(conf0,[sc._states.Basic1]));
+
+						console.info("sending event t1")
+						sc.t1()
+						var conf1 = sc.getCurrentConfiguration();
+						console.log($(conf1));
+						doh.assertTrue(setwiseEqual(conf1,[sc._states.Basic2]));
+
+
+						console.info("sending event t2_7")
+						sc.t2_7()
+						var conf2 = sc.getCurrentConfiguration();
+						console.log($(conf2));
+						doh.assertTrue(setwiseEqual(conf2,[sc._states.Basic4,sc._states.Basic6]));
+
+
+						console.info("sending event t3")
+						sc.t3()
+						var conf3 = sc.getCurrentConfiguration();
+						console.log($(conf3));
+						doh.assertTrue(setwiseEqual(conf3,[sc._states.Basic5,sc._states.Basic7]));
+
+						console.info("sending event t4_9")
+						sc.t4_9()
+						var conf4 = sc.getCurrentConfiguration();
+						console.log($(conf4));
+						doh.assertTrue(setwiseEqual(conf4,[sc._states.Basic2]));
+
+						console.info("sending event t5")
+						sc.t5()
+						var conf5 = sc.getCurrentConfiguration();
+						console.log($(conf5));
+						doh.assertTrue(setwiseEqual(conf5,[sc._states.Basic1]));
+
+						console.info("sending event t2_7")
+						sc.t2_7()
+						var conf6 = sc.getCurrentConfiguration();
+						console.log($(conf6));
+						doh.assertTrue(setwiseEqual(conf6,[sc._states.Basic5,sc._states.Basic7]));
+
+						console.info("sending event t8")
+						sc.t8()
+						var conf7 = sc.getCurrentConfiguration();
+						console.log($(conf7));
+						doh.assertTrue(setwiseEqual(conf7,[sc._states.Basic4,sc._states.Basic7]));
+
+						console.info("sending event t4_9")
+						sc.t4_9()
+						var conf8 = sc.getCurrentConfiguration();
+						console.log($(conf8));
+						doh.assertTrue(setwiseEqual(conf8,[sc._states.Basic3]));
+
+						//TODO: hook this up with doh.Deferred...
+						/*
+						var deferred = new doh.Deferred();
+						window.setTimeout(function(){
+							var conf9 = sc.getCurrentConfiguration();
+							console.log($(conf9));
+							deferred.callback(setwiseEqual(conf9,[sc._states.FinalState]));
+						},1500);
+						return deferred;
+						*/
+					},
+					tearDown:function(){
+						 sc.destroy();
+					}
 				}
-			}
-	]);
-})()
+		]);
+	}
+});

Modified: commons/sandbox/gsoc/2010/scxml-js/branches/core-module.SCXML-137/test/kitchen_sink/scripts/unitTest_executableContent.js
URL: http://svn.apache.org/viewvc/commons/sandbox/gsoc/2010/scxml-js/branches/core-module.SCXML-137/test/kitchen_sink/scripts/unitTest_executableContent.js?rev=958095&r1=958094&r2=958095&view=diff
==============================================================================
--- commons/sandbox/gsoc/2010/scxml-js/branches/core-module.SCXML-137/test/kitchen_sink/scripts/unitTest_executableContent.js (original)
+++ commons/sandbox/gsoc/2010/scxml-js/branches/core-module.SCXML-137/test/kitchen_sink/scripts/unitTest_executableContent.js Fri Jun 25 19:43:40 2010
@@ -15,111 +15,115 @@
  * limitations under the License.
  */
 
-
-dojo.require("doh.runner");
-
-//we assume statechart is imported here. should probably do registermodulepath instead
-
-(function(){
-	var sc;
-	doh.register("testKitchenSinkSuite",[
-			{
-				name:"testAll",
-				//timeout:5000,
-				setUp:function(){
-					sc = new StatechartExecutionContext()
-					sc.initialize();
-				},
-				runTest:function(){
-					var conf0 = sc.getCurrentConfiguration();
-					console.log(conf0);
-					doh.assertTrue(setwiseEqual(conf0,[sc._states.Basic1]));
-
-					doh.assertEqual(sc.x,0);
-					doh.assertEqual(sc.y,0);
-
-					console.info("sending event t1")
-					sc.t1()
-					var conf1 = sc.getCurrentConfiguration();
-					console.log(conf1);
-					doh.assertTrue(setwiseEqual(conf1,[sc._states.Basic2]));
-
-					doh.assertEqual(sc.x,1);
-					doh.assertEqual(sc.y,0);
-
-
-					console.info("sending event t2_7")
-					sc.t2_7()
-					var conf2 = sc.getCurrentConfiguration();
-					console.log(conf2);
-					doh.assertTrue(setwiseEqual(conf2,[sc._states.Basic4,sc._states.Basic6]));
-
-					doh.assertEqual(sc.x,9);
-					doh.assertEqual(sc.y,0);
-
-					console.info("sending event t3")
-					sc.t3()
-					var conf3 = sc.getCurrentConfiguration();
-					console.log(conf3);
-					doh.assertTrue(setwiseEqual(conf3,[sc._states.Basic5,sc._states.Basic7]));
-
-					doh.assertEqual(sc.x,9);
-					doh.assertEqual(sc.y,1);
-
-					console.info("sending event t4_9")
-					sc.t4_9()
-					var conf4 = sc.getCurrentConfiguration();
-					console.log(conf4);
-					doh.assertTrue(setwiseEqual(conf4,[sc._states.Basic2]));
-
-					doh.assertEqual(sc.x,3);
-					doh.assertEqual(sc.y,3);
-
-					console.info("sending event t5")
-					sc.t5()
-					var conf5 = sc.getCurrentConfiguration();
-					console.log(conf5);
-					doh.assertTrue(setwiseEqual(conf5,[sc._states.Basic1]));
-
-					console.info("sending event t2_7")
-					sc.t2_7()
-					var conf6 = sc.getCurrentConfiguration();
-					console.log(conf6);
-					doh.assertTrue(setwiseEqual(conf6,[sc._states.Basic5,sc._states.Basic7]));
-
-					doh.assertEqual(sc.x,81);
-					doh.assertEqual(sc.y,3);
-
-					console.info("sending event t8")
-					sc.t8()
-					var conf7 = sc.getCurrentConfiguration();
-					console.log(conf7);
-					doh.assertTrue(setwiseEqual(conf7,[sc._states.Basic4,sc._states.Basic7]));
-
-					console.info("sending event t4_9")
-					sc.t4_9()
-					var conf8 = sc.getCurrentConfiguration();
-					console.log(conf8);
-					doh.assertTrue(setwiseEqual(conf8,[sc._states.Basic3]));
-
-					doh.assertEqual(sc.x,9);
-					doh.assertEqual(sc.y,9);
-
-					//TODO: hook this up with doh.Deferred...
-					/*
-					var deferred = new doh.Deferred();
-					window.setTimeout(function(){
-						var conf9 = sc.getCurrentConfiguration();
-						console.log(conf9);
-						deferred.callback(setwiseEqual(conf9,[sc._states.FinalState]));
-					},1500);
-					return deferred;
-					*/
-				},
-				tearDown:function(){
-					 sc.destroy();
+require.def( "test/kitchen_sink/scripts/unitTest_executableContent",
+{
+	scxmlTest:"test/kitchen_sink/KitchenSink_executableContent.xml",
+
+	register:function(scConstructor){
+
+		//TODO: can load this using RequireJS, so we don't need to use the dojo module system?
+		dojo.require("doh.runner");
+
+		var sc;
+		doh.register("testKitchenSinkSuite",[
+				{
+					name:"testAll",
+					//timeout:5000,
+					setUp:function(){
+						sc = new scConstructor()
+						sc.initialize();
+					},
+					runTest:function(){
+						var conf0 = sc.getCurrentConfiguration();
+						console.log(conf0);
+						doh.assertTrue(setwiseEqual(conf0,[sc._states.Basic1]));
+
+						doh.assertEqual(sc.x,0);
+						doh.assertEqual(sc.y,0);
+
+						console.info("sending event t1")
+						sc.t1()
+						var conf1 = sc.getCurrentConfiguration();
+						console.log(conf1);
+						doh.assertTrue(setwiseEqual(conf1,[sc._states.Basic2]));
+
+						doh.assertEqual(sc.x,1);
+						doh.assertEqual(sc.y,0);
+
+
+						console.info("sending event t2_7")
+						sc.t2_7()
+						var conf2 = sc.getCurrentConfiguration();
+						console.log(conf2);
+						doh.assertTrue(setwiseEqual(conf2,[sc._states.Basic4,sc._states.Basic6]));
+
+						doh.assertEqual(sc.x,9);
+						doh.assertEqual(sc.y,0);
+
+						console.info("sending event t3")
+						sc.t3()
+						var conf3 = sc.getCurrentConfiguration();
+						console.log(conf3);
+						doh.assertTrue(setwiseEqual(conf3,[sc._states.Basic5,sc._states.Basic7]));
+
+						doh.assertEqual(sc.x,9);
+						doh.assertEqual(sc.y,1);
+
+						console.info("sending event t4_9")
+						sc.t4_9()
+						var conf4 = sc.getCurrentConfiguration();
+						console.log(conf4);
+						doh.assertTrue(setwiseEqual(conf4,[sc._states.Basic2]));
+
+						doh.assertEqual(sc.x,3);
+						doh.assertEqual(sc.y,3);
+
+						console.info("sending event t5")
+						sc.t5()
+						var conf5 = sc.getCurrentConfiguration();
+						console.log(conf5);
+						doh.assertTrue(setwiseEqual(conf5,[sc._states.Basic1]));
+
+						console.info("sending event t2_7")
+						sc.t2_7()
+						var conf6 = sc.getCurrentConfiguration();
+						console.log(conf6);
+						doh.assertTrue(setwiseEqual(conf6,[sc._states.Basic5,sc._states.Basic7]));
+
+						doh.assertEqual(sc.x,81);
+						doh.assertEqual(sc.y,3);
+
+						console.info("sending event t8")
+						sc.t8()
+						var conf7 = sc.getCurrentConfiguration();
+						console.log(conf7);
+						doh.assertTrue(setwiseEqual(conf7,[sc._states.Basic4,sc._states.Basic7]));
+
+						console.info("sending event t4_9")
+						sc.t4_9()
+						var conf8 = sc.getCurrentConfiguration();
+						console.log(conf8);
+						doh.assertTrue(setwiseEqual(conf8,[sc._states.Basic3]));
+
+						doh.assertEqual(sc.x,9);
+						doh.assertEqual(sc.y,9);
+
+						//TODO: hook this up with doh.Deferred...
+						/*
+						var deferred = new doh.Deferred();
+						window.setTimeout(function(){
+							var conf9 = sc.getCurrentConfiguration();
+							console.log(conf9);
+							deferred.callback(setwiseEqual(conf9,[sc._states.FinalState]));
+						},1500);
+						return deferred;
+						*/
+					},
+					tearDown:function(){
+						 sc.destroy();
+					}
 				}
-			}
-	]);
-})()
+		]);
+	}
+});