--- a/RegressionTests__ExceptionTest.st Thu Apr 18 14:46:28 2013 +0200
+++ b/RegressionTests__ExceptionTest.st Fri Apr 19 12:11:21 2013 +0200
@@ -27,23 +27,9 @@
"
! !
-!ExceptionTest methodsFor:'initialize / release'!
-
-setUp
- "common setup - invoked before testing."
-
- super setUp
-!
-
-tearDown
- "common cleanup - invoked after testing."
-
- super tearDown
-! !
-
!ExceptionTest methodsFor:'tests'!
-test1
+test01
|result zero|
@@ -53,21 +39,218 @@
[ 0 // zero ]
on:ZeroDivide
do:[:ex|
- self assert:(ex signal == ZeroDivide).
+ self assert:(ex creator == ZeroDivide).
self assert:(ex originator == 0).
result add:#Error
].
self assert:(result size == 1).
self assert:(result first == #Error).
+!
+
+test02
+
+ |result zero|
+
+ result := OrderedCollection new.
+ zero := 0.
+
+ self should:[
+ [ 0 // zero ] on:ZeroDivide do:[:ex|
+ result add:#Error.
+ 0 // zero
+ ].
+ ] raise:ZeroDivide.
+ self assert:(result size == 1).
+ self assert:(result first == #Error).
+!
+
+test03
+
+ |result zero|
+
+ result := OrderedCollection new.
+ zero := 0.
+
+ self should:[
+ [ 0 // zero ] on:ZeroDivide do:[:ex|
+ result add:#Error.
+ [ 0 // zero ] on:ZeroDivide do:[:ex|
+ result add:#Error1.
+ ex reject.
+ ].
+ ].
+ ] raise:ZeroDivide.
+ self assert:(result size == 2).
+ self assert:(result first == #Error).
+ self assert:(result second == #Error1).
+!
+
+test04_on_do
+
+ |exceptionHappened zero|
+
+ zero := 0.
+ exceptionHappened := false.
+
+ [0 // zero]
+ on:ZeroDivide
+ do:[:ex|
+ exceptionHappened := true
+ ].
+
+ self assert:(exceptionHappened).
+!
+
+test05_on_do_ensure
+
+ |exceptionHappened ensureCalled zero|
+
+ zero := 0.
+ exceptionHappened := ensureCalled := false.
+
+ [0 // zero]
+ on:ZeroDivide
+ do:[:ex| exceptionHappened := true]
+ ensure:[ ensureCalled := true ].
+
+ self assert:(exceptionHappened).
+ self assert:(ensureCalled).
+!
+
+test06_on_do_ensure
+
+ |exceptionHappened ensureCalled zero|
+
+ zero := 0.
+ exceptionHappened := ensureCalled := false.
+
+ [zero // 1]
+ on:ZeroDivide
+ do:[:ex| exceptionHappened := true]
+ ensure:[ ensureCalled := true ].
+
+ self assert:(exceptionHappened not).
+ self assert:(ensureCalled).
+!
+
+test07_error_in_unwind
+ "think about this - not sure, how to react on an error happening in the unwind..."
+
+ |zero trace|
+
+ zero := 0.
+
+ trace := OrderedCollection new.
+ self should:[
+ Error handle:[:ex |
+ trace add:5.
+ ] do:[
+ [
+ trace add:1.
+ 1 // zero.
+ trace add:2.
+ ] ensure:[
+ trace add:3.
+ 1 // zero.
+ trace add:4.
+ ].
+ ].
+ ] raise:Error.
+
+ self assert:(trace asArray = #(1 5 3)).
+!
+
+test08_error_in_unwind2
+ "no matter what happens in test7 - this one should work !!"
+
+ |zero trace|
+
+ zero := 0.
+
+ trace := OrderedCollection new.
+ self shouldnt:[
+ Error handle:[:ex |
+ trace add:6.
+ ] do:[
+ Error handle:[:ex |
+ trace add:5.
+ ] do:[
+ [
+ trace add:1.
+ 1 // zero.
+ trace add:2.
+ ] ensure:[
+ trace add:3.
+ 1 // zero.
+ trace add:4.
+ ].
+ ].
+ ].
+ ] raise:Error.
+
+ self assert:(trace asArray = #(1 5 3 6)).
- "
- self run:#test1
- self new test1
- "
+ "Created: / 24-08-2011 / 14:02:01 / cg"
!
-test10
+test09_reraiseOuterHandlerWithEnsure
+ |trace|
+
+ trace := OrderedCollection new.
+
+ AbortSignal handle:[:ex |
+ trace add:1.
+ ] do:[
+ [
+ AbortSignal handle:[:ex |
+ trace add:2.
+ AbortSignal raise.
+ trace add:3.
+ ] do:[
+ trace add:4.
+ AbortSignal raise.
+ trace add:5.
+ ].
+ trace add:6.
+ ] ensure:[
+ trace add:9
+ ].
+ ].
+ trace add:7.
+
+ self assert:(trace asArray = #(4 2 1 9 7)).
+!
+
+test10_reraiseOuterHandlerWithEnsure
+ |trace|
+
+ trace := OrderedCollection new.
+
+ AbortSignal handle:[:ex |
+ trace add:1.
+ ] do:[
+ [
+ AbortSignal handle:[:ex |
+ trace add:2.
+ AbortSignal raise.
+ trace add:3.
+ ] do:[
+ trace add:4.
+ AbortSignal raise.
+ trace add:5.
+ ].
+ trace add:6.
+ ] ensure:[
+ trace add:9
+ ].
+ ].
+ trace add:7.
+
+ self assert:(trace asArray = #(4 2 1 9 7)).
+!
+
+test11
|result zero|
@@ -98,190 +281,131 @@
"
!
-test2
+test12_abortInEnsure
+ |trace setUp tearDown action|
+
+ trace := OrderedCollection new.
+
+ setUp :=
+ [
+ trace add:1.
+ Transcript showCR:'1'.
+ AbortSignal raise.
+ ].
- |result zero|
+ tearDown :=
+ [
+ trace add:2.
+ Transcript showCR:'2'.
+ AbortSignal raise.
+ ].
- result := OrderedCollection new.
- zero := 0.
+ action :=
+ [
+ trace add:3.
+ Transcript showCR:'3'.
+ ].
- self should:[
- [ 0 // zero ] on:ZeroDivide do:[:ex|
- result add:#Error.
- 0 // zero
+ AbortSignal handle:[:ex |
+ trace add:44.
+ Transcript showCR:'44'.
+ ] do:[
+ AbortSignal handle:[:ex |
+ trace add:4.
+ Transcript showCR:'4'.
+ ] do:[
+ [
+ trace add:5.
+ Transcript showCR:'5'.
+ setUp value.
+ trace add:6.
+ Transcript showCR:'6'.
+ action value.
+ trace add:7.
+ Transcript showCR:'7'.
+ ] sunitEnsure: [
+ trace add:8.
+ Transcript showCR:'8'.
+ tearDown value
+ trace add:9.
+ Transcript showCR:'9'.
+ ].
].
- ] raise:ZeroDivide.
- self assert:(result size == 1).
- self assert:(result first == #Error).
-
+ trace add:10.
+ Transcript showCR:'10'.
+ ].
+ self assert:(trace asArray = #(5 1 4 8 2 44 10)).
"
- self run:#test2
- self new test2
- "
-!
-
-test3
-
- |result zero|
-
- result := OrderedCollection new.
- zero := 0.
-
- self should:[
- [ 0 // zero ] on:ZeroDivide do:[:ex|
- result add:#Error.
- [ 0 // zero ] on:ZeroDivide do:[:ex|
- result add:#Error1.
- ex reject.
- ].
- ].
- ] raise:ZeroDivide.
- self assert:(result size == 2).
- self assert:(result first == #Error).
- self assert:(result second == #Error1).
-
-
- "
- self run:#test3
- self new test3
- "
-!
-
-test4_on_do
-
- |exceptionHappened zero|
-
- zero := 0.
- exceptionHappened := false.
-
- [0 // zero]
- on:ZeroDivide
- do:[:ex|
- exceptionHappened := true
- ].
-
- self assert:(exceptionHappened).
-
-
- "
- self run:#test4_on_do
- self new test4_on_do
+ self new test12_reraiseOuterHandlerWithEnsure
"
!
-test5_on_do_ensure
-
- |exceptionHappened ensureCalled zero|
-
- zero := 0.
- exceptionHappened := ensureCalled := false.
-
- [0 // zero]
- on:ZeroDivide
- do:[:ex| exceptionHappened := true]
- ensure:[ ensureCalled := true ].
-
- self assert:(exceptionHappened).
- self assert:(ensureCalled).
-
- "
- self run:#test5_on_do_ensure
- self new test5_on_do_ensure
- "
-!
-
-test6_on_do_ensure
-
- |exceptionHappened ensureCalled zero|
-
- zero := 0.
- exceptionHappened := ensureCalled := false.
-
- [zero // 1]
- on:ZeroDivide
- do:[:ex| exceptionHappened := true]
- ensure:[ ensureCalled := true ].
-
- self assert:(exceptionHappened not).
- self assert:(ensureCalled).
-
- "
- self run:#test6_on_do_ensure
- self new test6_on_do_ensure
- "
-!
-
-test7_error_in_unwind
- "think about this - not sure, how to react on an error happening in the unwind..."
-
- |zero trace|
-
- zero := 0.
+test13_abortInEnsureInProcess
+ |trace setUp tearDown action p|
trace := OrderedCollection new.
- self should:[
- Error handle:[:ex |
- trace add:5.
- ] do:[
- [
- trace add:1.
- 1 // zero.
- trace add:2.
- ] ensure:[
- trace add:3.
- 1 // zero.
- trace add:4.
+
+ setUp :=
+ [
+ trace add:1.
+ Transcript showCR:'1'.
+ AbortSignal raise.
+ ].
+
+ tearDown :=
+ [
+ trace add:2.
+ Transcript showCR:'2'.
+ AbortSignal raise.
+ ].
+
+ action :=
+ [
+ trace add:3.
+ Transcript showCR:'3'.
+ ].
+
+ p :=
+ [
+ AbortSignal handle:[:ex |
+ trace add:44.
+ Transcript showCR:'44'.
+ ] do:[
+ AbortSignal handle:[:ex |
+ trace add:4.
+ Transcript showCR:'4'.
+ ] do:[
+ [
+ trace add:5.
+ Transcript showCR:'5'.
+ setUp value.
+ trace add:6.
+ Transcript showCR:'6'.
+ action value.
+ trace add:7.
+ Transcript showCR:'7'.
+ ] sunitEnsure: [
+ trace add:8.
+ Transcript showCR:'8'.
+ tearDown value
+ trace add:9.
+ Transcript showCR:'9'.
+ ].
+ ].
].
- ].
- ] raise:Error.
+ trace add:10.
+ Transcript showCR:'10'.
+ ] newProcess.
+ "/ p addExitAction:[ self halt].
+ p resume.
- self assert:(trace asArray = #(1 5 3)).
+ p waitUntilTerminated.
+ self assert:(trace asArray = #(5 1 4 8 2 44 10)).
"
- self run:#test7_error_in_unwind
- self new test7_error_in_unwind
+ self new test12_reraiseOuterHandlerWithEnsure
"
-
- "Created: / 24-08-2011 / 13:55:27 / cg"
-!
-
-test8_error_in_unwind2
- "no matter what happens in test7 - this one should work !!"
-
- |zero trace|
-
- zero := 0.
-
- trace := OrderedCollection new.
- self shouldnt:[
- Error handle:[:ex |
- trace add:6.
- ] do:[
- Error handle:[:ex |
- trace add:5.
- ] do:[
- [
- trace add:1.
- 1 // zero.
- trace add:2.
- ] ensure:[
- trace add:3.
- 1 // zero.
- trace add:4.
- ].
- ].
- ].
- ] raise:Error.
-
- self assert:(trace asArray = #(1 5 3 6)).
-
- "
- self run:#test8_error_in_unwind2
- self new test8_error_in_unwind2
- "
-
- "Created: / 24-08-2011 / 14:02:01 / cg"
! !
!ExceptionTest class methodsFor:'documentation'!
@@ -289,3 +413,4 @@
version
^ '$Header$'
! !
+