"{ Package: 'exept:regression' }"
"{ NameSpace: RegressionTests }"
TestCase subclass:#ExceptionTest
instanceVariableNames:''
classVariableNames:''
poolDictionaries:''
category:'tests-Regression'
!
!ExceptionTest class methodsFor:'documentation'!
documentation
"
documentation to be added.
[author:]
Stefan Vogel (stefan@zwerg)
[instance variables:]
[class variables:]
[see also:]
"
! !
!ExceptionTest methodsFor:'initialize / release'!
setUp
"common setup - invoked before testing."
super setUp
!
tearDown
"common cleanup - invoked after testing."
super tearDown
! !
!ExceptionTest methodsFor:'tests'!
test1
|result zero|
result := OrderedCollection new.
zero := 0.
[ 0 // zero ]
on:ZeroDivide
do:[:ex|
self assert:(ex signal == ZeroDivide).
self assert:(ex originator == 0).
result add:#Error
].
self assert:(result size == 1).
self assert:(result first == #Error).
"
self run:#test1
self new test1
"
!
test10
|result zero|
result := OrderedCollection new.
zero := 0.
[
[
Warning handle:[:ex | result add:#Warning ] do:[ 2 // zero ].
] on:ZeroDivide do:[:ex |
result add:#Error.
ex reject.
[
self warn:ex description.
] on:Warning do:[:ex| result add:#Warning2]
]
] on:ZeroDivide do:[:ex |
result add:#Error2
].
self assert:(result size == 2).
self assert:(result first == #Error).
self assert:(result second == #Error2)
"
self run:#test10
self new test10
"
!
test2
|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).
"
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
"
!
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.
trace := OrderedCollection new.
Error handle:[:ex |
trace add:5.
] do:[
[
trace add:1.
1 // zero.
trace add:2.
] ensure:[
trace add:3.
1 // zero.
trace add:4.
].
].
self assert:(trace asArray = #(1 5 3)).
"
self run:#test7_error_in_unwind
self new test7_error_in_unwind
"
"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.
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.
].
].
].
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'!
version
^ '$Header$'
! !