id.test
上传用户:rrhhcc
上传日期:2015-12-11
资源大小:54129k
文件大小:3k
源码类别:

通讯编程

开发平台:

Visual C++

  1. # This file is a Tcl script to test out the procedures in the file
  2. # tkId.c, which recycle X resource identifiers.  It is organized in
  3. # the standard fashion for Tcl tests.
  4. #
  5. # Copyright (c) 1995 Sun Microsystems, Inc.
  6. # Copyright (c) 1998-1999 by Scriptics Corporation.
  7. # All rights reserved.
  8. #
  9. # RCS: @(#) $Id: id.test,v 1.6 2002/07/13 21:52:34 dgp Exp $
  10. package require tcltest 2.1
  11. namespace import -force tcltest::configure
  12. namespace import -force tcltest::testsDirectory
  13. configure -testdir [file join [pwd] [file dirname [info script]]]
  14. configure -loadfile [file join [testsDirectory] constraints.tcl]
  15. tcltest::loadTestedCommands
  16. test id-1.1 {WindowIdCleanup, delaying window release} {unixOnly testwrapper} {
  17.     bind all <Destroy> {lappend x %W}
  18.     catch {unset map}
  19.     frame .f
  20.     set j 0
  21.     foreach i {a b c d e f g h i j k l m n o p q} {
  22. toplevel .f.$i -height 50 -width 100
  23. wm geometry .f.$i +$j+$j
  24. incr j 10
  25. update
  26. set map([winfo id .f.$i]) .f.$i
  27. set map([testwrapper .f.$i]) wrapper.f.$i
  28.     }
  29.     set x {}
  30.     destroy .f
  31.     # Destroy events should have occurred for all windows.
  32.     set result [list [lsort $x]]
  33.     set x {}
  34.     update idletasks
  35.     set reused {}
  36.     foreach i {a b c d e} {
  37. set w .${i}2
  38. frame $w -height 20 -width 100 -bd 2 -relief raised
  39. pack $w
  40. if [info exists map([winfo id $w])] {
  41.     lappend reused $map([winfo id $w])
  42. }
  43. set map([winfo id $w]) $w
  44.     }
  45.     # No window ids should have been reused: stale Destroy events still
  46.     # pending in queue.
  47.     lappend result [lsort $reused]
  48.     # Wait a few seconds, then try again;  ids should still not have
  49.     # been re-used.
  50.     set y 0
  51.     after 2000 {set y 1}
  52.     tkwait variable y
  53.     foreach i {a b c} {
  54. set w .${i}3
  55. frame $w -height 20 -width 100 -bd 2 -relief raised
  56. pack $w
  57. if [info exists map([winfo id $w])] {
  58.     lappend reused $map([winfo id $w])
  59. }
  60. set map([winfo id $w])] $w
  61.     }
  62.     # Ids should not yet have been reused.
  63.     lappend result [lsort $reused]
  64.     # Wait a few more seconds, to give ids enough time to be recycled.
  65.     set y 0
  66.     after 6000 {set y 1}
  67.     tkwait variable y
  68.     foreach i {a b c d e f} {
  69. set w .${i}4
  70. frame $w -height 20 -width 100 -bd 2 -relief raised
  71. pack $w
  72. if [info exists map([winfo id $w])] {
  73.     lappend reused $map([winfo id $w])
  74. }
  75. set map([winfo id $w])] $w
  76.     }
  77.     # Ids should be reused now, due to time delay.  Destroy events should
  78.     # have been discarded.
  79.     lappend result [lsort $reused] [lsort $x]
  80. } {{.f .f.a .f.b .f.c .f.d .f.e .f.f .f.g .f.h .f.i .f.j .f.k .f.l .f.m .f.n .f.o .f.p .f.q} {} {} {.f.o .f.p .f.q wrapper.f.p wrapper.f.q} {}}
  81. bind all <Destroy> {}
  82. # cleanup
  83. ::tcltest::cleanupTests
  84. return