return: fix -level 0 -code xxx
[jimtcl.git] / tests / return.test
blob9ef6d79715c5d9e042edf806bf98d95dc08b898d
1 source [file dirname [info script]]/testing.tcl
3 set testpath [file dirname [info script]]
5 # return -code
7 test return-1.1 {return -code} {
8         set script "return -code 4 result"
9         list [catch {eval $script} msg] $msg
10 } {2 result}
12 test return-1.2 {source file with break} {
13         list [catch {source $testpath/break.tcl} msg] $msg
14 } {3 {}}
16 test return-1.3 {source file with break} {
17         list [catch {source $testpath/return-break.tcl} msg] $msg
18 } {3 result}
20 proc a {level code msg} {
21         return -level $level -code $code $msg
24 proc b {level code msg} {
25         a $level $code $msg
28 test return-2.1 {return -level 0} {
29         list [catch {a 0 20 text} msg] $msg
30 } {20 text}
32 test return-2.2 {return -level 1} {
33         list [catch {a 1 20 text} msg] $msg
34 } {20 text}
36 test return-2.3 {return -level 2} {
37         list [catch {a 2 20 text} msg] $msg
38 } {2 text}
40 test return-2.4 {return -level 0} {
41         list [catch {b 0 20 text} msg] $msg
42 } {20 text}
44 test return-2.5 {return -level 1} {
45         list [catch {b 1 20 text} msg] $msg
46 } {20 text}
48 test return-2.6 {return -level 2} {
49         list [catch {b 2 20 text} msg] $msg
50 } {20 text}
52 test return-2.7 {return -level 0 -code break} {
53         list [catch {return -level 0 -code break text} msg] $msg
54 } {3 text}
57 testreport