diff options
Diffstat (limited to 'tests/breakcont.test')
-rw-r--r-- | tests/breakcont.test | 127 |
1 files changed, 127 insertions, 0 deletions
diff --git a/tests/breakcont.test b/tests/breakcont.test new file mode 100644 index 0000000..ddf9438 --- /dev/null +++ b/tests/breakcont.test @@ -0,0 +1,127 @@ +# Test multi-level break, continue in loops + +source [file dirname [info script]]/testing.tcl + +needs constraint jim + +proc whiletester {type {level {}}} { + set result {} + set i 0 + while {$i < 3} { + incr i + set j 0 + set subresult {} + while {$j < 5} { + incr j + if {$i == 2 && $j == 2} { + $type {*}$level + } + lappend subresult $($i * 10 + $j) + } + lappend result $subresult + } + return $result +} + +proc looptester {type {level {}}} { + set result {} + loop i 1 4 { + set subresult {} + loop j 1 6 { + if {$i == 2 && $j == 2} { + $type {*}$level + } + lappend subresult $($i * 10 + $j) + } + lappend result $subresult + } + return $result +} + +proc foreachtester {type {level {}}} { + set result {} + foreach i {1 2 3} { + set subresult {} + foreach j {1 2 3 4 5} { + if {$i == 2 && $j == 2} { + $type {*}$level + } + lappend subresult $($i * 10 + $j) + } + lappend result $subresult + } + return $result +} + +proc fortester {type {level {}}} { + set result {} + for {set i 1} {$i < 4} {incr i} { + set subresult {} + for {set j 1} {$j < 6} {incr j} { + if {$i == 2 && $j == 2} { + $type {*}$level + } + lappend subresult $($i * 10 + $j) + } + lappend result $subresult + } + return $result +} + +test while-1.1 {one level break} -body { + whiletester break +} -result {{11 12 13 14 15} 21 {31 32 33 34 35}} + +test while-1.2 {two level break} -body { + whiletester break 2 +} -result {{11 12 13 14 15}} + +test while-1.3 {one level continue} -body { + whiletester continue +} -result {{11 12 13 14 15} {21 23 24 25} {31 32 33 34 35}} + +test while-1.4 {two level continue} -body { + whiletester continue 2 +} -result {{11 12 13 14 15} {31 32 33 34 35}} + +test loop-1.1 {one level break} -body { + looptester break +} -result {{11 12 13 14 15} 21 {31 32 33 34 35}} + +test loop-1.2 {two level break} -body { + looptester break 2 +} -result {{11 12 13 14 15}} + +test loop-1.3 {one level continue} -body { + looptester continue +} -result {{11 12 13 14 15} {21 23 24 25} {31 32 33 34 35}} + +test loop-1.4 {two level continue} -body { + looptester continue 2 +} -result {{11 12 13 14 15} {31 32 33 34 35}} + +test foreach-1.2 {two level break} -body { + foreachtester break 2 +} -result {{11 12 13 14 15}} + +test foreach-1.3 {one level continue} -body { + foreachtester continue +} -result {{11 12 13 14 15} {21 23 24 25} {31 32 33 34 35}} + +test foreach-1.4 {two level continue} -body { + foreachtester continue 2 +} -result {{11 12 13 14 15} {31 32 33 34 35}} + +test for-1.2 {two level break} -body { + fortester break 2 +} -result {{11 12 13 14 15}} + +test for-1.3 {one level continue} -body { + fortester continue +} -result {{11 12 13 14 15} {21 23 24 25} {31 32 33 34 35}} + +test for-1.4 {two level continue} -body { + fortester continue 2 +} -result {{11 12 13 14 15} {31 32 33 34 35}} + +testreport |