TestRunner.st
changeset 19 5942ea175447
parent 17 7cadcf8bb19d
child 20 5bca85f3769d
--- a/TestRunner.st	Thu Dec 14 14:08:21 2000 +0100
+++ b/TestRunner.st	Thu Jan 11 15:39:25 2001 +0100
@@ -2,7 +2,7 @@
 
 ApplicationModel subclass:#TestRunner
 	instanceVariableNames:'result lastPass defect allDefects defectMenu details mode
-		scriptModel script'
+		scriptModel script numberOfTestsToRun'
 	classVariableNames:''
 	poolDictionaries:''
 	category:'SUnit-UI'
@@ -112,7 +112,7 @@
            #(#LabelSpec
               #label: '...'
               #name: 'details'
-              #layout: #(#LayoutFrame 0 0 0 0.5 0 1 -24 1)
+              #layout: #(#LayoutFrame 0 0 0 0.5 0 1 -25 1)
               #labelChannel: #details
             )
            #(#MenuButtonSpec
@@ -141,6 +141,15 @@
               #initiallyDisabled: true
               #enableChannel: #enableDebugButton
             )
+           #(#ProgressIndicatorSpec
+              #name: 'ProgressIndicator1'
+              #layout: #(#LayoutFrame 0 0.0 25 0 0 1.0 36 0)
+              #visibilityChannel: #percentageIndicatorVisible
+              #model: #percentageDone
+              #foregroundColor: #(#Color 32.9992 32.9992 0.0)
+              #backgroundColor: #(#Color 66.9993 66.9993 0.0)
+              #showPercentage: false
+            )
            )
          
         )
@@ -237,6 +246,26 @@
 			[mode]
 !
 
+percentageDone
+    |holder|
+
+    (holder := builder bindingAt:#percentageDone) isNil ifTrue:[
+        holder := 0 asValue.
+        builder aspectAt:#percentageDone put:holder.
+    ].
+    ^ holder.
+!
+
+percentageIndicatorVisible
+    |holder|
+
+    (holder := builder bindingAt:#percentageIndicatorVisible) isNil ifTrue:[
+        holder := false asValue.
+        builder aspectAt:#percentageIndicatorVisible put:holder.
+    ].
+    ^ holder.
+!
+
 script
     "automatically generated by UIPainter ..."
 
@@ -461,13 +490,26 @@
 !
 
 runSuite: aTestSuite 
-	Cursor wait
-		showWhile: 
-			[self displayRunning.
-			aTestSuite addDependentToHierachy: self.
-			[result := aTestSuite run]
-				ensure: [aTestSuite removeDependentFromHierachy: self].
-			self updateWindow]
+        |numTests|
+
+        numTests := 0.
+        aTestSuite tests do:[:eachTest |
+            numTests := numTests + eachTest tests size.
+        ].
+        numberOfTestsToRun := numTests.
+        self percentageDone value:0.
+
+        Cursor wait
+                showWhile: 
+                        [self displayRunning.
+                        aTestSuite addDependentToHierachy: self.
+                        result := TestResult new.
+                        self percentageIndicatorVisible value:true.
+                        [aTestSuite run:result]
+                                ensure: [aTestSuite removeDependentFromHierachy: self.
+                                         self percentageIndicatorVisible value:false.
+                                        ].
+                        self updateWindow]
 !
 
 runTests
@@ -607,7 +649,8 @@
 !
 
 displayDetails: aString 
-	self details value: aString.
+        self details value: aString.
+        self windowGroup repairDamage.
 
     "Modified: / 21.6.2000 / 11:10:14 / Sames"
 !
@@ -669,9 +712,12 @@
 !
 
 update: anObject 
-	(anObject isKindOf: TestCase)
-		ifTrue: [self displayDetails: anObject printString]
-		ifFalse: [super update: anObject]
+        (anObject isKindOf: TestCase)
+                ifTrue: [
+                            self percentageDone value:(result runCount / numberOfTestsToRun * 100) rounded.
+                            self displayDetails: anObject printString
+                        ]
+                ifFalse: [super update: anObject]
 !
 
 updateDefects
@@ -688,5 +734,5 @@
 !TestRunner class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/goodies/sunit/TestRunner.st,v 1.9 2000-12-14 13:08:04 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/goodies/sunit/TestRunner.st,v 1.10 2001-01-11 14:39:25 cg Exp $'
 ! !