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

通讯编程

开发平台:

Visual C++

  1. # This file is a Tcl script to test the procedures in the file
  2. # tkWindow.c.  It is organized in the standard fashion for Tcl tests.
  3. #
  4. # Copyright (c) 1995 Sun Microsystems, Inc.
  5. # Copyright (c) 1998-1999 by Scriptics Corporation.
  6. # All rights reserved.
  7. #
  8. # RCS: @(#) $Id: window.test,v 1.7.2.1 2004/02/13 01:43:05 hobbs Exp $
  9. package require tcltest 2.1
  10. namespace import -force tcltest::configure
  11. namespace import -force tcltest::testsDirectory
  12. namespace import -force tcltest::interpreter
  13. namespace import -force tcltest::makeFile
  14. namespace import -force tcltest::removeFile
  15. configure -testdir [file join [pwd] [file dirname [info script]]]
  16. configure -loadfile [file join [testsDirectory] constraints.tcl]
  17. tcltest::loadTestedCommands
  18. update
  19. # XXX This file is woefully incomplete.  Right now it only tests
  20. # a few parts of a few procedures in tkWindow.c
  21. test window-1.1 {Tk_CreateWindowFromPath procedure, parent dead} {
  22.     proc bgerror msg {
  23. global x errorInfo
  24. set x [list $msg $errorInfo]
  25.     }
  26.     set x unchanged
  27.     catch {destroy .t}
  28.     frame .t -width 100 -height 50
  29.     place .t -x 10 -y 10
  30.     bind .t <Destroy> {button .t.b -text hello; pack .t.b}
  31.     update
  32.     destroy .t
  33.     update
  34.     rename bgerror {}
  35.     set x
  36. } {{can't create window: parent has been destroyed} {can't create window: parent has been destroyed
  37.     while executing
  38. "button .t.b -text hello"
  39.     (command bound to event)}}
  40. # Most of the tests below don't produce meaningful results;  they
  41. # will simply dump core if there are bugs.
  42. test window-2.1 {Tk_DestroyWindow procedure, destroy handler deletes parent} {
  43.     toplevel .t -width 300 -height 200
  44.     wm geometry .t +0+0
  45.     frame .t.f  -width 200 -height 200 -relief raised -bd 2
  46.     place .t.f -x 0 -y 0
  47.     frame .t.f.f -width 100 -height 100 -relief raised -bd 2
  48.     place .t.f.f -relx 1 -rely 1 -anchor se
  49.     bind .t.f <Destroy> {destroy .t}
  50.     update
  51.     destroy .t.f
  52. } {}
  53. test window-2.2 {Tk_DestroyWindow procedure, destroy handler deletes parent} {
  54.     toplevel .t -width 300 -height 200
  55.     wm geometry .t +0+0
  56.     frame .t.f  -width 200 -height 200 -relief raised -bd 2
  57.     place .t.f -x 0 -y 0
  58.     frame .t.f.f -width 100 -height 100 -relief raised -bd 2
  59.     place .t.f.f -relx 1 -rely 1 -anchor se
  60.     bind .t.f.f <Destroy> {destroy .t}
  61.     update
  62.     destroy .t.f
  63. } {}
  64. test window-2.3 {Tk_DestroyWindow procedure, destroy handler deletes parent} {
  65.     frame .f -width 80 -height 120 -relief raised -bd 2
  66.     place .f -relx 0.5 -rely 0.5 -anchor center
  67.     toplevel .f.t -width 300 -height 200
  68.     wm geometry .f.t +0+0
  69.     frame .f.t.f  -width 200 -height 200 -relief raised -bd 2
  70.     place .f.t.f -x 0 -y 0
  71.     frame .f.t.f.f -width 100 -height 100 -relief raised -bd 2
  72.     place .f.t.f.f -relx 1 -rely 1 -anchor se
  73.     update
  74.     destroy .f
  75. } {}
  76. test window-2.4 {Tk_DestroyWindow, cleanup half dead window at exit} 
  77.         unixOrWin {
  78.     set script [makeFile {
  79.         update
  80.         bind . <Destroy> exit
  81.         destroy .
  82.     } script]
  83.     set error [catch {exec [interpreter] $script -geometry 10x10+0+0} msg]
  84.     removeFile script
  85.     list $error $msg
  86. } {0 {}}
  87. test window-2.5 {Tk_DestroyWindow, cleanup half dead windows at exit} 
  88.         unixOrWin {
  89.     set script [makeFile {
  90.         toplevel .t
  91.         update
  92.         bind .t <Destroy> exit
  93.         destroy .t
  94.     } script]
  95.     set error [catch {exec [interpreter] $script -geometry 10x10+0+0} msg]
  96.     removeFile script
  97.     list $error $msg
  98. } {0 {}}
  99. test window-2.6 {Tk_DestroyWindow, cleanup half dead windows at exit} 
  100.         unixOrWin {
  101.     set script [makeFile {
  102.         toplevel .t
  103.         update
  104.         bind .t <Destroy> exit
  105.         destroy .
  106.     } script]
  107.     set error [catch {exec [interpreter] $script -geometry 10x10+0+0} msg]
  108.     removeFile script
  109.     list $error $msg
  110. } {0 {}}
  111. test window-2.7 {Tk_DestroyWindow, cleanup half dead windows at exit} 
  112.         unixOrWin {
  113.     set script [makeFile {
  114.         toplevel .t
  115.         toplevel .t.f
  116.         update
  117.         bind .t.f <Destroy> exit
  118.         destroy .
  119.     } script]
  120.     set error [catch {exec [interpreter] $script -geometry 10x10+0+0} msg]
  121.     removeFile script
  122.     list $error $msg
  123. } {0 {}}
  124. test window-2.8 {Tk_DestroyWindow, cleanup half dead windows at exit} 
  125.         unixOrWin {
  126.     set script [makeFile {
  127.         toplevel .t1
  128.         toplevel .t2
  129.         toplevel .t3
  130.         update
  131.         bind .t3 <Destroy> {destroy .t2}
  132.         bind .t2 <Destroy> {destroy .t1}
  133.         bind .t1 <Destroy> {exit 0}
  134.         destroy .t3
  135.     } script]
  136.     set error [catch {exec [interpreter] $script -geometry 10x10+0+0} msg]
  137.     removeFile script
  138.     list $error $msg
  139. } {0 {}}
  140. test window-2.9 {Tk_DestroyWindow, Destroy bindings evaluated after exit} 
  141.     unixOrWin {
  142.     set script [makeFile {
  143.         toplevel .t1
  144.         toplevel .t2
  145.         update
  146.         bind .t2 <Destroy> {puts "Destroy .t2" ; exit 1}
  147.         bind .t1 <Destroy> {puts "Destroy .t1" ; exit 0}
  148.         destroy .t2
  149.     } script]
  150.     set error [catch {exec [interpreter] $script -geometry 10x10+0+0} msg]
  151.     removeFile script
  152.     list $error $msg
  153. } {0 {Destroy .t2
  154. Destroy .t1}}
  155. test window-2.10 {Tk_DestroyWindow, Destroy binding evaluated once} unixOrWin {
  156.     set script [makeFile {
  157.         update
  158.         bind . <Destroy> {
  159.             puts "Destroy ."
  160.             bind . <Destroy> {puts "Re-Destroy ."}
  161.             exit 0
  162.         }
  163.         destroy .
  164.     } script]
  165.     set error [catch {exec [interpreter] $script -geometry 10x10+0+0} msg]
  166.     removeFile script
  167.     list $error $msg
  168. } {0 {Destroy .}}
  169. test window-2.11 {Tk_DestroyWindow, don't reanimate a half-dead window} 
  170.         unixOrWin {
  171.     set script [makeFile {
  172.         toplevel .t1
  173.         toplevel .t2
  174.         update
  175.         bind .t1 <Destroy> {
  176.             if {[catch {entry .t2.newchild}]} {
  177.                 puts YES
  178.             } else {
  179.                 puts NO
  180.             }
  181.         }
  182.         bind .t2 <Destroy> {exit}
  183.         destroy .t2
  184.     } script]
  185.     set error [catch {exec [interpreter] $script -geometry 10x10+0+0} msg]
  186.     removeFile script
  187.     list $error $msg
  188. } {0 YES}
  189. # Some tests require the testmenubar command
  190. testConstraint testmenubar [llength [info commands testmenubar]]
  191. test window-3.1 {Tk_MakeWindowExist procedure, stacking order and menubars} 
  192. {unixOnly testmenubar} {
  193.     catch {destroy .t}
  194.     toplevel .t -width 300 -height 200
  195.     wm geometry .t +0+0
  196.     pack [entry .t.e]
  197.     frame .t.f -bd 2 -relief raised
  198.     testmenubar window .t .t.f
  199.     update
  200.     # If stacking order isn't handle properly, generates an X error.
  201. } {}
  202. test window-3.2 {Tk_MakeWindowExist procedure, stacking order and menubars} 
  203. {unixOnly testmenubar} {
  204.     catch {destroy .t}
  205.     toplevel .t -width 300 -height 200
  206.     wm geometry .t +0+0
  207.     pack [entry .t.e]
  208.     pack [entry .t.e2]
  209.     update
  210.     frame .t.f -bd 2 -relief raised
  211.     raise .t.f .t.e
  212.     testmenubar window .t .t.f
  213.     update
  214.     # If stacking order isn't handled properly, generates an X error.
  215. } {}
  216. test window-4.1 {Tk_NameToWindow procedure} {testmenubar} {
  217.     catch {destroy .t}
  218.     list [catch {winfo geometry .t} msg] $msg
  219. } {1 {bad window path name ".t"}}
  220. test window-4.2 {Tk_NameToWindow procedure} {testmenubar} {
  221.     catch {destroy .t}
  222.     frame .t -width 100 -height 50
  223.     place .t -x 10 -y 10
  224.     update
  225.     list [catch {winfo geometry .t} msg] $msg
  226. } {0 100x50+10+10}
  227. test window-5.1 {Tk_MakeWindowExist procedure, stacking order and menubars} 
  228. {unixOnly testmenubar} {
  229.     catch {destroy .t}
  230.     toplevel .t -width 300 -height 200
  231.     wm geometry .t +0+0
  232.     pack [entry .t.e]
  233.     pack [entry .t.e2]
  234.     frame .t.f -bd 2 -relief raised
  235.     testmenubar window .t .t.f
  236.     update
  237.     lower .t.e2 .t.f
  238.     update
  239.     # If stacking order isn't handled properly, generates an X error.
  240. } {}
  241. # cleanup
  242. ::tcltest::cleanupTests
  243. return