blob: cff2e80b3813298f65a4c355a6a0d22e37e9265b [file] [log] [blame]
class TryCatchTest extends GroovyTestCase {
property exceptionCalled
property finallyCalled
void testTryCatch() {
try {
failingMethod()
}
catch (AssertionError e) {
onException(e)
}
finally {
onFinally()
}
afterTryCatch()
assert exceptionCalled : "should have invoked the catch clause"
assert finallyCalled : "should have invoked the finally clause"
println("After try/catch")
}
void testTryFinally() {
Boolean touched = false;
try {
}
finally {
touched = true;
}
assert touched : "finally not called with empty try"
}
void testWorkingMethod() {
/** @todo causes inconsistent stack height
assert exceptionCalled == false : "should not invoked the catch clause"
*/
try {
workingMethod()
}
catch (AssertionError e) {
onException(e)
}
finally {
onFinally()
}
assert exceptionCalled == false : "should not invoked the catch clause"
assert finallyCalled : "should have invoked the finally clause"
println("After try/catch")
}
void failingMethod() {
assert false : "Failing on purpose"
}
void workingMethod() {
assert true : "Should never fail"
}
void onException(e) {
assert e != null
exceptionCalled = true
}
void onFinally() {
finallyCalled = true
}
void afterTryCatch() {
assert exceptionCalled : "should have invoked the catch clause"
assert finallyCalled : "should have invoked the finally clause"
println("After try/catch")
}
protected void setUp() {
exceptionCalled = false
finallyCalled = false
}
}