diff options
Diffstat (limited to 'tests/if.test')
-rw-r--r-- | tests/if.test | 69 |
1 files changed, 52 insertions, 17 deletions
diff --git a/tests/if.test b/tests/if.test index b6ea1e3..5cb269d 100644 --- a/tests/if.test +++ b/tests/if.test @@ -10,7 +10,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: if.test,v 1.5 2000/04/10 17:19:00 ericm Exp $ +# RCS: @(#) $Id: if.test,v 1.6 2001/09/19 18:17:54 hobbs Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest @@ -1013,34 +1013,69 @@ test if-9.1 {if cmd with namespace qualifiers} { # Test for incorrect "double evaluation semantics" -test if-10.1 {delayed substitution of then body} {knownBug} { +test if-10.1 {delayed substitution of then body} { set j 0 - if {[incr j] == 1} " + set if if + # this is not compiled + $if {[incr j] == 1} " set result $j " - set result -} {0} -test if-10.2 {delayed substitution of elseif expression} {knownBug} { + # this will be compiled + proc p {} { + set j 0 + if {[incr j]} " + set result $j + " + set result + } + append result [p] +} {00} +test if-10.2 {delayed substitution of elseif expression} { set j 0 - if {[incr j] == 0} { + set if if + # this is not compiled + $if {[incr j] == 0} { set result badthen } elseif "$j == 1" { set result badelseif } else { - set result ok + set result 0 } - set result -} {ok} -test if-10.3 {delayed substitution of elseif body} {knownBug} { + # this will be compiled + proc p {} { + set j 0 + if {[incr j] == 0} { + set result badthen + } elseif "$j == 1" { + set result badelseif + } else { + set result 0 + } + set result + } + append result [p] +} {00} +test if-10.3 {delayed substitution of elseif body} { set j 0 - if {[incr j] == 0} { + set if if + # this is not compiled + $if {[incr j] == 0} { set result badthen } elseif {1} " set result $j " - set result -} {0} -test if-10.4 {delayed substitution of else body} {knownBug} { + # this will be compiled + proc p {} { + set j 0 + if {[incr j] == 0} { + set result badthen + } elseif {1} " + set result $j + " + } + append result [p] +} {00} +test if-10.4 {delayed substitution of else body} { set j 0 if {[incr j] == 0} { set result badthen @@ -1049,13 +1084,13 @@ test if-10.4 {delayed substitution of else body} {knownBug} { " set result } {0} -test if-10.5 {substituted control words} {knownBug} { +test if-10.5 {substituted control words} { set then then; proc then {} {return badthen} set else else; proc else {} {return badelse} set elseif elseif; proc elseif {} {return badelseif} list [catch {if 1 $then {if 0 {} $elseif 1 {if 0 {} $else {list ok}}}} a] $a } {0 ok} -test if-10.6 {double invocation of variable traces} {knownBug} { +test if-10.6 {double invocation of variable traces} { set iftracecounter 0 proc iftraceproc {args} { upvar #0 iftracecounter counter |