| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 | 
							- Smalltalk current createPackage: 'SUnit-Tests' properties: #{}!
 
- TestCase subclass: #SUnitAsyncTest
 
- 	instanceVariableNames: 'flag'
 
- 	package: 'SUnit-Tests'!
 
- !SUnitAsyncTest methodsFor: 'private'!
 
- sortedSelectors: aCollection
 
- 	^(aCollection collect: [:each | each selector]) sorted
 
- ! !
 
- !SUnitAsyncTest methodsFor: 'running'!
 
- setUp
 
- 	flag := 'ok'
 
- !
 
- tearDown
 
- 	self assert: 'ok' equals: flag
 
- ! !
 
- !SUnitAsyncTest methodsFor: 'tests'!
 
- fakeError
 
- 	flag := 'bad'.
 
- 	self graceTime: 10.
 
-     flag := (self async: [ flag := 'ok'. self error: 'Intentional' ]) valueWithTimeout: 5
 
- !
 
- fakeErrorFailingInTearDown
 
- 	flag := 'bad'.
 
- 	self graceTime: 10.
 
-     flag := (self async: [ self error: 'Intentional' ]) valueWithTimeout: 5
 
- !
 
- fakeFailure
 
- 	flag := 'bad'.
 
- 	self graceTime: 10.
 
-     flag := (self async: [ flag := 'ok'. self assert: false ]) valueWithTimeout: 5
 
- !
 
- testAsyncErrorsAndFailuresWork
 
- 	| suite runner result assertBlock |
 
- 	suite := #('fakeError' 'fakeErrorFailingInTearDown' 'fakeFailure' 'testPass') collect: [ :each | self class selector: each ].
 
-     runner := TestSuiteRunner on: suite.
 
-     self graceTime: 200.
 
- 	result := runner result.
 
-     assertBlock := self async: [
 
- 		self assert: #('fakeError') equals: (self sortedSelectors: result errors).
 
- 		self assert: #('fakeErrorFailingInTearDown' 'fakeFailure') equals: (self sortedSelectors: result failures).
 
- 		self finished
 
-   	].
 
-     runner announcer on: ResultAnnouncement do: [:ann |
 
-     	ann result == result  ifTrue: [ result runs = result total ifTrue: assertBlock ]].
 
- 	runner run
 
- !
 
- testAsyncNeedsGraceTime
 
-     self should: [ self async: [ ] ] raise: Error.
 
-     self graceTime: 0.
 
-     self shouldnt: [ self async: [ ] ] raise: Error.
 
-     self finished
 
- !
 
- testFinishedNeedsGraceTime
 
-     self should: [ self finished ] raise: Error.
 
-     self graceTime: 0.
 
-     self shouldnt: [ self finished ] raise: Error.
 
- !
 
- testIsAsyncReturnsCorrectValues
 
-     self deny: self isAsync.
 
-     self graceTime: 0.
 
-     self assert: self isAsync.
 
-     self finished.
 
-     self deny: self isAsync
 
- !
 
- testPass
 
- 	flag := 'bad'.
 
- 	self graceTime: 10.
 
-     flag := (self async: [ self assert: true. self finished. flag := 'ok' ]) valueWithTimeout: 5
 
- !
 
- testTwoAsyncPassesWithFinishedOnlyOneIsRun
 
- 	| x |
 
- 	flag := 'bad'.
 
- 	self graceTime: 10.
 
-     x := 0.
 
-     flag := (self async: [ self finished. flag := 'ok'. x := x+1. self assert: 1 equals: x ]) valueWithTimeout: 0.
 
-     flag := (self async: [ self finished. flag := 'ok'. x := x+1. self assert: 1 equals: x ]) valueWithTimeout: 0.
 
- ! !
 
 
  |