| 
					
				 | 
			
			
				@@ -1,56 +1,105 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.addPackage('SUnit', {}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.addClass('ResultAnnouncement', smalltalk.Object, ['result'], 'SUnit'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.addClass('BareTestContext', smalltalk.Object, ['testCase'], 'SUnit'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.BareTestContext.comment="BareTestContext governs running a particular test case.\x0a\x0aIt's main added value is execute: method which runs a block\x0aas a part of test case (restores context, nilling it afterwards,\x0acleaning/calling tearDown as appropriate for sync/async scenario)." 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-"_result", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+"_execute_", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.method({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-selector: "result", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-category: 'accessing', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+selector: "execute:", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+category: 'running', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+fn: function (aBlock){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+var self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+var $1,$3,$4,$2; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+var failed; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.send(self["@testCase"],"_context_",[self]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+$1=(function(){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+failed=true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+failed; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.send(aBlock,"_value",[]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+failed=false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return failed; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+$2=(function(){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.send(self["@testCase"],"_context_",[nil]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+$3=smalltalk.send(failed,"_and_",[(function(){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return smalltalk.send(self["@testCase"],"_isAsync",[]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+})]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+if(smalltalk.assert($3)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.send(self["@testCase"],"_finished",[]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+$4=smalltalk.send(self["@testCase"],"_isAsync",[]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+if(! smalltalk.assert($4)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return smalltalk.send(self["@testCase"],"_tearDown",[]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.send($1,"_ensure_",[$2]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return self}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+args: ["aBlock"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+source: "execute: aBlock\x0a\x09| failed |\x0a    testCase context: self.\x0a    [ failed := true. aBlock value. failed := false ] ensure: [\x0a        testCase context: nil.\x0a        (failed and: [testCase isAsync]) ifTrue: [ testCase finished ].\x0a        testCase isAsync ifFalse: [ testCase tearDown ]\x0a    ]\x0a", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+messageSends: ["context:", "ensure:", "ifTrue:", "finished", "and:", "isAsync", "ifFalse:", "tearDown", "value"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.BareTestContext); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+"_start", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.method({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+selector: "start", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+category: 'running', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 fn: function (){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 var self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-return self["@result"]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.send(self,"_execute_",[(function(){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.send(self["@testCase"],"_setUp",[]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return smalltalk.send(self["@testCase"],"_performTest",[]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+})]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return self}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 args: [], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-source: "result\x0a\x09^result", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-messageSends: [], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+source: "start\x0a\x09self execute: [ testCase setUp. testCase performTest ]", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+messageSends: ["execute:", "setUp", "performTest"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.ResultAnnouncement); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.BareTestContext); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-"_result_", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+"_testCase_", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.method({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-selector: "result:", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+selector: "testCase:", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 category: 'accessing', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-fn: function (aTestResult){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+fn: function (aTestCase){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 var self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-self["@result"]=aTestResult; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+self["@testCase"]=aTestCase; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 return self}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-args: ["aTestResult"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-source: "result: aTestResult\x0a\x09result := aTestResult", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+args: ["aTestCase"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+source: "testCase: aTestCase\x0a\x09testCase := aTestCase", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 messageSends: [], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.ResultAnnouncement); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.BareTestContext); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.addClass('RunningTestContext', smalltalk.Object, ['finished', 'testCase', 'result'], 'SUnit'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-"_exception_do_", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+"_testCase_", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.method({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-selector: "exception:do:", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-category: 'private', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-fn: function (anException,aBlock){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+selector: "testCase:", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+category: 'instance creation', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+fn: function (aTestCase){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 var self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.send(aBlock,"_value",[]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-return self}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-args: ["anException", "aBlock"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-source: "exception: anException do: aBlock\x0a\x09aBlock value\x0a", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-messageSends: ["value"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+var $2,$3,$1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+$2=smalltalk.send(self,"_new",[]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.send($2,"_testCase_",[aTestCase]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+$3=smalltalk.send($2,"_yourself",[]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+$1=$3; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return $1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+args: ["aTestCase"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+source: "testCase: aTestCase\x0a\x09^self new\x0a        testCase: aTestCase;\x0a        yourself", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+messageSends: ["testCase:", "new", "yourself"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.RunningTestContext); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.BareTestContext.klass); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.addClass('ReportingTestContext', smalltalk.BareTestContext, ['finished', 'result'], 'SUnit'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.ReportingTestContext.comment="ReportingTestContext adds TestResult reporting\x0ato BareTestContext.\x0aErrors are caught and save into TestResult,\x0aWhen test case is finished (which can be later for async tests),\x0aa callback block is executed; this is used by TestSuiteRunner.\x0a" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 "_execute_", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.method({ 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -62,17 +111,13 @@ var $1,$3,$2; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 $1=(function(){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 return smalltalk.send((function(){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 return smalltalk.send((function(){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-return smalltalk.send(self,"_executeWithCleanup_",[aBlock]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return smalltalk.send(self,"_execute_",[aBlock],smalltalk.BareTestContext); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }),"_on_do_",[(smalltalk.TestFailure || TestFailure),(function(ex){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-return smalltalk.send(self,"_exception_do_",[ex,(function(){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 return smalltalk.send(self["@result"],"_addFailure_",[self["@testCase"]]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 })]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-})]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }),"_on_do_",[(smalltalk.Error || Error),(function(ex){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-return smalltalk.send(self,"_exception_do_",[ex,(function(){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 return smalltalk.send(self["@result"],"_addError_",[self["@testCase"]]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 })]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-})]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 $2=(function(){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 $3=smalltalk.send(self["@testCase"],"_isAsync",[]); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -84,50 +129,11 @@ return smalltalk.send(self["@finished"],"_value",[]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.send($1,"_ensure_",[$2]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 return self}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 args: ["aBlock"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-source: "execute: aBlock\x0a    [[[ self executeWithCleanup: aBlock ]\x0a    on: TestFailure do: [:ex | self exception: ex do: [ result addFailure: testCase]]]\x0a    on: Error do: [:ex | self exception: ex do: [ result addError: testCase]]]\x0a    ensure: [ testCase isAsync ifFalse: [ result increaseRuns. finished value ]]", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-messageSends: ["ensure:", "ifFalse:", "increaseRuns", "value", "isAsync", "on:do:", "exception:do:", "addError:", "addFailure:", "executeWithCleanup:"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+source: "execute: aBlock\x0a    [[[ super execute: aBlock ]\x0a    on: TestFailure do: [:ex | result addFailure: testCase]]\x0a    on: Error do: [:ex | result addError: testCase]]\x0a    ensure: [ testCase isAsync ifFalse: [ result increaseRuns. finished value ]]", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+messageSends: ["ensure:", "ifFalse:", "increaseRuns", "value", "isAsync", "on:do:", "addError:", "addFailure:", "execute:"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 referencedClasses: ["Error", "TestFailure"] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.RunningTestContext); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-"_executeWithCleanup_", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.method({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-selector: "executeWithCleanup:", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-category: 'private', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-fn: function (aBlock){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-var self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-var $1,$3,$4,$2; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-var failed; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.send(self["@testCase"],"_context_",[self]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-$1=(function(){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-failed=true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-failed; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.send(aBlock,"_value",[]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-failed=false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-return failed; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-$2=(function(){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.send(self["@testCase"],"_context_",[nil]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-$3=smalltalk.send(failed,"_and_",[(function(){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-return smalltalk.send(self["@testCase"],"_isAsync",[]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-})]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-if(smalltalk.assert($3)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.send(self["@testCase"],"_finished",[]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-$4=smalltalk.send(self["@testCase"],"_isAsync",[]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-if(! smalltalk.assert($4)){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-return smalltalk.send(self["@testCase"],"_tearDown",[]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.send($1,"_ensure_",[$2]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-return self}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-args: ["aBlock"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-source: "executeWithCleanup: aBlock\x0a\x09| failed |\x0a    testCase context: self.\x0a    [ failed := true. aBlock value. failed := false ] ensure: [\x0a        testCase context: nil.\x0a        (failed and: [testCase isAsync]) ifTrue: [ testCase finished ].\x0a        testCase isAsync ifFalse: [ testCase tearDown ]\x0a    ]\x0a", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-messageSends: ["context:", "ensure:", "ifTrue:", "finished", "and:", "isAsync", "ifFalse:", "tearDown", "value"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-}), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.RunningTestContext); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.ReportingTestContext); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 "_finished_", 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -143,7 +149,7 @@ source: "finished: aBlock\x0a\x09finished := aBlock", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 messageSends: [], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.RunningTestContext); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.ReportingTestContext); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 "_result_", 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -159,42 +165,7 @@ source: "result: aTestResult\x0a\x09result := aTestResult", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 messageSends: [], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.RunningTestContext); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-"_start", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.method({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-selector: "start", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-category: 'running', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-fn: function (){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-var self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.send(self,"_execute_",[(function(){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.send(self["@testCase"],"_setUp",[]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-return smalltalk.send(self["@testCase"],"_performTest",[]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-})]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-return self}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-args: [], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-source: "start\x0a\x09self execute: [ testCase setUp. testCase performTest ]", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-messageSends: ["execute:", "setUp", "performTest"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-}), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.RunningTestContext); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-"_testCase_", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.method({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-selector: "testCase:", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-category: 'accessing', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-fn: function (aTestCase){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-var self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-self["@testCase"]=aTestCase; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-return self}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-args: ["aTestCase"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-source: "testCase: aTestCase\x0a\x09testCase := aTestCase", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-messageSends: [], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-}), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.RunningTestContext); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.ReportingTestContext); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.addMethod( 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -205,8 +176,7 @@ category: 'instance creation', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 fn: function (aTestCase,aTestResult,aBlock){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 var self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 var $2,$3,$1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-$2=smalltalk.send(self,"_new",[]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.send($2,"_testCase_",[aTestCase]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+$2=smalltalk.send(self,"_testCase_",[aTestCase],smalltalk.BareTestContext.klass); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.send($2,"_result_",[aTestResult]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.send($2,"_finished_",[aBlock]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 $3=smalltalk.send($2,"_yourself",[]); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -214,49 +184,46 @@ $1=$3; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 return $1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 args: ["aTestCase", "aTestResult", "aBlock"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-source: "testCase: aTestCase result: aTestResult finished: aBlock\x0a\x09^self new\x0a        testCase: aTestCase;\x0a        result: aTestResult;\x0a        finished: aBlock;\x0a        yourself", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-messageSends: ["testCase:", "new", "result:", "finished:", "yourself"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+source: "testCase: aTestCase result: aTestResult finished: aBlock\x0a\x09^(super testCase: aTestCase)\x0a        result: aTestResult;\x0a        finished: aBlock;\x0a        yourself", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+messageSends: ["result:", "testCase:", "finished:", "yourself"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.RunningTestContext.klass); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.ReportingTestContext.klass); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.addClass('ErroringTestContext', smalltalk.RunningTestContext, [], 'SUnit'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.addClass('ResultAnnouncement', smalltalk.Object, ['result'], 'SUnit'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-"_exception_do_", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+"_result", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.method({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-selector: "exception:do:", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-category: 'private', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-fn: function (anException,aBlock){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+selector: "result", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+category: 'accessing', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+fn: function (){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 var self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.send(anException,"_signal",[]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-return self}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-args: ["anException", "aBlock"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-source: "exception: anException do: aBlock\x0a\x09anException signal", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-messageSends: ["signal"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return self["@result"]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+args: [], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+source: "result\x0a\x09^result", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+messageSends: [], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.ErroringTestContext); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.ResultAnnouncement); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.addMethod( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-"_testCase_", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+"_result_", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.method({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-selector: "testCase:", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-category: 'instance creation', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-fn: function (aTestCase){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+selector: "result:", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+category: 'accessing', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+fn: function (aTestResult){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 var self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-var $1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-$1=smalltalk.send(self,"_testCase_result_finished_",[aTestCase,smalltalk.send((smalltalk.TestResult || TestResult),"_new",[]),(function(){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-})]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-return $1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-args: ["aTestCase"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-source: "testCase: aTestCase\x0a\x09^self\x0a        testCase: aTestCase\x0a        result: TestResult new\x0a        finished: []", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-messageSends: ["testCase:result:finished:", "new"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-referencedClasses: ["TestResult"] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+self["@result"]=aTestResult; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+return self}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+args: ["aTestResult"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+source: "result: aTestResult\x0a\x09result := aTestResult", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+messageSends: [], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+referencedClasses: [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.ErroringTestContext.klass); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.ResultAnnouncement); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.addClass('TestCase', smalltalk.Object, ['testSelector', 'asyncTimeout', 'context'], 'SUnit'); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -476,12 +443,12 @@ selector: "runCase", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 category: 'running', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 fn: function (){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 var self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-smalltalk.send(smalltalk.send((smalltalk.ErroringTestContext || ErroringTestContext),"_testCase_",[self]),"_start",[]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+smalltalk.send(smalltalk.send((smalltalk.BareTestContext || BareTestContext),"_testCase_",[self]),"_start",[]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 return self}, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 args: [], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-source: "runCase\x0a\x09\x22Runs a test case in isolated context, leaking all errors.\x22\x0a\x0a\x09(ErroringTestContext testCase: self) start", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+source: "runCase\x0a\x09\x22Runs a test case in isolated context, leaking all errors.\x22\x0a\x0a\x09(BareTestContext testCase: self) start", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 messageSends: ["start", "testCase:"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-referencedClasses: ["ErroringTestContext"] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+referencedClasses: ["BareTestContext"] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.TestCase); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -984,15 +951,15 @@ category: 'private', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 fn: function (anInteger){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 var self=this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 var $1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-$1=smalltalk.send((smalltalk.RunningTestContext || RunningTestContext),"_testCase_result_finished_",[smalltalk.send(self["@suite"],"_at_",[anInteger]),self["@result"],(function(){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+$1=smalltalk.send((smalltalk.ReportingTestContext || ReportingTestContext),"_testCase_result_finished_",[smalltalk.send(self["@suite"],"_at_",[anInteger]),self["@result"],(function(){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 return smalltalk.send(self,"_resume",[]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 })]); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 return $1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 args: ["anInteger"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-source: "contextOf: anInteger\x0a   \x09^RunningTestContext testCase: (suite at: anInteger) result: result finished: [ self resume ]\x0a", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+source: "contextOf: anInteger\x0a   \x09^ReportingTestContext testCase: (suite at: anInteger) result: result finished: [ self resume ]\x0a", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 messageSends: ["testCase:result:finished:", "at:", "resume"], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-referencedClasses: ["RunningTestContext"] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+referencedClasses: ["ReportingTestContext"] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 }), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 smalltalk.TestSuiteRunner); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 |