Tests addSlot: #SUnit valued: TestCase derive. "This is both an example of writing tests and a self test for the SUnit. The tests here are pretty strange, since you want to make sure things blow up. You should not generally have to write tests this complicated in structure, although they will be far more complicated in terms of your own objects- more assertions, more complicated setup." SUnit addSlot: #hasRun valued: False. SUnit addSlot: #hasSetup valued: False. SUnit addSlot: #hasRanOnce valued: False. t@(Tests SUnit traits) setUp [ t hasSetup: True. ]. t@(Tests SUnit traits) error [3 zork]. t@(Tests SUnit traits) noop []. t@(Tests SUnit traits) fail [False]. t@(Tests SUnit traits) setRun [ t hasRun: True. ]. t@(Tests SUnit traits) assertFor: result runs: ran passed: passed failed: failed errors: broke [ t assert: result runCount = ran. t assert: result passedCount = passed. t assert: result failureCount = failed. t assert: result errorCount = broke. ]. t@(Tests SUnit traits) testAssert [ t assert: True. t deny: False. ]. t@(Tests SUnit traits) testShould [ t should: [True]. t shouldnt: [False]. ]. t@(Tests SUnit traits) testRanOnlyOnce [ t assert: t hasRanOnce ~= True. t hasRanOnce: True. ]. t@(Tests SUnit traits) testResult [| case result | case: (t newForSelector: #noop). result: case run. t assertFor: result runCount: 1 passed: 1 failed: 0 errors: 0. ]. t@(Tests SUnit traits) testFail [| case result | case: (t newForSelector: #fail). result: case run. t assertFor: result runCount: 1 passed: 0 failed: 1 errors: 0. ]. t@(Tests SUnit traits) testRan [| case | case: (t newForSelector: #setRun). case run. t assert: case hasSetup. t assert: case hasRun. ]. t@(Tests SUnit traits) testDefects [| result suite error failure | suite: TestSuite newEmpty. suite tests add: (t newForSelector: #error). suite tests add: (t newForSelector: #fail). result: suite run. t assert: (result defects as: {}) = {error. failure}. t assertFor: result runs: 2 passed: 0 failed: 1 errors: 1. ]. t@(Tests SUnit traits) testSuite [| suite result | suite: TestSuite newEmpty. suite tests addAll: {t newForSelector: #noop. t newForSelector: #fail. t newForSelector: #error}. result: suite run. t assertFor: result runCount: 3 passed: 1 failed: 1 errors: 1. ]. Tests CurrentUnit: Tests SUnit.