SUnit-Tests.st 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. Smalltalk current createPackage: 'SUnit-Tests' properties: #{}!
  2. TestCase subclass: #SUnitAsyncTest
  3. instanceVariableNames: 'flag'
  4. package: 'SUnit-Tests'!
  5. !SUnitAsyncTest methodsFor: 'running'!
  6. setUp
  7. flag := 'ok'
  8. !
  9. tearDown
  10. self assert: 'ok' equals: flag
  11. ! !
  12. !SUnitAsyncTest methodsFor: 'tests'!
  13. fakeError
  14. flag := 'bad'.
  15. self graceTime: 10.
  16. flag := (self async: [ self error: 'Intentional'. self finished. flag := 'ok' ]) valueWithTimeout: 5
  17. !
  18. fakeFailure
  19. flag := 'bad'.
  20. self graceTime: 10.
  21. flag := (self async: [ self assert: false. self finished. flag := 'ok' ]) valueWithTimeout: 5
  22. !
  23. testAsyncErrorsAndFailuresWork
  24. | suite runner result assertBlock |
  25. suite := { self class selector: 'fakeError'. self class selector: 'fakeFailure'. self class selector: 'testPass' }.
  26. runner := TestSuiteRunner on: suite.
  27. self graceTime: 200.
  28. result := runner result.
  29. assertBlock := self async: [
  30. self assert: 1 equals: result errors size.
  31. self assert: 'fakeError' equals: result errors first selector.
  32. self assert: 1 equals: result failures size.
  33. self assert: 'fakeFailure' equals: result failures first selector.
  34. self finished
  35. ].
  36. runner announcer on: ResultAnnouncement do: [:ann |
  37. ann result == result ifTrue: [ result runs = result total ifTrue: assertBlock ]].
  38. runner run
  39. !
  40. testAsyncNeedsGraceTime
  41. self should: [ self async: [ ] ] raise: Error.
  42. self graceTime: 0.
  43. self shouldnt: [ self async: [ ] ] raise: Error.
  44. self finished
  45. !
  46. testFinishedNeedsGraceTime
  47. self should: [ self finished ] raise: Error.
  48. self graceTime: 0.
  49. self shouldnt: [ self finished ] raise: Error.
  50. !
  51. testIsAsyncReturnsCorrectValues
  52. self deny: self isAsync.
  53. self graceTime: 0.
  54. self assert: self isAsync.
  55. self finished.
  56. self deny: self isAsync
  57. !
  58. testPass
  59. flag := 'bad'.
  60. self graceTime: 10.
  61. flag := (self async: [ self assert: true. self finished. flag := 'ok' ]) valueWithTimeout: 5
  62. ! !