summaryrefslogtreecommitdiffstats
path: root/tests/winfo.test
diff options
context:
space:
mode:
Diffstat (limited to 'tests/winfo.test')
-rw-r--r--tests/winfo.test361
1 files changed, 361 insertions, 0 deletions
diff --git a/tests/winfo.test b/tests/winfo.test
new file mode 100644
index 0000000..5d7292f
--- /dev/null
+++ b/tests/winfo.test
@@ -0,0 +1,361 @@
+# This file is a Tcl script to test out the "winfo" command. It is
+# organized in the standard fashion for Tcl tests.
+#
+# Copyright (c) 1994 The Regents of the University of California.
+# Copyright (c) 1994-1997 Sun Microsystems, Inc.
+#
+# See the file "license.terms" for information on usage and redistribution
+# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
+#
+# SCCS: @(#) winfo.test 1.19 97/05/16 08:49:01
+
+if {[info procs test] != "test"} {
+ source defs
+}
+
+foreach i [winfo children .] {
+ catch {destroy $i}
+}
+wm geometry . {}
+raise .
+
+# eatColors --
+# Creates a toplevel window and allocates enough colors in it to
+# use up all the slots in the colormap.
+#
+# Arguments:
+# w - Name of toplevel window to create.
+# options - Options for w, such as "-colormap new".
+
+proc eatColors {w {options ""}} {
+ catch {destroy $w}
+ eval toplevel $w $options
+ wm geom $w +0+0
+ canvas $w.c -width 400 -height 200 -bd 0
+ pack $w.c
+ for {set y 0} {$y < 8} {incr y} {
+ for {set x 0} {$x < 40} {incr x} {
+ set color [format #%02x%02x%02x [expr $x*6] [expr $y*30] 0]
+ $w.c create rectangle [expr 10*$x] [expr 20*$y] \
+ [expr 10*$x + 10] [expr 20*$y + 20] -outline {} \
+ -fill $color
+ }
+ }
+ update
+}
+
+# XXX - This test file is woefully incomplete. At present, only a
+# few of the winfo options are tested.
+
+test winfo-1.1 {"winfo atom" command} {
+ list [catch {winfo atom} msg] $msg
+} {1 {wrong # args: should be "winfo atom ?-displayof window? name"}}
+test winfo-1.2 {"winfo atom" command} {
+ list [catch {winfo atom a b} msg] $msg
+} {1 {wrong # args: should be "winfo atom ?-displayof window? name"}}
+test winfo-1.3 {"winfo atom" command} {
+ list [catch {winfo atom a b c d} msg] $msg
+} {1 {wrong # args: should be "winfo atom ?-displayof window? name"}}
+test winfo-1.4 {"winfo atom" command} {
+ list [catch {winfo atom -displayof geek foo} msg] $msg
+} {1 {bad window path name "geek"}}
+test winfo-1.5 {"winfo atom" command} {
+ winfo atom PRIMARY
+} 1
+test winfo-1.6 {"winfo atom" command} {
+ winfo atom -displayof . PRIMARY
+} 1
+
+test winfo-2.1 {"winfo atomname" command} {
+ list [catch {winfo atomname} msg] $msg
+} {1 {wrong # args: should be "winfo atomname ?-displayof window? id"}}
+test winfo-2.2 {"winfo atomname" command} {
+ list [catch {winfo atomname a b} msg] $msg
+} {1 {wrong # args: should be "winfo atomname ?-displayof window? id"}}
+test winfo-2.3 {"winfo atomname" command} {
+ list [catch {winfo atomname a b c d} msg] $msg
+} {1 {wrong # args: should be "winfo atomname ?-displayof window? id"}}
+test winfo-2.4 {"winfo atomname" command} {
+ list [catch {winfo atomname -displayof geek foo} msg] $msg
+} {1 {bad window path name "geek"}}
+test winfo-2.5 {"winfo atomname" command} {
+ list [catch {winfo atomname 44215} msg] $msg
+} {1 {no atom exists with id "44215"}}
+test winfo-2.6 {"winfo atomname" command} {
+ winfo atomname 2
+} SECONDARY
+test winfo-2.7 {"winfo atom" command} {
+ winfo atomname -displayof . 2
+} SECONDARY
+
+if {([winfo depth .] == 8) && ([winfo visual .] == "pseudocolor")} {
+ test winfo-3.1 {"winfo colormapfull" command} {
+ list [catch {winfo colormapfull} msg] $msg
+ } {1 {wrong # args: should be "winfo colormapfull window"}}
+ test winfo-3.2 {"winfo colormapfull" command} {
+ list [catch {winfo colormapfull a b} msg] $msg
+ } {1 {wrong # args: should be "winfo colormapfull window"}}
+ test winfo-3.3 {"winfo colormapfull" command} {
+ list [catch {winfo colormapfull foo} msg] $msg
+ } {1 {bad window path name "foo"}}
+ test winfo-3.4 {"winfo colormapfull" command} {macOrUnix} {
+ eatColors .t {-colormap new}
+ set result [list [winfo colormapfull .] [winfo colormapfull .t]]
+ .t.c delete 34
+ lappend result [winfo colormapfull .t]
+ .t.c create rectangle 30 30 80 80 -fill #441739
+ lappend result [winfo colormapfull .t]
+ .t.c create rectangle 40 40 90 90 -fill #ffeedd
+ lappend result [winfo colormapfull .t]
+ destroy .t.c
+ lappend result [winfo colormapfull .t]
+ } {0 1 0 0 1 0}
+ catch {destroy .t}
+}
+
+catch {destroy .t}
+toplevel .t -width 550 -height 400
+frame .t.f -width 80 -height 60 -bd 2 -relief raised
+place .t.f -x 50 -y 50
+wm geom .t +0+0
+update
+test winfo-4.1 {"winfo containing" command} {
+ list [catch {winfo containing 22} msg] $msg
+} {1 {wrong # args: should be "winfo containing ?-displayof window? rootX rootY"}}
+test winfo-4.2 {"winfo containing" command} {
+ list [catch {winfo containing a b c} msg] $msg
+} {1 {wrong # args: should be "winfo containing ?-displayof window? rootX rootY"}}
+test winfo-4.3 {"winfo containing" command} {
+ list [catch {winfo containing a b c d e} msg] $msg
+} {1 {wrong # args: should be "winfo containing ?-displayof window? rootX rootY"}}
+test winfo-4.4 {"winfo containing" command} {
+ list [catch {winfo containing -displayof geek 25 30} msg] $msg
+} {1 {bad window path name "geek"}}
+test winfo-4.5 {"winfo containing" command} {
+ winfo containing [winfo rootx .t.f] [winfo rooty .t.f]
+} .t.f
+test winfo-4.6 {"winfo containing" command} {nonPortable} {
+ winfo containing [expr [winfo rootx .t.f]-1] [expr [winfo rooty .t.f]-1]
+} .t
+test winfo-4.7 {"winfo containing" command} {
+ set x [winfo containing -display .t.f [expr [winfo rootx .t]+600] \
+ [expr [winfo rooty .t.f]+450]]
+ expr {($x == ".") || ($x == "")}
+} {1}
+destroy .t
+
+test winfo-5.1 {"winfo interps" command} {
+ list [catch {winfo interps a} msg] $msg
+} {1 {wrong # args: should be "winfo interps ?-displayof window?"}}
+test winfo-5.2 {"winfo interps" command} {
+ list [catch {winfo interps a b c} msg] $msg
+} {1 {wrong # args: should be "winfo interps ?-displayof window?"}}
+test winfo-5.3 {"winfo interps" command} {
+ list [catch {winfo interps -displayof geek} msg] $msg
+} {1 {bad window path name "geek"}}
+test winfo-5.4 {"winfo interps" command} {unixOnly} {
+ expr [lsearch -exact [winfo interps] [tk appname]] >= 0
+} {1}
+test winfo-5.5 {"winfo interps" command} {unixOnly} {
+ expr [lsearch -exact [winfo interps -displayof .] [tk appname]] >= 0
+} {1}
+
+test winfo-6.1 {"winfo exists" command} {
+ list [catch {winfo exists} msg] $msg
+} {1 {wrong # args: should be "winfo exists window"}}
+test winfo-6.2 {"winfo exists" command} {
+ list [catch {winfo exists a b} msg] $msg
+} {1 {wrong # args: should be "winfo exists window"}}
+test winfo-6.3 {"winfo exists" command} {
+ winfo exists gorp
+} {0}
+test winfo-6.4 {"winfo exists" command} {
+ winfo exists .
+} {1}
+test winfo-6.5 {"winfo exists" command} {
+ button .b -text "Test button"
+ set x [winfo exists .b]
+ pack .b
+ update
+ bind .b <Destroy> {lappend x [winfo exists .x]}
+ destroy .b
+ lappend x [winfo exists .x]
+} {1 0 0}
+
+catch {destroy .b}
+button .b -text "Help"
+update
+test winfo-7.1 {"winfo pathname" command} {
+ list [catch {winfo pathname} msg] $msg
+} {1 {wrong # args: should be "winfo pathname ?-displayof window? id"}}
+test winfo-7.2 {"winfo pathname" command} {
+ list [catch {winfo pathname a b} msg] $msg
+} {1 {wrong # args: should be "winfo pathname ?-displayof window? id"}}
+test winfo-7.3 {"winfo pathname" command} {
+ list [catch {winfo pathname a b c d} msg] $msg
+} {1 {wrong # args: should be "winfo pathname ?-displayof window? id"}}
+test winfo-7.4 {"winfo pathname" command} {
+ list [catch {winfo pathname -displayof geek 25} msg] $msg
+} {1 {bad window path name "geek"}}
+test winfo-7.5 {"winfo pathname" command} {
+ list [catch {winfo pathname xyz} msg] $msg
+} {1 {expected integer but got "xyz"}}
+test winfo-7.6 {"winfo pathname" command} {
+ list [catch {winfo pathname 224} msg] $msg
+} {1 {window id "224" doesn't exist in this application}}
+test winfo-7.7 {"winfo pathname" command} {
+ winfo pathname -displayof .b [winfo id .]
+} {.}
+test winfo-7.8 {"winfo pathname" command} {unixOnly} {
+ winfo pathname [testwrapper .]
+} {}
+
+test winfo-8.1 {"winfo pointerx" command} {
+ catch [winfo pointerx .b]
+} 1
+test winfo-8.2 {"winfo pointery" command} {
+ catch [winfo pointery .b]
+} 1
+test winfo-8.3 {"winfo pointerxy" command} {
+ catch [winfo pointerxy .b]
+} 1
+
+test winfo-9.1 {"winfo viewable" command} {
+ list [catch {winfo viewable} msg] $msg
+} {1 {wrong # args: should be "winfo viewable window"}}
+test winfo-9.2 {"winfo viewable" command} {
+ list [catch {winfo viewable foo} msg] $msg
+} {1 {bad window path name "foo"}}
+test winfo-9.3 {"winfo viewable" command} {
+ winfo viewable .
+} {1}
+test winfo-9.4 {"winfo viewable" command} {
+ wm iconify .
+ winfo viewable .
+} {0}
+wm deiconify .
+test winfo-9.5 {"winfo viewable" command} {
+ frame .f1 -width 100 -height 100 -relief raised -bd 2
+ place .f1 -x 0 -y 0
+ frame .f1.f2 -width 50 -height 50 -relief raised -bd 2
+ place .f1.f2 -x 0 -y 0
+ update
+ list [winfo viewable .f1] [winfo viewable .f1.f2]
+} {1 1}
+test winfo-9.6 {"winfo viewable" command} {
+ eval destroy [winfo child .]
+ frame .f1 -width 100 -height 100 -relief raised -bd 2
+ frame .f1.f2 -width 50 -height 50 -relief raised -bd 2
+ place .f1.f2 -x 0 -y 0
+ update
+ list [winfo viewable .f1] [winfo viewable .f1.f2]
+} {0 0}
+test winfo-9.7 {"winfo viewable" command} {
+ eval destroy [winfo child .]
+ frame .f1 -width 100 -height 100 -relief raised -bd 2
+ place .f1 -x 0 -y 0
+ frame .f1.f2 -width 50 -height 50 -relief raised -bd 2
+ place .f1.f2 -x 0 -y 0
+ update
+ wm iconify .
+ list [winfo viewable .f1] [winfo viewable .f1.f2]
+} {0 0}
+wm deiconify .
+eval destroy [winfo child .]
+
+test winfo-10.1 {"winfo visualid" command} {
+ list [catch {winfo visualid} msg] $msg
+} {1 {wrong # args: should be "winfo visualid window"}}
+test winfo-10.2 {"winfo visualid" command} {
+ list [catch {winfo visualid gorp} msg] $msg
+} {1 {bad window path name "gorp"}}
+test winfo-10.3 {"winfo visualid" command} {
+ expr 2+[winfo visualid .]-[winfo visualid .]
+} {2}
+
+test winfo-11.1 {"winfo visualid" command} {
+ list [catch {winfo visualsavailable} msg] $msg
+} {1 {wrong # args: should be "winfo visualsavailable window ?includeids?"}}
+test winfo-11.2 {"winfo visualid" command} {
+ list [catch {winfo visualsavailable gorp} msg] $msg
+} {1 {bad window path name "gorp"}}
+test winfo-11.3 {"winfo visualid" command} {
+ list [catch {winfo visualsavailable . includeids foo} msg] $msg
+} {1 {wrong # args: should be "winfo visualsavailable window ?includeids?"}}
+test winfo-11.4 {"winfo visualid" command} {
+ llength [lindex [winfo visualsa .] 0]
+} {2}
+test winfo-11.5 {"winfo visualid" command} {
+ llength [lindex [winfo visualsa . includeids] 0]
+} {3}
+test winfo-11.6 {"winfo visualid" command} {
+ set x [lindex [lindex [winfo visualsa . includeids] 0] 2]
+ expr $x + 2 - $x
+} {2}
+
+test winfo-12.1 {GetDisplayOf procedure} {
+ list [catch {winfo atom - foo x} msg] $msg
+} {1 {wrong # args: should be "winfo atom ?-displayof window? name"}}
+test winfo-12.2 {GetDisplayOf procedure} {
+ list [catch {winfo atom -d bad_window x} msg] $msg
+} {1 {bad window path name "bad_window"}}
+
+# Some embedding tests
+#
+
+proc MakeEmbed {} {
+ frame .con -container 1
+ pack .con -expand yes -fill both
+ toplevel .emb -use [winfo id .con] -bd 0 -highlightthickness 0
+ button .emb.b
+ pack .emb.b -expand yes -fill both
+ update
+}
+test winfo-13.1 {root coordinates of embedded toplevel} {macOrUnix} {
+ MakeEmbed
+ set z [expr [winfo rootx .emb] == [winfo rootx .con] && \
+ [winfo rooty .emb] == [winfo rooty .con]]
+ destroy .emb
+ destroy .con
+ set z
+} {1}
+test winfo-13.2 {destroying embedded toplevel} {macOrUnix} {
+ catch {destroy .emb}
+ update
+ expr [winfo exists .emb.b] || [winfo exists .con]
+} 0
+
+foreach i [winfo children .] {
+ destroy $i
+}
+
+test winfo-13.3 {destroying container window} {macOrUnix} {
+ MakeEmbed
+ destroy .con
+ update
+ set z [expr [winfo exists .emb.b] || [winfo exists .emb]]
+ catch {destroy .emb}
+ catch {destroy .con}
+ set z
+} 0
+
+foreach i [winfo children .] {
+ destroy $i
+}
+
+test winfo-13.4 {[winfo containing] with embedded windows} {macOrUnix} {
+ MakeEmbed
+ button .b
+ pack .b -expand yes -fill both
+ update
+
+ set z [string compare \
+ [winfo containing [winfo rootx .emb.b] [winfo rooty .emb.b]] .emb.b]
+ catch {destroy .con}
+ catch {destroy .emb}
+ set z
+} 0
+
+foreach i [winfo children .] {
+ catch {destroy $i}
+}