123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130 |
- 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
- !
- fakeMultipleGraceTimeFailing
- self graceTime: 100.
- (self async: [
- self graceTime: 5.
- (self async: [ self finished ]) valueWithTimeout: 10
- ]) valueWithTimeout: 5
- !
- fakeMultipleGraceTimePassing
- self graceTime: 10.
- (self async: [
- self graceTime: 20.
- (self async: [ self finished ]) valueWithTimeout: 10
- ]) valueWithTimeout: 5
- !
- fakeTimeout
- self graceTime: 4.
- (self async: [ self finished ]) 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
- !
- testTimeoutsWork
- | suite runner result assertBlock |
- suite := #('fakeTimeout' 'fakeMultipleGraceTimeFailing' 'fakeMultipleGraceTimePassing' 'testPass') collect: [ :each | self class selector: each ].
- runner := TestSuiteRunner on: suite.
- self graceTime: 200.
- result := runner result.
- assertBlock := self async: [
- self assert: result errors isEmpty.
- self assert: #('fakeMultipleGraceTimeFailing' 'fakeTimeout') 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
- !
- 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.
- ! !
|