SUnit-Tests.st 2.5 KB

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