diff options
author | Steve Bennett <steveb@workware.net.au> | 2016-03-25 22:41:56 +1000 |
---|---|---|
committer | Steve Bennett <steveb@workware.net.au> | 2025-07-16 09:34:08 +1000 |
commit | d5931248b6cf9a627ea8e2547c150c1dd791ddcc (patch) | |
tree | 76b44af61ada1e321f2e7da75efb7f60d1ebb31a | |
parent | 7c8c9ca1cfe8197f0410353e8b147d8cdef3791b (diff) | |
download | jimtcl-d5931248b6cf9a627ea8e2547c150c1dd791ddcc.zip jimtcl-d5931248b6cf9a627ea8e2547c150c1dd791ddcc.tar.gz jimtcl-d5931248b6cf9a627ea8e2547c150c1dd791ddcc.tar.bz2 |
Update tests for new vwait with script
Signed-off-by: Steve Bennett <steveb@workware.net.au>
-rw-r--r-- | tests/event.test | 27 |
1 files changed, 23 insertions, 4 deletions
diff --git a/tests/event.test b/tests/event.test index a81128e..3a0f3bb 100644 --- a/tests/event.test +++ b/tests/event.test @@ -104,10 +104,8 @@ test event-10.1 {Tcl_Exit procedure} exec { test event-11.1 {Tcl_VwaitCmd procedure} -body { vwait -} -returnCodes error -match glob -result {wrong # args: should be "vwait* name"} -test event-11.2 {Tcl_VwaitCmd procedure} -body { - vwait a b -} -returnCodes error -match glob -result {wrong # args: should be "vwait* name"} +} -returnCodes error -result {wrong # args: should be "vwait ?-signal? name ?script?"} + test event-11.3 {Tcl_VwaitCmd procedure} jim { catch {unset x} set x 1 @@ -270,5 +268,26 @@ test event-14.2 {IPv6 socket stream.server client address} {jim socket ipv6} { list [join [lrange [split $addr6 :] 0 end-1] :] } {{[::1]}} +test event-15.1 {vwait with script} {jim} { + set x 0 + set result {} + + local proc waiter {} {&x &result} { + lappend result $x + after 10 waiter + } + + after 10 waiter + vwait done_waiter [lambda {} {&x} { + # By using a lambda to capture a reference to x, we can + # avoid a global variable. (done_waiter is not used) + if {[incr x] >= 5} { + break + } + }] + # The vwait script iterates 5 times before break, so it will + # cancel the event loop before waiter sets done_waiter + list $x $result +} {5 {0 1 2 3 4}} testreport |