1 # This file is a Tcl script to test out the "winfo" command. It is
2 # organized in the standard fashion for Tcl tests.
4 # Copyright (c) 1994 The Regents of the University of California.
5 # Copyright (c) 1994-1997 Sun Microsystems, Inc.
7 # See the file "license.terms" for information on usage and redistribution
8 # of this file, and for a DISCLAIMER OF ALL WARRANTIES.
12 if {[info procs test] != "test"} {
16 foreach i [winfo children .] {
23 # Creates a toplevel window and allocates enough colors in it to
24 # use up all the slots in the colormap.
27 # w - Name of toplevel window to create.
28 # options - Options for w, such as "-colormap new".
30 proc eatColors {w {options ""}} {
32 eval toplevel $w $options
34 canvas $w.c -width 400 -height 200 -bd 0
36 for {set y 0} {$y < 8} {incr y} {
37 for {set x 0} {$x < 40} {incr x} {
38 set color [format #%02x%02x%02x [expr $x*6] [expr $y*30] 0]
39 $w.c create rectangle [expr 10*$x] [expr 20*$y] \
40 [expr 10*$x + 10] [expr 20*$y + 20] -outline {} \
47 # XXX - This test file is woefully incomplete. At present, only a
48 # few of the winfo options are tested.
50 test winfo-1.1 {"winfo atom" command} {
51 list [catch {winfo atom} msg] $msg
52 } {1 {wrong # args: should be "winfo atom ?-displayof window? name"}}
53 test winfo-1.2 {"winfo atom" command} {
54 list [catch {winfo atom a b} msg] $msg
55 } {1 {wrong # args: should be "winfo atom ?-displayof window? name"}}
56 test winfo-1.3 {"winfo atom" command} {
57 list [catch {winfo atom a b c d} msg] $msg
58 } {1 {wrong # args: should be "winfo atom ?-displayof window? name"}}
59 test winfo-1.4 {"winfo atom" command} {
60 list [catch {winfo atom -displayof geek foo} msg] $msg
61 } {1 {bad window path name "geek"}}
62 test winfo-1.5 {"winfo atom" command} {
65 test winfo-1.6 {"winfo atom" command} {
66 winfo atom -displayof . PRIMARY
69 test winfo-2.1 {"winfo atomname" command} {
70 list [catch {winfo atomname} msg] $msg
71 } {1 {wrong # args: should be "winfo atomname ?-displayof window? id"}}
72 test winfo-2.2 {"winfo atomname" command} {
73 list [catch {winfo atomname a b} msg] $msg
74 } {1 {wrong # args: should be "winfo atomname ?-displayof window? id"}}
75 test winfo-2.3 {"winfo atomname" command} {
76 list [catch {winfo atomname a b c d} msg] $msg
77 } {1 {wrong # args: should be "winfo atomname ?-displayof window? id"}}
78 test winfo-2.4 {"winfo atomname" command} {
79 list [catch {winfo atomname -displayof geek foo} msg] $msg
80 } {1 {bad window path name "geek"}}
81 test winfo-2.5 {"winfo atomname" command} {
82 list [catch {winfo atomname 44215} msg] $msg
83 } {1 {no atom exists with id "44215"}}
84 test winfo-2.6 {"winfo atomname" command} {
87 test winfo-2.7 {"winfo atom" command} {
88 winfo atomname -displayof . 2
91 if {([winfo depth .] == 8) && ([winfo visual .] == "pseudocolor")} {
92 test winfo-3.1 {"winfo colormapfull" command} {
93 list [catch {winfo colormapfull} msg] $msg
94 } {1 {wrong # args: should be "winfo colormapfull window"}}
95 test winfo-3.2 {"winfo colormapfull" command} {
96 list [catch {winfo colormapfull a b} msg] $msg
97 } {1 {wrong # args: should be "winfo colormapfull window"}}
98 test winfo-3.3 {"winfo colormapfull" command} {
99 list [catch {winfo colormapfull foo} msg] $msg
100 } {1 {bad window path name "foo"}}
101 test winfo-3.4 {"winfo colormapfull" command} {macOrUnix} {
102 eatColors .t {-colormap new}
103 set result [list [winfo colormapfull .] [winfo colormapfull .t]]
105 lappend result [winfo colormapfull .t]
106 .t.c create rectangle 30 30 80 80 -fill #441739
107 lappend result [winfo colormapfull .t]
108 .t.c create rectangle 40 40 90 90 -fill #ffeedd
109 lappend result [winfo colormapfull .t]
111 lappend result [winfo colormapfull .t]
117 toplevel .t -width 550 -height 400
118 frame .t.f -width 80 -height 60 -bd 2 -relief raised
119 place .t.f -x 50 -y 50
122 test winfo-4.1 {"winfo containing" command} {
123 list [catch {winfo containing 22} msg] $msg
124 } {1 {wrong # args: should be "winfo containing ?-displayof window? rootX rootY"}}
125 test winfo-4.2 {"winfo containing" command} {
126 list [catch {winfo containing a b c} msg] $msg
127 } {1 {wrong # args: should be "winfo containing ?-displayof window? rootX rootY"}}
128 test winfo-4.3 {"winfo containing" command} {
129 list [catch {winfo containing a b c d e} msg] $msg
130 } {1 {wrong # args: should be "winfo containing ?-displayof window? rootX rootY"}}
131 test winfo-4.4 {"winfo containing" command} {
132 list [catch {winfo containing -displayof geek 25 30} msg] $msg
133 } {1 {bad window path name "geek"}}
134 test winfo-4.5 {"winfo containing" command} {
135 winfo containing [winfo rootx .t.f] [winfo rooty .t.f]
137 test winfo-4.6 {"winfo containing" command} {nonPortable} {
138 winfo containing [expr [winfo rootx .t.f]-1] [expr [winfo rooty .t.f]-1]
140 test winfo-4.7 {"winfo containing" command} {
141 set x [winfo containing -display .t.f [expr [winfo rootx .t]+600] \
142 [expr [winfo rooty .t.f]+450]]
143 expr {($x == ".") || ($x == "")}
147 test winfo-5.1 {"winfo interps" command} {
148 list [catch {winfo interps a} msg] $msg
149 } {1 {wrong # args: should be "winfo interps ?-displayof window?"}}
150 test winfo-5.2 {"winfo interps" command} {
151 list [catch {winfo interps a b c} msg] $msg
152 } {1 {wrong # args: should be "winfo interps ?-displayof window?"}}
153 test winfo-5.3 {"winfo interps" command} {
154 list [catch {winfo interps -displayof geek} msg] $msg
155 } {1 {bad window path name "geek"}}
156 test winfo-5.4 {"winfo interps" command} {unixOnly} {
157 expr [lsearch -exact [winfo interps] [tk appname]] >= 0
159 test winfo-5.5 {"winfo interps" command} {unixOnly} {
160 expr [lsearch -exact [winfo interps -displayof .] [tk appname]] >= 0
163 test winfo-6.1 {"winfo exists" command} {
164 list [catch {winfo exists} msg] $msg
165 } {1 {wrong # args: should be "winfo exists window"}}
166 test winfo-6.2 {"winfo exists" command} {
167 list [catch {winfo exists a b} msg] $msg
168 } {1 {wrong # args: should be "winfo exists window"}}
169 test winfo-6.3 {"winfo exists" command} {
172 test winfo-6.4 {"winfo exists" command} {
175 test winfo-6.5 {"winfo exists" command} {
176 button .b -text "Test button"
177 set x [winfo exists .b]
180 bind .b <Destroy> {lappend x [winfo exists .x]}
182 lappend x [winfo exists .x]
186 button .b -text "Help"
188 test winfo-7.1 {"winfo pathname" command} {
189 list [catch {winfo pathname} msg] $msg
190 } {1 {wrong # args: should be "winfo pathname ?-displayof window? id"}}
191 test winfo-7.2 {"winfo pathname" command} {
192 list [catch {winfo pathname a b} msg] $msg
193 } {1 {wrong # args: should be "winfo pathname ?-displayof window? id"}}
194 test winfo-7.3 {"winfo pathname" command} {
195 list [catch {winfo pathname a b c d} msg] $msg
196 } {1 {wrong # args: should be "winfo pathname ?-displayof window? id"}}
197 test winfo-7.4 {"winfo pathname" command} {
198 list [catch {winfo pathname -displayof geek 25} msg] $msg
199 } {1 {bad window path name "geek"}}
200 test winfo-7.5 {"winfo pathname" command} {
201 list [catch {winfo pathname xyz} msg] $msg
202 } {1 {expected integer but got "xyz"}}
203 test winfo-7.6 {"winfo pathname" command} {
204 list [catch {winfo pathname 224} msg] $msg
205 } {1 {window id "224" doesn't exist in this application}}
206 test winfo-7.7 {"winfo pathname" command} {
207 winfo pathname -displayof .b [winfo id .]
210 if {[string compare testwrapper [info commands testwrapper]] == 0} {
211 puts "This application hasn't been compiled with the testwrapper command,"
212 puts "therefore I am skipping all of these tests."
214 test winfo-7.8 {"winfo pathname" command} {unixOnly} {
215 winfo pathname [testwrapper .]
219 test winfo-8.1 {"winfo pointerx" command} {
220 catch [winfo pointerx .b]
222 test winfo-8.2 {"winfo pointery" command} {
223 catch [winfo pointery .b]
225 test winfo-8.3 {"winfo pointerxy" command} {
226 catch [winfo pointerxy .b]
229 test winfo-9.1 {"winfo viewable" command} {
230 list [catch {winfo viewable} msg] $msg
231 } {1 {wrong # args: should be "winfo viewable window"}}
232 test winfo-9.2 {"winfo viewable" command} {
233 list [catch {winfo viewable foo} msg] $msg
234 } {1 {bad window path name "foo"}}
235 test winfo-9.3 {"winfo viewable" command} {
238 test winfo-9.4 {"winfo viewable" command} {
243 test winfo-9.5 {"winfo viewable" command} {
244 frame .f1 -width 100 -height 100 -relief raised -bd 2
246 frame .f1.f2 -width 50 -height 50 -relief raised -bd 2
247 place .f1.f2 -x 0 -y 0
249 list [winfo viewable .f1] [winfo viewable .f1.f2]
251 test winfo-9.6 {"winfo viewable" command} {
252 eval destroy [winfo child .]
253 frame .f1 -width 100 -height 100 -relief raised -bd 2
254 frame .f1.f2 -width 50 -height 50 -relief raised -bd 2
255 place .f1.f2 -x 0 -y 0
257 list [winfo viewable .f1] [winfo viewable .f1.f2]
259 test winfo-9.7 {"winfo viewable" command} {
260 eval destroy [winfo child .]
261 frame .f1 -width 100 -height 100 -relief raised -bd 2
263 frame .f1.f2 -width 50 -height 50 -relief raised -bd 2
264 place .f1.f2 -x 0 -y 0
267 list [winfo viewable .f1] [winfo viewable .f1.f2]
270 eval destroy [winfo child .]
272 test winfo-10.1 {"winfo visualid" command} {
273 list [catch {winfo visualid} msg] $msg
274 } {1 {wrong # args: should be "winfo visualid window"}}
275 test winfo-10.2 {"winfo visualid" command} {
276 list [catch {winfo visualid gorp} msg] $msg
277 } {1 {bad window path name "gorp"}}
278 test winfo-10.3 {"winfo visualid" command} {
279 expr 2+[winfo visualid .]-[winfo visualid .]
282 test winfo-11.1 {"winfo visualid" command} {
283 list [catch {winfo visualsavailable} msg] $msg
284 } {1 {wrong # args: should be "winfo visualsavailable window ?includeids?"}}
285 test winfo-11.2 {"winfo visualid" command} {
286 list [catch {winfo visualsavailable gorp} msg] $msg
287 } {1 {bad window path name "gorp"}}
288 test winfo-11.3 {"winfo visualid" command} {
289 list [catch {winfo visualsavailable . includeids foo} msg] $msg
290 } {1 {wrong # args: should be "winfo visualsavailable window ?includeids?"}}
291 test winfo-11.4 {"winfo visualid" command} {
292 llength [lindex [winfo visualsa .] 0]
294 test winfo-11.5 {"winfo visualid" command} {
295 llength [lindex [winfo visualsa . includeids] 0]
297 test winfo-11.6 {"winfo visualid" command} {
298 set x [lindex [lindex [winfo visualsa . includeids] 0] 2]
302 test winfo-12.1 {GetDisplayOf procedure} {
303 list [catch {winfo atom - foo x} msg] $msg
304 } {1 {wrong # args: should be "winfo atom ?-displayof window? name"}}
305 test winfo-12.2 {GetDisplayOf procedure} {
306 list [catch {winfo atom -d bad_window x} msg] $msg
307 } {1 {bad window path name "bad_window"}}
309 # Some embedding tests
313 frame .con -container 1
314 pack .con -expand yes -fill both
315 toplevel .emb -use [winfo id .con] -bd 0 -highlightthickness 0
317 pack .emb.b -expand yes -fill both
320 test winfo-13.1 {root coordinates of embedded toplevel} {macOrUnix} {
322 set z [expr [winfo rootx .emb] == [winfo rootx .con] && \
323 [winfo rooty .emb] == [winfo rooty .con]]
328 test winfo-13.2 {destroying embedded toplevel} {macOrUnix} {
331 expr [winfo exists .emb.b] || [winfo exists .con]
334 foreach i [winfo children .] {
338 test winfo-13.3 {destroying container window} {macOrUnix} {
342 set z [expr [winfo exists .emb.b] || [winfo exists .emb]]
348 foreach i [winfo children .] {
352 test winfo-13.4 {[winfo containing] with embedded windows} {macOrUnix} {
355 pack .b -expand yes -fill both
358 set z [string compare \
359 [winfo containing [winfo rootx .emb.b] [winfo rooty .emb.b]] .emb.b]
365 foreach i [winfo children .] {