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

通讯编程

开发平台:

Visual C++

  1. # This file is a Tcl script to test out the "winfo" command.  It is
  2. # organized in the standard fashion for Tcl tests.
  3. #
  4. # Copyright (c) 1994 The Regents of the University of California.
  5. # Copyright (c) 1994-1997 Sun Microsystems, Inc.
  6. # Copyright (c) 1998-1999 by Scriptics Corporation.
  7. # All rights reserved.
  8. #
  9. # RCS: @(#) $Id: winfo.test,v 1.9.2.1 2005/10/10 15:19:41 patthoyts 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. # eatColors --
  17. # Creates a toplevel window and allocates enough colors in it to
  18. # use up all the slots in the colormap.
  19. #
  20. # Arguments:
  21. # w - Name of toplevel window to create.
  22. # options - Options for w, such as "-colormap new".
  23. proc eatColors {w {options ""}} {
  24.     catch {destroy $w}
  25.     eval toplevel $w $options
  26.     wm geom $w +0+0
  27.     canvas $w.c -width 400 -height 200 -bd 0
  28.     pack $w.c
  29.     for {set y 0} {$y < 8} {incr y} {
  30. for {set x 0} {$x < 40} {incr x} {
  31.     set color [format #%02x%02x%02x [expr $x*6] [expr $y*30] 0]
  32.     $w.c create rectangle [expr 10*$x] [expr 20*$y] 
  33.     [expr 10*$x + 10] [expr 20*$y + 20] -outline {} 
  34.     -fill $color
  35. }
  36.     }
  37.     update
  38. }
  39. # XXX - This test file is woefully incomplete.  At present, only a
  40. # few of the winfo options are tested.
  41. test winfo-1.1 {"winfo atom" command} {
  42.     list [catch {winfo atom} msg] $msg
  43. } {1 {wrong # args: should be "winfo atom ?-displayof window? name"}}
  44. test winfo-1.2 {"winfo atom" command} {
  45.     list [catch {winfo atom a b} msg] $msg
  46. } {1 {wrong # args: should be "winfo atom ?-displayof window? name"}}
  47. test winfo-1.3 {"winfo atom" command} {
  48.     list [catch {winfo atom a b c d} msg] $msg
  49. } {1 {wrong # args: should be "winfo atom ?-displayof window? name"}}
  50. test winfo-1.4 {"winfo atom" command} {
  51.     list [catch {winfo atom -displayof geek foo} msg] $msg
  52. } {1 {bad window path name "geek"}}
  53. test winfo-1.5 {"winfo atom" command} {
  54.     winfo atom PRIMARY
  55. } 1
  56. test winfo-1.6 {"winfo atom" command} {
  57.     winfo atom -displayof . PRIMARY
  58. } 1
  59. test winfo-2.1 {"winfo atomname" command} {
  60.     list [catch {winfo atomname} msg] $msg
  61. } {1 {wrong # args: should be "winfo atomname ?-displayof window? id"}}
  62. test winfo-2.2 {"winfo atomname" command} {
  63.     list [catch {winfo atomname a b} msg] $msg
  64. } {1 {wrong # args: should be "winfo atomname ?-displayof window? id"}}
  65. test winfo-2.3 {"winfo atomname" command} {
  66.     list [catch {winfo atomname a b c d} msg] $msg
  67. } {1 {wrong # args: should be "winfo atomname ?-displayof window? id"}}
  68. test winfo-2.4 {"winfo atomname" command} {
  69.     list [catch {winfo atomname -displayof geek foo} msg] $msg
  70. } {1 {bad window path name "geek"}}
  71. test winfo-2.5 {"winfo atomname" command} {
  72.     list [catch {winfo atomname 44215} msg] $msg
  73. } {1 {no atom exists with id "44215"}}
  74. test winfo-2.6 {"winfo atomname" command} {
  75.     winfo atomname 2
  76. } SECONDARY
  77. test winfo-2.7 {"winfo atom" command} {
  78.     winfo atomname -displayof . 2
  79. } SECONDARY
  80. # Some tests require the "pseudocolor" visual class.
  81. testConstraint pseudocolor [expr { ([winfo depth .] == 8) 
  82. && ([winfo visual .] == "pseudocolor")}]
  83. test winfo-3.1 {"winfo colormapfull" command} {pseudocolor} {
  84.     list [catch {winfo colormapfull} msg] $msg
  85. } {1 {wrong # args: should be "winfo colormapfull window"}}
  86. test winfo-3.2 {"winfo colormapfull" command} {pseudocolor} {
  87.     list [catch {winfo colormapfull a b} msg] $msg
  88. } {1 {wrong # args: should be "winfo colormapfull window"}}
  89. test winfo-3.3 {"winfo colormapfull" command} {pseudocolor} {
  90.     list [catch {winfo colormapfull foo} msg] $msg
  91. } {1 {bad window path name "foo"}}
  92. test winfo-3.4 {"winfo colormapfull" command} {macOrUnix pseudocolor} {
  93.     eatColors .t {-colormap new}
  94.     set result [list [winfo colormapfull .] [winfo colormapfull .t]]
  95.     .t.c delete 34
  96.     lappend result [winfo colormapfull .t]
  97.     .t.c create rectangle 30 30 80 80 -fill #441739
  98.     lappend result [winfo colormapfull .t]
  99.     .t.c create rectangle 40 40 90 90 -fill #ffeedd
  100.     lappend result [winfo colormapfull .t]
  101.     destroy .t.c
  102.     lappend result [winfo colormapfull .t]
  103. } {0 1 0 0 1 0}
  104. catch {destroy .t}
  105. toplevel .t -width 550 -height 400
  106. frame .t.f -width 80 -height 60 -bd 2 -relief raised
  107. place .t.f -x 50 -y 50
  108. wm geom .t +0+0
  109. tkwait visibility .t.f
  110. test winfo-4.1 {"winfo containing" command} {
  111.     list [catch {winfo containing 22} msg] $msg
  112. } {1 {wrong # args: should be "winfo containing ?-displayof window? rootX rootY"}}
  113. test winfo-4.2 {"winfo containing" command} {
  114.     list [catch {winfo containing a b c} msg] $msg
  115. } {1 {wrong # args: should be "winfo containing ?-displayof window? rootX rootY"}}
  116. test winfo-4.3 {"winfo containing" command} {
  117.     list [catch {winfo containing a b c d e} msg] $msg
  118. } {1 {wrong # args: should be "winfo containing ?-displayof window? rootX rootY"}}
  119. test winfo-4.4 {"winfo containing" command} {
  120.     list [catch {winfo containing -displayof geek 25 30} msg] $msg
  121. } {1 {bad window path name "geek"}}
  122. test winfo-4.5 {"winfo containing" command} {
  123.     winfo containing [winfo rootx .t.f] [winfo rooty .t.f]
  124. } .t.f
  125. test winfo-4.6 {"winfo containing" command} {nonPortable} {
  126.     winfo containing [expr [winfo rootx .t.f]-1] [expr [winfo rooty .t.f]-1]
  127. } .t
  128. test winfo-4.7 {"winfo containing" command} {
  129.     set x [winfo containing -display .t.f [expr [winfo rootx .t]+600] 
  130.     [expr [winfo rooty .t.f]+450]]
  131.     expr {($x == ".") || ($x == "")}
  132. } {1}
  133. destroy .t
  134. test winfo-5.1 {"winfo interps" command} {
  135.     list [catch {winfo interps a} msg] $msg
  136. } {1 {wrong # args: should be "winfo interps ?-displayof window?"}}
  137. test winfo-5.2 {"winfo interps" command} {
  138.     list [catch {winfo interps a b c} msg] $msg
  139. } {1 {wrong # args: should be "winfo interps ?-displayof window?"}}
  140. test winfo-5.3 {"winfo interps" command} {
  141.     list [catch {winfo interps -displayof geek} msg] $msg
  142. } {1 {bad window path name "geek"}}
  143. test winfo-5.4 {"winfo interps" command} {unixOnly} {
  144.     expr [lsearch -exact [winfo interps] [tk appname]] >= 0
  145. } {1}
  146. test winfo-5.5 {"winfo interps" command} {unixOnly} {
  147.     expr [lsearch -exact [winfo interps -displayof .] [tk appname]] >= 0
  148. } {1}
  149. test winfo-6.1 {"winfo exists" command} {
  150.     list [catch {winfo exists} msg] $msg
  151. } {1 {wrong # args: should be "winfo exists window"}}
  152. test winfo-6.2 {"winfo exists" command} {
  153.     list [catch {winfo exists a b} msg] $msg
  154. } {1 {wrong # args: should be "winfo exists window"}}
  155. test winfo-6.3 {"winfo exists" command} {
  156.     winfo exists gorp
  157. } {0}
  158. test winfo-6.4 {"winfo exists" command} {
  159.     winfo exists .
  160. } {1}
  161. test winfo-6.5 {"winfo exists" command} {
  162.     button .b -text "Test button"
  163.     set x [winfo exists .b]
  164.     pack .b
  165.     update
  166.     bind .b <Destroy> {lappend x [winfo exists .x]}
  167.     destroy .b
  168.     lappend x [winfo exists .x]
  169. } {1 0 0}
  170. catch {destroy .b}
  171. button .b -text "Help"
  172. update
  173. test winfo-7.1 {"winfo pathname" command} {
  174.     list [catch {winfo pathname} msg] $msg
  175. } {1 {wrong # args: should be "winfo pathname ?-displayof window? id"}}
  176. test winfo-7.2 {"winfo pathname" command} {
  177.     list [catch {winfo pathname a b} msg] $msg
  178. } {1 {wrong # args: should be "winfo pathname ?-displayof window? id"}}
  179. test winfo-7.3 {"winfo pathname" command} {
  180.     list [catch {winfo pathname a b c d} msg] $msg
  181. } {1 {wrong # args: should be "winfo pathname ?-displayof window? id"}}
  182. test winfo-7.4 {"winfo pathname" command} {
  183.     list [catch {winfo pathname -displayof geek 25} msg] $msg
  184. } {1 {bad window path name "geek"}}
  185. test winfo-7.5 {"winfo pathname" command} {
  186.     list [catch {winfo pathname xyz} msg] $msg
  187. } {1 {expected integer but got "xyz"}}
  188. test winfo-7.6 {"winfo pathname" command} {
  189.     list [catch {winfo pathname 224} msg] $msg
  190. } {1 {window id "224" doesn't exist in this application}}
  191. test winfo-7.7 {"winfo pathname" command} {
  192.     winfo pathname -displayof .b [winfo id .]
  193. } {.}
  194. test winfo-7.8 {"winfo pathname" command} {unixOnly testwrapper} {
  195.     winfo pathname [testwrapper .]
  196. } {}
  197. test winfo-8.1 {"winfo pointerx" command} {
  198.     catch [winfo pointerx .b]
  199. } 1
  200. test winfo-8.2 {"winfo pointery" command} {
  201.     catch [winfo pointery .b]
  202. } 1
  203. test winfo-8.3 {"winfo pointerxy" command} {
  204.     catch [winfo pointerxy .b]
  205. } 1
  206. test winfo-9.1 {"winfo viewable" command} {
  207.     list [catch {winfo viewable} msg] $msg
  208. } {1 {wrong # args: should be "winfo viewable window"}}
  209. test winfo-9.2 {"winfo viewable" command} {
  210.     list [catch {winfo viewable foo} msg] $msg
  211. } {1 {bad window path name "foo"}}
  212. test winfo-9.3 {"winfo viewable" command} {
  213.     winfo viewable .
  214. } {1}
  215. test winfo-9.4 {"winfo viewable" command} {
  216.     wm iconify .
  217.     winfo viewable .
  218. } {0}
  219. wm deiconify .
  220. test winfo-9.5 {"winfo viewable" command} {
  221.     frame .f1 -width 100 -height 100 -relief raised -bd 2
  222.     place .f1 -x 0 -y 0
  223.     frame .f1.f2 -width 50 -height 50 -relief raised -bd 2
  224.     place .f1.f2 -x 0 -y 0
  225.     update
  226.     list [winfo viewable .f1] [winfo viewable .f1.f2]
  227. } {1 1}
  228. test winfo-9.6 {"winfo viewable" command} {
  229.     deleteWindows
  230.     frame .f1 -width 100 -height 100 -relief raised -bd 2
  231.     frame .f1.f2 -width 50 -height 50 -relief raised -bd 2
  232.     place .f1.f2 -x 0 -y 0
  233.     update
  234.     list [winfo viewable .f1] [winfo viewable .f1.f2]
  235. } {0 0}
  236. test winfo-9.7 {"winfo viewable" command} {
  237.     deleteWindows
  238.     frame .f1 -width 100 -height 100 -relief raised -bd 2
  239.     place .f1 -x 0 -y 0
  240.     frame .f1.f2 -width 50 -height 50 -relief raised -bd 2
  241.     place .f1.f2 -x 0 -y 0
  242.     update
  243.     wm iconify .
  244.     list [winfo viewable .f1] [winfo viewable .f1.f2]
  245. } {0 0}
  246. wm deiconify .
  247. deleteWindows
  248. test winfo-10.1 {"winfo visualid" command} {
  249.     list [catch {winfo visualid} msg] $msg
  250. } {1 {wrong # args: should be "winfo visualid window"}}
  251. test winfo-10.2 {"winfo visualid" command} {
  252.     list [catch {winfo visualid gorp} msg] $msg
  253. } {1 {bad window path name "gorp"}}
  254. test winfo-10.3 {"winfo visualid" command} {
  255.     expr 2+[winfo visualid .]-[winfo visualid .]
  256. } {2}
  257. test winfo-11.1 {"winfo visualid" command} {
  258.     list [catch {winfo visualsavailable} msg] $msg
  259. } {1 {wrong # args: should be "winfo visualsavailable window ?includeids?"}}
  260. test winfo-11.2 {"winfo visualid" command} {
  261.     list [catch {winfo visualsavailable gorp} msg] $msg
  262. } {1 {bad window path name "gorp"}}
  263. test winfo-11.3 {"winfo visualid" command} {
  264.     list [catch {winfo visualsavailable . includeids foo} msg] $msg
  265. } {1 {wrong # args: should be "winfo visualsavailable window ?includeids?"}}
  266. test winfo-11.4 {"winfo visualid" command} {
  267.     llength [lindex [winfo visualsa .] 0]
  268. } {2}
  269. test winfo-11.5 {"winfo visualid" command} {
  270.     llength [lindex [winfo visualsa . includeids] 0]
  271. } {3}
  272. test winfo-11.6 {"winfo visualid" command} {
  273.     set x [lindex [lindex [winfo visualsa . includeids] 0] 2]
  274.     expr $x + 2 - $x
  275. } {2}
  276. test winfo-12.1 {GetDisplayOf procedure} {
  277.     list [catch {winfo atom - foo x} msg] $msg
  278. } {1 {wrong # args: should be "winfo atom ?-displayof window? name"}}
  279. test winfo-12.2 {GetDisplayOf procedure} {
  280.     list [catch {winfo atom -d bad_window x} msg] $msg
  281. } {1 {bad window path name "bad_window"}}
  282. # Some embedding tests
  283. proc MakeEmbed {} {
  284.     frame .con -container 1
  285.     pack .con -expand yes -fill both
  286.     toplevel .emb -use [winfo id .con] -bd 0 -highlightthickness 0
  287.     button .emb.b
  288.     pack .emb.b -expand yes -fill both
  289.     update
  290. }
  291. test winfo-13.1 {root coordinates of embedded toplevel} {
  292.     MakeEmbed
  293.     set z [expr [winfo rootx .emb] == [winfo rootx .con] && 
  294. [winfo rooty .emb] == [winfo rooty .con]]
  295.     destroy .emb
  296.     destroy .con
  297.     set z
  298. } {1}
  299. test winfo-13.2 {destroying embedded toplevel} {
  300.     destroy .emb
  301.     update
  302.     expr [winfo exists .emb.b] || [winfo exists .con]
  303. } 0
  304. deleteWindows
  305. test winfo-13.3 {destroying container window} {
  306.     MakeEmbed
  307.     destroy .con
  308.     update
  309.     set z [expr [winfo exists .emb.b] || [winfo exists .emb]]
  310.     catch {destroy .emb}
  311.     catch {destroy .con}
  312.     set z
  313. } 0
  314. deleteWindows
  315. test winfo-13.4 {[winfo containing] with embedded windows} {
  316.     MakeEmbed
  317.     button .b
  318.     pack .b -expand yes -fill both
  319.     update
  320.     set z [string compare 
  321. [winfo containing [winfo rootx .emb.b] [winfo rooty .emb.b]] .emb.b]
  322.     catch {destroy .con}
  323.     catch {destroy .emb}
  324.     set z
  325. } 0
  326. test winfo-14.1 {usage} {
  327.     list [catch {winfo ismapped} msg] $msg
  328. } {1 {wrong # args: should be "winfo ismapped window"}}
  329. test winfo-14.2 {usage} {
  330.     list [catch {winfo ismapped . .} msg] $msg
  331. } {1 {wrong # args: should be "winfo ismapped window"}}
  332. test winfo-14.3 {initially unmapped} {
  333.     catch {destroy .t}
  334.     toplevel .t
  335.     winfo ismapped .t
  336. } 0
  337. test winfo-14.4 {mapped at idle time} {
  338.     catch {destroy .t}
  339.     toplevel .t
  340.     update idletasks
  341.     winfo ismapped .t
  342. } 1
  343. deleteWindows
  344. # cleanup
  345. ::tcltest::cleanupTests
  346. return