sl@0: # This file tests the tclWinNotify.c file. sl@0: # sl@0: # This file contains a collection of tests for one or more of the Tcl sl@0: # built-in commands. Sourcing this file into Tcl runs the tests and sl@0: # generates output for errors. No output means no errors were found. sl@0: # sl@0: # Copyright (c) 1997 by Sun Microsystems, Inc. sl@0: # Copyright (c) 1998-1999 by Scriptics Corporation. sl@0: # sl@0: # See the file "license.terms" for information on usage and redistribution sl@0: # of this file, and for a DISCLAIMER OF ALL WARRANTIES. sl@0: # sl@0: # RCS: @(#) $Id: winNotify.test,v 1.7 2000/04/10 17:19:06 ericm Exp $ sl@0: sl@0: if {[lsearch [namespace children] ::tcltest] == -1} { sl@0: package require tcltest sl@0: namespace import -force ::tcltest::* sl@0: } sl@0: sl@0: set ::tcltest::testConstraints(testeventloop) \ sl@0: [expr {[info commands testeventloop] != {}}] sl@0: sl@0: # There is no explicit test for InitNotifier or NotifierExitHandler sl@0: sl@0: test winNotify-1.1 {Tcl_SetTimer: positive timeout} {pcOnly} { sl@0: set done 0 sl@0: after 1000 { set done 1 } sl@0: vwait done sl@0: set done sl@0: } 1 sl@0: test winNotify-1.2 {Tcl_SetTimer: positive timeout, message pending} {pcOnly} { sl@0: set x 0 sl@0: set y 1 sl@0: set a1 [after 0 { incr y }] sl@0: after cancel $a1 sl@0: after 500 { incr x } sl@0: vwait x sl@0: list $x $y sl@0: } {1 1} sl@0: test winNotify-1.3 {Tcl_SetTimer: cancelling positive timeout} {pcOnly} { sl@0: set x 0 sl@0: set y 1 sl@0: set id [after 10000 { incr y }] sl@0: after 0 { incr x } sl@0: vwait x sl@0: after cancel $id sl@0: list $x $y sl@0: } {1 1} sl@0: test winNotify-1.4 {Tcl_SetTimer: null timeout, message pending} {pcOnly} { sl@0: set x 0 sl@0: set y 1 sl@0: after 0 { incr x } sl@0: after 0 { incr y } sl@0: vwait x sl@0: list $x $y sl@0: } {1 2} sl@0: sl@0: test winNotify-2.1 {Tcl_ResetIdleTimer} {pcOnly} { sl@0: set x 0 sl@0: update sl@0: after idle { incr x } sl@0: vwait x sl@0: set x sl@0: } 1 sl@0: test winNotify-2.2 {Tcl_ResetIdleTimer: message pending} {pcOnly} { sl@0: set x 0 sl@0: set y 1 sl@0: update sl@0: after idle { incr x } sl@0: after idle { incr y } sl@0: update sl@0: list $x $y sl@0: } {1 2} sl@0: sl@0: test winNotify-3.1 {NotifierProc: non-modal normal timer} {pcOnly testeventloop} { sl@0: update sl@0: set x 0 sl@0: foreach i [after info] { sl@0: after cancel $i sl@0: } sl@0: after 500 { incr x; testeventloop done } sl@0: testeventloop wait sl@0: set x sl@0: } 1 sl@0: test winNotify-3.2 {NotifierProc: non-modal normal timer, rescheduled} {pcOnly testeventloop} { sl@0: update sl@0: set x 0 sl@0: foreach i [after info] { sl@0: after cancel $i sl@0: } sl@0: after 500 { incr x; after 100 {incr x; testeventloop done }} sl@0: testeventloop wait sl@0: set x sl@0: } 2 sl@0: test winNotify-3.3 {NotifierProc: modal normal timer} {pcOnly} { sl@0: update sl@0: set x 0 sl@0: foreach i [after info] { sl@0: after cancel $i sl@0: } sl@0: after 500 { incr x } sl@0: vwait x sl@0: set x sl@0: } 1 sl@0: test winNotify-3.4 {NotifierProc: modal normal timer, rescheduled} {pcOnly} { sl@0: update sl@0: set x 0 sl@0: foreach i [after info] { sl@0: after cancel $i sl@0: } sl@0: set y 0 sl@0: after 500 { incr y; after 100 {incr x}} sl@0: vwait x sl@0: list $x $y sl@0: } {1 1} sl@0: test winNotify-3.5 {NotifierProc: non-modal idle timer} {pcOnly testeventloop} { sl@0: update sl@0: set x 0 sl@0: foreach i [after info] { sl@0: after cancel $i sl@0: } sl@0: after idle { incr x; testeventloop done } sl@0: testeventloop wait sl@0: set x sl@0: } 1 sl@0: test winNotify-3.6 {NotifierProc: non-modal idle timer, rescheduled} {pcOnly testeventloop} { sl@0: update sl@0: set x 0 sl@0: foreach i [after info] { sl@0: after cancel $i sl@0: } sl@0: after idle { incr x; after idle {incr x; testeventloop done }} sl@0: testeventloop wait sl@0: set x sl@0: } 2 sl@0: test winNotify-3.7 {NotifierProc: modal idle timer} {pcOnly} { sl@0: update sl@0: set x 0 sl@0: foreach i [after info] { sl@0: after cancel $i sl@0: } sl@0: after idle { incr x } sl@0: vwait x sl@0: set x sl@0: } 1 sl@0: test winNotify-3.8 {NotifierProc: modal idle timer, rescheduled} {pcOnly} { sl@0: update sl@0: set x 0 sl@0: foreach i [after info] { sl@0: after cancel $i sl@0: } sl@0: set y 0 sl@0: after idle { incr y; after idle {incr x}} sl@0: vwait x sl@0: list $x $y sl@0: } {1 1} sl@0: sl@0: # Tcl_DoOneEvent is tested by the timer.test, io.test, and event.test files sl@0: sl@0: # cleanup sl@0: ::tcltest::cleanupTests sl@0: return sl@0: sl@0: sl@0: sl@0: sl@0: sl@0: sl@0: sl@0: sl@0: sl@0: sl@0: sl@0: