25 [see also:] |
25 [see also:] |
26 |
26 |
27 " |
27 " |
28 ! ! |
28 ! ! |
29 |
29 |
30 !ExceptionTest methodsFor:'initialize / release'! |
|
31 |
|
32 setUp |
|
33 "common setup - invoked before testing." |
|
34 |
|
35 super setUp |
|
36 ! |
|
37 |
|
38 tearDown |
|
39 "common cleanup - invoked after testing." |
|
40 |
|
41 super tearDown |
|
42 ! ! |
|
43 |
|
44 !ExceptionTest methodsFor:'tests'! |
30 !ExceptionTest methodsFor:'tests'! |
45 |
31 |
46 test1 |
32 test01 |
47 |
33 |
48 |result zero| |
34 |result zero| |
49 |
35 |
50 result := OrderedCollection new. |
36 result := OrderedCollection new. |
51 zero := 0. |
37 zero := 0. |
52 |
38 |
53 [ 0 // zero ] |
39 [ 0 // zero ] |
54 on:ZeroDivide |
40 on:ZeroDivide |
55 do:[:ex| |
41 do:[:ex| |
56 self assert:(ex signal == ZeroDivide). |
42 self assert:(ex creator == ZeroDivide). |
57 self assert:(ex originator == 0). |
43 self assert:(ex originator == 0). |
58 result add:#Error |
44 result add:#Error |
59 ]. |
45 ]. |
60 self assert:(result size == 1). |
46 self assert:(result size == 1). |
61 self assert:(result first == #Error). |
47 self assert:(result first == #Error). |
62 |
48 ! |
63 |
49 |
64 " |
50 test02 |
65 self run:#test1 |
|
66 self new test1 |
|
67 " |
|
68 ! |
|
69 |
|
70 test10 |
|
71 |
|
72 |result zero| |
|
73 |
|
74 result := OrderedCollection new. |
|
75 zero := 0. |
|
76 |
|
77 [ |
|
78 [ |
|
79 Warning handle:[:ex | result add:#Warning ] do:[ 2 // zero ]. |
|
80 ] on:ZeroDivide do:[:ex | |
|
81 result add:#Error. |
|
82 ex reject. |
|
83 [ |
|
84 self warn:ex description. |
|
85 ] on:Warning do:[:ex| result add:#Warning2] |
|
86 ] |
|
87 ] on:ZeroDivide do:[:ex | |
|
88 result add:#Error2 |
|
89 ]. |
|
90 |
|
91 self assert:(result size == 2). |
|
92 self assert:(result first == #Error). |
|
93 self assert:(result second == #Error2) |
|
94 |
|
95 " |
|
96 self run:#test10 |
|
97 self new test10 |
|
98 " |
|
99 ! |
|
100 |
|
101 test2 |
|
102 |
51 |
103 |result zero| |
52 |result zero| |
104 |
53 |
105 result := OrderedCollection new. |
54 result := OrderedCollection new. |
106 zero := 0. |
55 zero := 0. |
182 do:[:ex| exceptionHappened := true] |
113 do:[:ex| exceptionHappened := true] |
183 ensure:[ ensureCalled := true ]. |
114 ensure:[ ensureCalled := true ]. |
184 |
115 |
185 self assert:(exceptionHappened). |
116 self assert:(exceptionHappened). |
186 self assert:(ensureCalled). |
117 self assert:(ensureCalled). |
187 |
118 ! |
188 " |
119 |
189 self run:#test5_on_do_ensure |
120 test06_on_do_ensure |
190 self new test5_on_do_ensure |
|
191 " |
|
192 ! |
|
193 |
|
194 test6_on_do_ensure |
|
195 |
121 |
196 |exceptionHappened ensureCalled zero| |
122 |exceptionHappened ensureCalled zero| |
197 |
123 |
198 zero := 0. |
124 zero := 0. |
199 exceptionHappened := ensureCalled := false. |
125 exceptionHappened := ensureCalled := false. |
203 do:[:ex| exceptionHappened := true] |
129 do:[:ex| exceptionHappened := true] |
204 ensure:[ ensureCalled := true ]. |
130 ensure:[ ensureCalled := true ]. |
205 |
131 |
206 self assert:(exceptionHappened not). |
132 self assert:(exceptionHappened not). |
207 self assert:(ensureCalled). |
133 self assert:(ensureCalled). |
208 |
134 ! |
209 " |
135 |
210 self run:#test6_on_do_ensure |
136 test07_error_in_unwind |
211 self new test6_on_do_ensure |
|
212 " |
|
213 ! |
|
214 |
|
215 test7_error_in_unwind |
|
216 "think about this - not sure, how to react on an error happening in the unwind..." |
137 "think about this - not sure, how to react on an error happening in the unwind..." |
217 |
138 |
218 |zero trace| |
139 |zero trace| |
219 |
140 |
220 zero := 0. |
141 zero := 0. |
274 ]. |
188 ]. |
275 ] raise:Error. |
189 ] raise:Error. |
276 |
190 |
277 self assert:(trace asArray = #(1 5 3 6)). |
191 self assert:(trace asArray = #(1 5 3 6)). |
278 |
192 |
279 " |
|
280 self run:#test8_error_in_unwind2 |
|
281 self new test8_error_in_unwind2 |
|
282 " |
|
283 |
193 |
284 "Created: / 24-08-2011 / 14:02:01 / cg" |
194 "Created: / 24-08-2011 / 14:02:01 / cg" |
|
195 ! |
|
196 |
|
197 test09_reraiseOuterHandlerWithEnsure |
|
198 |trace| |
|
199 |
|
200 trace := OrderedCollection new. |
|
201 |
|
202 AbortSignal handle:[:ex | |
|
203 trace add:1. |
|
204 ] do:[ |
|
205 [ |
|
206 AbortSignal handle:[:ex | |
|
207 trace add:2. |
|
208 AbortSignal raise. |
|
209 trace add:3. |
|
210 ] do:[ |
|
211 trace add:4. |
|
212 AbortSignal raise. |
|
213 trace add:5. |
|
214 ]. |
|
215 trace add:6. |
|
216 ] ensure:[ |
|
217 trace add:9 |
|
218 ]. |
|
219 ]. |
|
220 trace add:7. |
|
221 |
|
222 self assert:(trace asArray = #(4 2 1 9 7)). |
|
223 ! |
|
224 |
|
225 test10_reraiseOuterHandlerWithEnsure |
|
226 |trace| |
|
227 |
|
228 trace := OrderedCollection new. |
|
229 |
|
230 AbortSignal handle:[:ex | |
|
231 trace add:1. |
|
232 ] do:[ |
|
233 [ |
|
234 AbortSignal handle:[:ex | |
|
235 trace add:2. |
|
236 AbortSignal raise. |
|
237 trace add:3. |
|
238 ] do:[ |
|
239 trace add:4. |
|
240 AbortSignal raise. |
|
241 trace add:5. |
|
242 ]. |
|
243 trace add:6. |
|
244 ] ensure:[ |
|
245 trace add:9 |
|
246 ]. |
|
247 ]. |
|
248 trace add:7. |
|
249 |
|
250 self assert:(trace asArray = #(4 2 1 9 7)). |
|
251 ! |
|
252 |
|
253 test11 |
|
254 |
|
255 |result zero| |
|
256 |
|
257 result := OrderedCollection new. |
|
258 zero := 0. |
|
259 |
|
260 [ |
|
261 [ |
|
262 Warning handle:[:ex | result add:#Warning ] do:[ 2 // zero ]. |
|
263 ] on:ZeroDivide do:[:ex | |
|
264 result add:#Error. |
|
265 ex reject. |
|
266 [ |
|
267 self warn:ex description. |
|
268 ] on:Warning do:[:ex| result add:#Warning2] |
|
269 ] |
|
270 ] on:ZeroDivide do:[:ex | |
|
271 result add:#Error2 |
|
272 ]. |
|
273 |
|
274 self assert:(result size == 2). |
|
275 self assert:(result first == #Error). |
|
276 self assert:(result second == #Error2) |
|
277 |
|
278 " |
|
279 self run:#test10 |
|
280 self new test10 |
|
281 " |
|
282 ! |
|
283 |
|
284 test12_abortInEnsure |
|
285 |trace setUp tearDown action| |
|
286 |
|
287 trace := OrderedCollection new. |
|
288 |
|
289 setUp := |
|
290 [ |
|
291 trace add:1. |
|
292 Transcript showCR:'1'. |
|
293 AbortSignal raise. |
|
294 ]. |
|
295 |
|
296 tearDown := |
|
297 [ |
|
298 trace add:2. |
|
299 Transcript showCR:'2'. |
|
300 AbortSignal raise. |
|
301 ]. |
|
302 |
|
303 action := |
|
304 [ |
|
305 trace add:3. |
|
306 Transcript showCR:'3'. |
|
307 ]. |
|
308 |
|
309 AbortSignal handle:[:ex | |
|
310 trace add:44. |
|
311 Transcript showCR:'44'. |
|
312 ] do:[ |
|
313 AbortSignal handle:[:ex | |
|
314 trace add:4. |
|
315 Transcript showCR:'4'. |
|
316 ] do:[ |
|
317 [ |
|
318 trace add:5. |
|
319 Transcript showCR:'5'. |
|
320 setUp value. |
|
321 trace add:6. |
|
322 Transcript showCR:'6'. |
|
323 action value. |
|
324 trace add:7. |
|
325 Transcript showCR:'7'. |
|
326 ] sunitEnsure: [ |
|
327 trace add:8. |
|
328 Transcript showCR:'8'. |
|
329 tearDown value |
|
330 trace add:9. |
|
331 Transcript showCR:'9'. |
|
332 ]. |
|
333 ]. |
|
334 trace add:10. |
|
335 Transcript showCR:'10'. |
|
336 ]. |
|
337 self assert:(trace asArray = #(5 1 4 8 2 44 10)). |
|
338 |
|
339 " |
|
340 self new test12_reraiseOuterHandlerWithEnsure |
|
341 " |
|
342 ! |
|
343 |
|
344 test13_abortInEnsureInProcess |
|
345 |trace setUp tearDown action p| |
|
346 |
|
347 trace := OrderedCollection new. |
|
348 |
|
349 setUp := |
|
350 [ |
|
351 trace add:1. |
|
352 Transcript showCR:'1'. |
|
353 AbortSignal raise. |
|
354 ]. |
|
355 |
|
356 tearDown := |
|
357 [ |
|
358 trace add:2. |
|
359 Transcript showCR:'2'. |
|
360 AbortSignal raise. |
|
361 ]. |
|
362 |
|
363 action := |
|
364 [ |
|
365 trace add:3. |
|
366 Transcript showCR:'3'. |
|
367 ]. |
|
368 |
|
369 p := |
|
370 [ |
|
371 AbortSignal handle:[:ex | |
|
372 trace add:44. |
|
373 Transcript showCR:'44'. |
|
374 ] do:[ |
|
375 AbortSignal handle:[:ex | |
|
376 trace add:4. |
|
377 Transcript showCR:'4'. |
|
378 ] do:[ |
|
379 [ |
|
380 trace add:5. |
|
381 Transcript showCR:'5'. |
|
382 setUp value. |
|
383 trace add:6. |
|
384 Transcript showCR:'6'. |
|
385 action value. |
|
386 trace add:7. |
|
387 Transcript showCR:'7'. |
|
388 ] sunitEnsure: [ |
|
389 trace add:8. |
|
390 Transcript showCR:'8'. |
|
391 tearDown value |
|
392 trace add:9. |
|
393 Transcript showCR:'9'. |
|
394 ]. |
|
395 ]. |
|
396 ]. |
|
397 trace add:10. |
|
398 Transcript showCR:'10'. |
|
399 ] newProcess. |
|
400 "/ p addExitAction:[ self halt]. |
|
401 p resume. |
|
402 |
|
403 p waitUntilTerminated. |
|
404 self assert:(trace asArray = #(5 1 4 8 2 44 10)). |
|
405 |
|
406 " |
|
407 self new test12_reraiseOuterHandlerWithEnsure |
|
408 " |
285 ! ! |
409 ! ! |
286 |
410 |
287 !ExceptionTest class methodsFor:'documentation'! |
411 !ExceptionTest class methodsFor:'documentation'! |
288 |
412 |
289 version |
413 version |
290 ^ '$Header$' |
414 ^ '$Header$' |
291 ! ! |
415 ! ! |
|
416 |