diff options
author | rjohnson <rjohnson> | 1998-04-01 09:51:44 (GMT) |
---|---|---|
committer | rjohnson <rjohnson> | 1998-04-01 09:51:44 (GMT) |
commit | 066ea7fd88d49cb456f74da71dbe875e4fc0aabb (patch) | |
tree | 8fb30cb152c4dc191be47fa043d2e6f5ea38c7ba /tests/grid.test | |
parent | 13242623d2ff3ea02ab6a62bfb48a7dbb5c27e22 (diff) | |
download | tk-066ea7fd88d49cb456f74da71dbe875e4fc0aabb.zip tk-066ea7fd88d49cb456f74da71dbe875e4fc0aabb.tar.gz tk-066ea7fd88d49cb456f74da71dbe875e4fc0aabb.tar.bz2 |
Initial revision
Diffstat (limited to 'tests/grid.test')
-rw-r--r-- | tests/grid.test | 1205 |
1 files changed, 1205 insertions, 0 deletions
diff --git a/tests/grid.test b/tests/grid.test new file mode 100644 index 0000000..fae31fe --- /dev/null +++ b/tests/grid.test @@ -0,0 +1,1205 @@ +# This file is a Tcl script to test out the *NEW* "grid" command +# of Tk. It is (almost) organized in the standard fashion for Tcl tests. +# +# Copyright (c) 1996 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: @(#) grid.test 1.22 97/10/10 10:07:31 + +if {[string compare test [info procs test]] == 1} then \ + {source ../tests/defs} + +# Test Arguments: +# name - Name of test, in the form foo-1.2. +# description - Short textual description of the test, to +# help humans understand what it does. +# constraints - A list of one or more keywords, each of +# which must be the name of an element in +# the array "testConfig". If any of these +# elements is zero, the test is skipped. +# This argument may be omitted. +# script - Script to run to carry out the test. It must +# return a result that can be checked for +# correctness. +# answer - Expected result from script. + +# helper routine to return "." to a sane state after a test +# The variable GRID_VERBOSE can be used to "look" at the result +# of one or all of the tests + +proc grid_reset {{test ?} {top .}} { + global GRID_VERBOSE + if {[info exists GRID_VERBOSE]} { + if {$GRID_VERBOSE=="" || $GRID_VERBOSE==$test} { + puts -nonewline "grid test $test: " + flush stdout + gets stdin + } + } + eval destroy [winfo children $top] + update + foreach {cols rows} [grid size .] {} + for {set i 0} {$i <= $cols} {incr i} { + grid columnconfigure . $i -weight 0 -minsize 0 -pad 0 + } + for {set i 0} {$i <= $rows} {incr i} { + grid rowconfigure . $i -weight 0 -minsize 0 -pad 0 + } + grid propagate . 1 + update +} + +grid_reset 0.0 +wm geometry . {} + +test grid-1.1 {basic argument checking} { + list [catch grid msg] $msg +} {1 {wrong # args: should be "grid option arg ?arg ...?"}} + +test grid-1.2 {basic argument checking} { + list [catch {grid foo bar} msg] $msg +} {1 {bad option "foo": must be bbox, columnconfigure, configure, forget, info, location, propagate, remove, rowconfigure, size, or slaves.}} + +test grid-1.3 {basic argument checking} { + button .b + list [catch {grid .b -row 0 -column} msg] $msg +} {1 {extra option or option with no value}} +grid_reset 1.3 + +test grid-1.4 {basic argument checking} { + button .b + list [catch {grid configure .b - foo} msg] $msg +} {1 {unexpected parameter, "foo", in configure list. Should be window name or option}} +grid_reset 1.4 + +test grid-1.5 {basic argument checking} { + list [catch {grid .} msg] $msg +} {1 {can't manage ".": it's a top-level window}} + +test grid-1.6 {basic argument checking} { + list [catch {grid x} msg] $msg +} {1 {can't determine master window}} + +test grid-2.1 {bbox} { + list [catch {grid bbox .} msg] $msg +} {0 {0 0 0 0}} + +test grid-2.2 {bbox} { + button .b + grid .b + destroy .b + update + list [catch {grid bbox .} msg] $msg +} {0 {0 0 0 0}} + +test grid-2.3 {bbox: argument checking} { + list [catch {grid bbox . 0 0 5} msg] $msg +} {1 {wrong number of arguments: must be "grid bbox master ?column row ?column row??"}} + +test grid-2.4 {bbox} { + list [catch {grid bbox .bad 0 0} msg] $msg +} {1 {bad window path name ".bad"}} + +test grid-2.5 {bbox} { + list [catch {grid bbox . x 0} msg] $msg +} {1 {expected integer but got "x"}} + +test grid-2.6 {bbox} { + list [catch {grid bbox . 0 x} msg] $msg +} {1 {expected integer but got "x"}} + +test grid-2.7 {bbox} { + list [catch {grid bbox . 0 0 x 0} msg] $msg +} {1 {expected integer but got "x"}} + +test grid-2.8 {bbox} { + list [catch {grid bbox . 0 0 0 x} msg] $msg +} {1 {expected integer but got "x"}} + +test grid-2.9 {bbox} { + frame .1 -width 75 -height 75 -bg red + frame .2 -width 90 -height 90 -bg red + grid .1 -row 0 -column 0 + grid .2 -row 1 -column 1 + update + set a "" + lappend a [grid bbox .] + lappend a [grid bbox . 0 0] + lappend a [grid bbox . 0 0 1 1] + lappend a [grid bbox . 1 1] + set a +} {{0 0 165 165} {0 0 75 75} {0 0 165 165} {75 75 90 90}} +grid_reset 2.9 + +test grid-2.10 {bbox} { + frame .1 -width 75 -height 75 -bg red + frame .2 -width 90 -height 90 -bg red + grid .1 -row 0 -column 0 + grid .2 -row 1 -column 1 + update + set a "" + lappend a [grid bbox . 10 10 0 0] + lappend a [grid bbox . -2 -2 -1 -1] + lappend a [grid bbox . 10 10 12 12] + set a +} {{0 0 165 165} {0 0 0 0} {165 165 0 0}} +grid_reset 2.10 + +test grid-3.1 {configure: basic argument checking} { + list [catch {grid configure foo} msg] $msg +} {1 {bad argument "foo": must be name of window}} + +test grid-3.2 {configure: basic argument checking} { + button .b + grid configure .b + grid slaves . +} {.b} +grid_reset 3.2 + +test grid-3.3 {configure: basic argument checking} { + button .b + list [catch {grid .b -row -1} msg] $msg +} {1 {bad grid value "-1": must be a non-negative integer}} +grid_reset 3.3 + +test grid-3.4 {configure: basic argument checking} { + button .b + list [catch {grid .b -column -1} msg] $msg +} {1 {bad column value "-1": must be a non-negative integer}} +grid_reset 3.4 + +test grid-3.5 {configure: basic argument checking} { + button .b + list [catch {grid .b -rowspan 0} msg] $msg +} {1 {bad rowspan value "0": must be a positive integer}} +grid_reset 3.5 + +test grid-3.6 {configure: basic argument checking} { + button .b + list [catch {grid .b -columnspan 0} msg] $msg +} {1 {bad columnspan value "0": must be a positive integer}} +grid_reset 3.6 + +test grid-3.7 {configure: basic argument checking} { + frame .f + button .f.b + list [catch {grid .f .f.b} msg] $msg +} {1 {can't put .f.b inside .}} +grid_reset 3.7 + +test grid-4.1 {forget: basic argument checking} { + list [catch {grid forget foo} msg] $msg +} {1 {bad window path name "foo"}} + +test grid-4.2 {forget} { + button .c + grid [button .b] + set a [grid slaves .] + grid forget .b .c + lappend a [grid slaves .] + set a +} {.b {}} +grid_reset 4.2 + +test grid-4.3 {forget} { + button .c + grid .c -row 2 -column 2 -rowspan 2 -columnspan 2 -padx 3 -pady 4 -sticky ns + grid forget .c + grid .c -row 0 -column 0 + grid info .c +} {-in . -column 0 -row 0 -columnspan 1 -rowspan 1 -ipadx 0 -ipady 0 -padx 0 -pady 0 -sticky {}} +grid_reset 4.3 + +test grid-4.4 {forget, calling Tk_UnmaintainGeometry} { + frame .f -bd 2 -relief raised + place .f -x 10 -y 20 -width 200 -height 100 + frame .f2 -width 50 -height 30 -bg red + grid .f2 -in .f + update + set x [winfo ismapped .f2] + grid forget .f2 + place .f -x 30 + update + lappend x [winfo ismapped .f2] +} {1 0} +grid_reset 4.4 + +test grid-5.1 {info: basic argument checking} { + list [catch {grid info a b} msg] $msg +} {1 {wrong # args: should be "grid info window"}} + +test grid-5.2 {info} { + frame .1 -width 75 -height 75 -bg red + grid .1 -row 0 -column 0 + update + list [catch {grid info .x} msg] $msg +} {1 {bad window path name ".x"}} +grid_reset 5.2 + +test grid-5.3 {info} { + frame .1 -width 75 -height 75 -bg red + grid .1 -row 0 -column 0 + update + list [catch {grid info .1} msg] $msg +} {0 {-in . -column 0 -row 0 -columnspan 1 -rowspan 1 -ipadx 0 -ipady 0 -padx 0 -pady 0 -sticky {}}} +grid_reset 5.3 + +test grid-5.4 {info} { + frame .1 -width 75 -height 75 -bg red + update + list [catch {grid info .1} msg] $msg +} {0 {}} +grid_reset 5.4 + +test grid-6.1 {location: basic argument checking} { + list [catch "grid location ." msg] $msg +} {1 {wrong # args: should be "grid location master x y"}} + +test grid-6.2 {location: basic argument checking} { + list [catch "grid location .bad 0 0" msg] $msg +} {1 {bad window path name ".bad"}} + +test grid-6.3 {location: basic argument checking} { + list [catch "grid location . x y" msg] $msg +} {1 {bad screen distance "x"}} + +test grid-6.4 {location: basic argument checking} { + list [catch "grid location . 1c y" msg] $msg +} {1 {bad screen distance "y"}} + +test grid-6.5 {location: basic argument checking} { + frame .f + grid location .f 10 10 +} {-1 -1} +grid_reset 6.5 + +test grid-6.6 {location (x)} { + frame .f -width 200 -height 100 -highlightthickness 0 -bg red + grid .f + update + set got "" + set result "" + for {set x -10} { $x < 220} { incr x} { + set a [grid location . $x 0] + if {$a != $got} { + lappend result $x->$a + set got $a + } + } + set result +} {{-10->-1 0} {0->0 0} {201->1 0}} +grid_reset 6.6 + +test grid-6.7 {location (y)} { + frame .f -width 200 -height 100 -highlightthickness 0 -bg red + grid .f + update + set got "" + set result "" + for {set y -10} { $y < 110} { incr y} { + set a [grid location . 0 $y] + if {$a != $got} { + lappend result $y->$a + set got $a + } + } + set result +} {{-10->0 -1} {0->0 0} {101->0 1}} +grid_reset 6.7 + +test grid-6.8 {location (weights)} { + frame .f -width 200 -height 100 -highlightthickness 0 -bg red + frame .a + grid .a + grid .f -in .a + grid rowconfigure .f 0 -weight 1 + grid columnconfigure .f 0 -weight 1 + grid propagate .a 0 + .a configure -width 110 -height 15 + update + set got "" + set result "" + for {set y -10} { $y < 120} { incr y} { + set a [grid location . $y $y] + if {$a != $got} { + lappend result $y->$a + set got $a + } + } + set result +} {{-10->-1 -1} {0->0 0} {16->0 1} {111->1 1}} +grid_reset 6.8 + +test grid-6.9 {location: check updates pending} { + set a "" + foreach i {0 1 2} { + frame .$i -width 120 -height 75 -bg red + lappend a [grid location . 150 90] + grid .$i -row $i -column $i + } + set a +} {{0 0} {1 1} {1 1}} +grid_reset 6.9 + +test grid-7.1 {propagate} { + list [catch {grid propagate . 1 xxx} msg] $msg +} {1 {wrong # args: should be "grid propagate window ?boolean?"}} +grid_reset 7.1 + +test grid-7.2 {propagate} { + list [catch {grid propagate .} msg] $msg +} {0 1} +grid_reset 7.2 + +test grid-7.3 {propagate} { + list [catch {grid propagate . 0;grid propagate .} msg] $msg +} {0 0} +grid_reset 7.3 + +test grid-7.4 {propagate} { + list [catch {grid propagate .x} msg] $msg +} {1 {bad window path name ".x"}} +grid_reset 7.4 + +test grid-7.5 {propagate} { + list [catch {grid propagate . x} msg] $msg +} {1 {expected boolean value but got "x"}} +grid_reset 7.5 + +test grid-7.6 {propagate} { + frame .f -width 100 -height 100 -bg red + grid .f -row 0 -column 0 + update + set a [winfo width .f]x[winfo height .f] + grid propagate .f 0 + frame .g -width 75 -height 85 -bg green + grid .g -in .f -row 0 -column 0 + update + lappend a [winfo width .f]x[winfo height .f] + grid propagate .f 1 + update + lappend a [winfo width .f]x[winfo height .f] + set a +} {100x100 100x100 75x85} +grid_reset 7.6 + + +test grid-8.1 {size} { + list [catch {grid size . foo} msg] $msg +} {1 {wrong # args: should be "grid size window"}} +grid_reset 8.1 + +test grid-8.2 {size} { + list [catch {grid size .x} msg] $msg +} {1 {bad window path name ".x"}} +grid_reset 8.2 + +test grid-8.3 {size} { + frame .f + list [catch {grid size .f} msg] $msg +} {0 {0 0}} +grid_reset 8.3 + +test grid-8.4 {size} { + catch {unset a} + scale .f + grid .f -row 0 -column 0 + update + lappend a [grid size .] + grid .f -row 4 -column 5 + update + lappend a [grid size .] + grid .f -row 947 -column 663 + update + lappend a [grid size .] + grid .f -row 0 -column 0 + update + lappend a [grid size .] + set a +} {{1 1} {6 5} {664 948} {1 1}} +grid_reset 8.4 + +test grid-8.5 {size} { + catch {unset a} + scale .f + grid .f -row 0 -column 0 + update + lappend a [grid size .] + grid rowconfigure . 17 -weight 1 + update + lappend a [grid size .] + grid columnconfigure . 63 -weight 1 + update + lappend a [grid size .] + grid columnconfigure . 63 -weight 0 + grid rowconfigure . 17 -weight 0 + update + lappend a [grid size .] + set a +} {{1 1} {1 18} {64 18} {1 1}} +grid_reset 8.5 + +test grid-8.6 {size} { + catch {unset a} + scale .f + grid .f -row 10 -column 50 + update + lappend a [grid size .] + grid columnconfigure . 15 -weight 1 + grid columnconfigure . 30 -weight 1 + update + lappend a [grid size .] + grid .f -row 10 -column 20 + update + lappend a [grid size .] + grid columnconfigure . 30 -weight 0 + update + lappend a [grid size .] + grid .f -row 0 -column 0 + update + lappend a [grid size .] + grid columnconfigure . 15 -weight 0 + update + lappend a [grid size .] + set a +} {{51 11} {51 11} {31 11} {21 11} {16 1} {1 1}} +grid_reset 8.6 + +test grid-9.1 {slaves} { + list [catch {grid slaves .} msg] $msg +} {0 {}} + +test grid-9.2 {slaves} { + list [catch {grid slaves .foo} msg] $msg +} {1 {bad window path name ".foo"}} + +test grid-9.3 {slaves} { + list [catch {grid slaves a b} msg] $msg +} {1 {wrong # args: should be "grid slaves window ?-option value...?"}} + +test grid-9.4 {slaves} { + list [catch {grid slaves . a b} msg] $msg +} {1 {invalid args: should be "grid slaves window ?-option value...?"}} + +test grid-9.5 {slaves} { + list [catch {grid slaves . -foo x} msg] $msg +} {1 {expected integer but got "x"}} + +test grid-9.6 {slaves} { + list [catch {grid slaves . -foo -3} msg] $msg +} {1 {-foo is an invalid value: should NOT be < 0}} + +test grid-9.7 {slaves} { + list [catch {grid slaves . -foo 3} msg] $msg +} {1 {-foo is an invalid option: should be "-row, -column"}} + +test grid-9.8 {slaves} { + list [catch {grid slaves .x -row 3} msg] $msg +} {1 {bad window path name ".x"}} + +test grid-9.9 {slaves} { + list [catch {grid slaves . -row 3} msg] $msg +} {0 {}} + +test grid-9.10 {slaves} { + foreach i {0 1 2} { + label .$i -text $i + grid .$i -row $i -column $i + } + list [catch {grid slaves .} msg] $msg +} {0 {.2 .1 .0}} +grid_reset 9.10 + +test grid-9.11 {slaves} { + catch {unset a} + foreach i {0 1 2} { + label .$i -text $i + label .$i-x -text $i-x + grid .$i -row $i -column $i + grid .$i-x -row $i -column [incr i] + } + foreach row {0 1 2 3} { + lappend a $row{[grid slaves . -row $row]} + } + foreach col {0 1 2 3} { + lappend a $col{[grid slaves . -column $col]} + } + set a +} {{0{.0-x .0}} {1{.1-x .1}} {2{.2-x .2}} 3{} 0{.0} {1{.1 .0-x}} {2{.2 .1-x}} 3{.2-x}} +grid_reset 9.11 + +# column/row configure + +test grid-10.1 {column/row configure} { + list [catch {grid columnconfigure .} msg] $msg +} {1 {wrong # args: should be "grid columnconfigure master index ?-option value...?"}} +grid_reset 10.1 + +test grid-10.2 {column/row configure} { + list [catch {grid columnconfigure . 0 -weight 0 -pad} msg] $msg +} {1 {wrong # args: should be "grid columnconfigure master index ?-option value...?"}} +grid_reset 10.2 + +test grid-10.3 {column/row configure} { + list [catch {grid columnconfigure .f 0 -weight} msg] $msg +} {1 {bad window path name ".f"}} +grid_reset 10.3 + +test grid-10.4 {column/row configure} { + list [catch {grid columnconfigure . nine -weight} msg] $msg +} {1 {expected integer but got "nine"}} +grid_reset 10.4 + +test grid-10.5 {column/row configure} { + list [catch {grid columnconfigure . 265 -weight} msg] $msg +} {0 0} +grid_reset 10.5 + +test grid-10.6 {column/row configure} { + list [catch {grid columnconfigure . 0} msg] $msg +} {0 {-minsize 0 -pad 0 -weight 0}} +grid_reset 10.6 + +test grid-10.7 {column/row configure} { + list [catch {grid columnconfigure . 0 -foo} msg] $msg +} {1 {invalid arg "-foo": expecting -minsize, -pad, or -weight.}} +grid_reset 10.7 + +test grid-10.8 {column/row configure} { + list [catch {grid columnconfigure . 0 -minsize foo} msg] $msg +} {1 {bad screen distance "foo"}} +grid_reset 10.8 + +test grid-10.9 {column/row configure} { + list [catch {grid columnconfigure . 0 -minsize foo} msg] $msg +} {1 {bad screen distance "foo"}} +grid_reset 10.9 + +test grid-10.10 {column/row configure} { + grid columnconfigure . 0 -minsize 10 + grid columnconfigure . 0 -minsize +} {10} +grid_reset 10.10 + +test grid-10.11 {column/row configure} { + list [catch {grid columnconfigure . 0 -weight bad} msg] $msg +} {1 {expected integer but got "bad"}} +grid_reset 10.10a + +test grid-10.12 {column/row configure} { + list [catch {grid columnconfigure . 0 -weight -3} msg] $msg +} {1 {invalid arg "-weight": should be non-negative}} +grid_reset 10.11 + +test grid-10.13 {column/row configure} { + grid columnconfigure . 0 -weight 3 + grid columnconfigure . 0 -weight +} {3} +grid_reset 10.12 + +test grid-10.14 {column/row configure} { + list [catch {grid columnconfigure . 0 -pad foo} msg] $msg +} {1 {bad screen distance "foo"}} +grid_reset 10.13 + +test grid-10.15 {column/row configure} { + list [catch {grid columnconfigure . 0 -pad -3} msg] $msg +} {1 {invalid arg "-pad": should be non-negative}} +grid_reset 10.14 + +test grid-10.16 {column/row configure} { + grid columnconfigure . 0 -pad 3 + grid columnconfigure . 0 -pad +} {3} +grid_reset 10.15 + +test grid-10.17 {column/row configure} { + frame .f + set a "" + grid columnconfigure .f 0 -weight 0 + lappend a [grid columnconfigure .f 0 -weight] + grid columnconfigure .f 0 -weight 1 + lappend a [grid columnconfigure .f 0 -weight] + grid rowconfigure .f 0 -weight 0 + lappend a [grid rowconfigure .f 0 -weight] + grid rowconfigure .f 0 -weight 1 + lappend a [grid columnconfigure .f 0 -weight] + grid columnconfigure .f 0 -weight 0 + set a +} {0 1 0 1} +grid_reset 10.16 + +test grid-10.18 {column/row configure} { + frame .f + grid columnconfigure .f 0 -minsize 10 -weight 1 + list [grid columnconfigure .f 0 -minsize] \ + [grid columnconfigure .f 1 -minsize] \ + [grid columnconfigure .f 0 -weight] \ + [grid columnconfigure .f 1 -weight] +} {10 0 1 0} +grid_reset 10.17 + +# auto-placement tests + +test grid-11.1 {default widget placement} { + list [catch {grid ^} msg] $msg +} {1 {can't use '^', cant find master}} +grid_reset 11.1 + +test grid-11.2 {default widget placement} { + button .b + list [catch {grid .b ^} msg] $msg +} {1 {can't find slave to extend with "^".}} +grid_reset 11.2 + +test grid-11.3 {default widget placement} { + button .b + list [catch {grid .b - - .c} msg] $msg +} {1 {bad window path name ".c"}} +grid_reset 11.3 + +test grid-11.4 {default widget placement} { + button .b + list [catch {grid .b - - = -} msg] $msg +} {1 {invalid window shortcut, "=" should be '-', 'x', or '^'}} +grid_reset 11.4 + +test grid-11.5 {default widget placement} { + button .b + list [catch {grid .b - x -} msg] $msg +} {1 {Must specify window before shortcut '-'.}} +grid_reset 11.5 + +test grid-11.6 {default widget placement} { + foreach i {1 2 3 4 5 6} { + frame .f$i -width 50 -height 50 -highlightthickness 0 -bg red + } + grid .f1 .f2 .f3 .f4 + grid .f5 - x .f6 -sticky nsew + update + set a "" + foreach i {5 6} { + lappend a "[winfo x .f$i],[winfo y .f$i] \ + [winfo width .f$i],[winfo height .f$i]" + } + set a +} {{0,50 100,50} {150,50 50,50}} +grid_reset 11.6 + +test grid-11.7 {default widget placement} { + frame .f -width 20 -height 20 -highlightthickness 0 -bg red + grid .f -row 5 -column 5 + list [catch "grid .f x -" msg] $msg +} {1 {Must specify window before shortcut '-'.}} +grid_reset 11.7 + +test grid-11.8 {default widget placement} { + frame .f -width 20 -height 20 -highlightthickness 0 -bg red + grid .f -row 5 -column 5 + list [catch "grid .f ^ -" msg] $msg +} {1 {Must specify window before shortcut '-'.}} +grid_reset 11.8 + +test grid-11.9 {default widget placement} { + frame .f -width 20 -height 20 -highlightthickness 0 -bg red + grid .f -row 5 -column 5 + list [catch "grid .f x ^" msg] $msg +} {1 {can't find slave to extend with "^".}} +grid_reset 11.9 + +test grid-11.10 {default widget placement} { + foreach i {1 2 3} { + frame .f$i -width 100 -height 50 -highlightthickness 0 -bg red + } + grid .f1 .f2 -sticky nsew + grid .f3 ^ -sticky nsew + update + set a "" + foreach i {1 2 3} { + lappend a "[winfo x .f$i],[winfo y .f$i] \ + [winfo width .f$i],[winfo height .f$i]" + } + set a +} {{0,0 100,50} {100,0 100,100} {0,50 100,50}} +grid_reset 11.10 + +test grid-11.11 {default widget placement} { + foreach i {1 2 3 4 5 6 7 8 9 10 11 12} { + frame .f$i -width 50 -height 50 -highlightthickness 1 -highlightbackground black + } + grid .f1 .f2 .f3 .f4 -sticky nsew + grid .f5 .f6 - .f7 -sticky nsew + grid .f8 ^ ^ .f9 -sticky nsew + grid .f10 ^ ^ .f11 -sticky nsew + grid .f12 - - - -sticky nsew + update + set a "" + foreach i {5 6 7 8 9 10 11 12 } { + lappend a "[winfo x .f$i],[winfo y .f$i] \ + [winfo width .f$i],[winfo height .f$i]" + } + set a +} {{0,50 50,50} {50,50 100,150} {150,50 50,50} {0,100 50,50} {150,100 50,50} {0,150 50,50} {150,150 50,50} {0,200 200,50}} +grid_reset 11.11 + +test grid-11.12 {default widget placement} { + foreach i {1 2 3 4} { + frame .f$i -width 75 -height 50 -highlightthickness 1 -highlightbackground black + } + grid .f1 .f2 .f3 -sticky nsew + grid .f4 ^ -sticky nsew + update + set a "" + foreach i {1 2 3 4} { + lappend a "[winfo x .f$i],[winfo y .f$i] \ + [winfo width .f$i],[winfo height .f$i]" + } + grid .f4 ^ -column 1 + update + foreach i {1 2 3 4} { + lappend a "[winfo x .f$i],[winfo y .f$i] \ + [winfo width .f$i],[winfo height .f$i]" + } + set a +} {{0,0 75,50} {75,0 75,100} {150,0 75,50} {0,50 75,50} {0,0 75,50} {75,0 75,100} {150,0 75,100} {75,50 75,50}} +grid_reset 11.12 + +test grid-11.13 {default widget placement} { + foreach i {1 2 3 4 5 6 7} { + frame .f$i -width 40 -height 50 -highlightthickness 1 -highlightbackground black + } + grid .f1 .f2 .f3 .f4 .f5 -sticky nsew + grid .f6 - .f7 -sticky nsew -columnspan 2 + update + set a "" + foreach i {6 7} { + lappend a "[winfo x .f$i],[winfo y .f$i] \ + [winfo width .f$i],[winfo height .f$i]" + } + set a +} {{0,50 120,50} {120,50 80,50}} +grid_reset 11.13 + +test grid-11.14 {default widget placement} { + foreach i {1 2 3} { + frame .f$i -width 50 -height 50 -highlightthickness 0 -bg red + } + grid .f1 .f2 + grid ^ .f3 + update + set a "" + foreach i {1 2 3} { + lappend a "[winfo x .f$i],[winfo y .f$i] \ + [winfo width .f$i],[winfo height .f$i]" + } + set a +} {{0,25 50,50} {50,0 50,50} {50,50 50,50}} +grid_reset 11.14 + +test grid-12.1 {-sticky} { + catch {unset data} + frame .f -width 200 -height 100 -highlightthickness 0 -bg red + set a "" + grid .f + grid rowconfigure . 0 -weight 1 + grid columnconfigure . 0 -weight 1 + grid propagate . 0 + . configure -width 250 -height 150 + foreach i { {} n s e w ns ew nw ne se sw nse nsw sew new nsew} { + grid .f -sticky $i + update + array set data [grid info .f] + append a "($data(-sticky)) [winfo x .f] [winfo y .f] [winfo width .f] [winfo height .f]\n" + } + set a +} {() 25 25 200 100 +(n) 25 0 200 100 +(s) 25 50 200 100 +(e) 50 25 200 100 +(w) 0 25 200 100 +(ns) 25 0 200 150 +(ew) 0 25 250 100 +(nw) 0 0 200 100 +(ne) 50 0 200 100 +(es) 50 50 200 100 +(sw) 0 50 200 100 +(nes) 50 0 200 150 +(nsw) 0 0 200 150 +(esw) 0 50 250 100 +(new) 0 0 250 100 +(nesw) 0 0 250 150 +} +grid_reset 12.1 + +test grid-12.2 {-sticky} { + frame .f -bg red + list [catch "grid .f -sticky glue" msg] $msg +} {1 {bad stickyness value "glue": must be a string containing n, e, s, and/or w}} +grid_reset 12.2 + +test grid-12.3 {-sticky} { + frame .f -bg red + grid .f -sticky {n,s,e,w} + array set A [grid info .f] + set A(-sticky) +} {nesw} +grid_reset 12.3 + +test grid-13.1 {-in} { + frame .f -bg red + list [catch "grid .f -in .f" msg] $msg +} {1 {Window can't be managed in itself}} +grid_reset 13.1 + +test grid-13.2 {-in} { + frame .f -bg red + list [catch "grid .f -in .bad" msg] $msg +} {1 {bad window path name ".bad"}} +grid_reset 13.2 + +test grid-13.3 {-in} { + frame .f -bg red + toplevel .top + list [catch "grid .f -in .top" msg] $msg +} {1 {can't put .f inside .top}} +destroy .top +grid_reset 13.3 + +test grid-13.4 {-ipadx} { + frame .f -width 20 -height 20 -highlightthickness 0 -bg red + list [catch "grid .f -ipadx x" msg] $msg +} {1 {bad ipadx value "x": must be positive screen distance}} +grid_reset 13.4 + +test grid-13.5 {-ipadx} { + frame .f -width 200 -height 100 -highlightthickness 0 -bg red + grid .f + update + set a [winfo width .f] + grid .f -ipadx 1 + update + list $a [winfo width .f] +} {200 202} +grid_reset 13.5 + +test grid-13.6 {-ipady} { + frame .f -width 20 -height 20 -highlightthickness 0 -bg red + list [catch "grid .f -ipady x" msg] $msg +} {1 {bad ipady value "x": must be positive screen distance}} +grid_reset 13.6 + +test grid-13.7 {-ipady} { + frame .f -width 200 -height 100 -highlightthickness 0 -bg red + grid .f + update + set a [winfo height .f] + grid .f -ipady 1 + update + list $a [winfo height .f] +} {100 102} +grid_reset 13.7 + +test grid-13.8 {-padx} { + frame .f -width 20 -height 20 -highlightthickness 0 -bg red + list [catch "grid .f -padx x" msg] $msg +} {1 {bad padx value "x": must be positive screen distance}} +grid_reset 13.8 + +test grid-13.9 {-padx} { + frame .f -width 200 -height 100 -highlightthickness 0 -bg red + grid .f + update + set a "[winfo width .f] [winfo width .]" + grid .f -padx 1 + update + list $a "[winfo width .f] [winfo width .]" +} {{200 200} {200 202}} +grid_reset 13.9 + +test grid-13.10 {-pady} { + frame .f -width 20 -height 20 -highlightthickness 0 -bg red + list [catch "grid .f -pady x" msg] $msg +} {1 {bad pady value "x": must be positive screen distance}} +grid_reset 13.10 + +test grid-13.11 {-pady} { + frame .f -width 200 -height 100 -highlightthickness 0 -bg red + grid .f + update + set a "[winfo height .f] [winfo height .]" + grid .f -pady 1 + update + list $a "[winfo height .f] [winfo height .]" +} {{100 100} {100 102}} +grid_reset 13.11 + +test grid-13.12 {-ipad x and y} { + frame .f -width 20 -height 20 -highlightthickness 0 -bg red + grid columnconfigure . 0 -minsize 150 + grid rowconfigure . 0 -minsize 100 + set a "" + foreach x {0 5} { + foreach y {0 5} { + grid .f -ipadx $x -ipady $y + update + append a " $x,$y:" + foreach prop {x y width height} { + append a ,[winfo $prop .f] + } + } + } + set a +} { 0,0:,65,40,20,20 0,5:,65,35,20,30 5,0:,60,40,30,20 5,5:,60,35,30,30} +grid_reset 13.12 + +test grid-13.13 {reparenting} { + frame .1 + frame .2 + button .b + grid .1 .2 + grid .b -in .1 + set a "" + catch {unset info}; array set info [grid info .b] + lappend a [grid slaves .1],[grid slaves .2],$info(-in) + grid .b -in .2 + catch {unset info}; array set info [grid info .b] + lappend a [grid slaves .1],[grid slaves .2],$info(-in) + unset info + set a +} {.b,,.1 ,.b,.2} +grid_reset 13.13 + +test grid-14.1 {structure notify} { + frame .f -width 200 -height 100 -highlightthickness 0 -bg red + frame .g -width 200 -height 100 -highlightthickness 0 -bg red + grid .f + grid .g -in .f + update + set a "" + lappend a "[winfo x .g],[winfo y .g] \ + [winfo width .g],[winfo height .g]" + .f configure -bd 5 -relief raised + update + lappend a "[winfo x .g],[winfo y .g] \ + [winfo width .g],[winfo height .g]" + set a +} {{0,0 200,100} {5,5 200,100}} +grid_reset 14.1 + +test grid-14.2 {structure notify} { + frame .f -width 200 -height 100 + frame .f.g -width 200 -height 100 + grid .f + grid .f.g + update + set a "" + lappend a [grid bbox .],[grid bbox .f] + .f config -bd 20 + update + lappend a [grid bbox .],[grid bbox .f] +} {{0 0 200 100,0 0 200 100} {0 0 240 140,20 20 200 100}} +grid_reset 14.2 + +test grid-14.3 {map notify} { + global A + catch {unset A} + bind . <Configure> {incr A(%W)} + set A(.) 0 + foreach i {0 1 2} { + frame .$i -width 100 -height 75 + set A(.$i) 0 + } + grid .0 .1 .2 + update + bind <Configure> .1 {destroy .0} + .2 configure -bd 10 + update + bind . <Configure> {} + array get A +} {.2 2 .0 1 . 1 .1 1} +grid_reset 14.3 + +test grid-15.1 {lost slave} { + button .b + grid .b + set a [grid slaves .] + pack .b + lappend a [grid slaves .] + grid .b + lappend a [grid slaves .] +} {.b {} .b} +grid_reset 15.1 + +test grid-15.2 {lost slave} { + frame .f + grid .f + button .b + grid .b -in .f + set a [grid slaves .f] + pack .b + lappend a [grid slaves .f] + grid .b -in .f + lappend a [grid slaves .f] +} {.b {} .b} +grid_reset 15.2 + +test grid-16.1 {layout centering} { + foreach i {0 1 2} { + frame .$i -bg gray -width 75 -height 50 -bd 2 -relief ridge + grid .$i -row $i -column $i -sticky nswe + } + grid propagate . 0 + . configure -width 300 -height 250 + update + grid bbox . +} {37 50 225 150} +grid_reset 16.1 + +test grid-16.2 {layout weights (expanding)} { + foreach i {0 1 2} { + frame .$i -bg gray -width 75 -height 50 -bd 2 -relief ridge + grid .$i -row $i -column $i -sticky nswe + grid rowconfigure . $i -weight [expr $i + 1] + grid columnconfigure . $i -weight [expr $i + 1] + } + grid propagate . 0 + . configure -width 500 -height 300 + set a "" + update + foreach i {0 1 2} { + lappend a [winfo width .$i]-[winfo height .$i] + } + set a +} {120-75 167-100 213-125} +grid_reset 16.2 + +test grid-16.3 {layout weights (shrinking)} { + foreach i {0 1 2} { + frame .$i -bg gray -width 100 -height 75 -bd 2 -relief ridge + grid .$i -row $i -column $i -sticky nswe + grid rowconfigure . $i -weight [expr $i + 1] + grid columnconfigure . $i -weight [expr $i + 1] + } + grid propagate . 0 + . configure -width 200 -height 150 + set a "" + update + foreach i {0 1 2} { + lappend a [winfo width .$i]-[winfo height .$i] + } + set a +} {84-63 66-50 50-37} +grid_reset 16.3 + +test grid-16.4 {layout weights (shrinking with minsize)} { + foreach i {0 1 2} { + frame .$i -bg gray -width 100 -height 75 -bd 2 -relief ridge + grid .$i -row $i -column $i -sticky nswe + grid rowconfigure . $i -weight [expr $i + 1] -minsize 45 + grid columnconfigure . $i -weight [expr $i + 1] -minsize 65 + } + grid propagate . 0 + . configure -width 200 -height 150 + set a "" + update + foreach i {0 1 2} { + lappend a [winfo width .$i]-[winfo height .$i] + } + set a +} {70-60 65-45 65-45} +grid_reset 16.4 + +test grid-16.5 {layout weights (shrinking at minsize)} { + foreach i {0 1 2} { + frame .$i -bg gray -width 100 -height 75 -bd 2 -relief ridge + grid .$i -row $i -column $i -sticky nswe + grid rowconfigure . $i -weight 0 -minsize 70 + grid columnconfigure . $i -weight 0 -minsize 90 + } + grid propagate . 0 + . configure -width 100 -height 75 + set a "" + update + foreach i {0 1 2} { + lappend a [winfo width .$i]-[winfo height .$i] + } + set a +} {100-75 100-75 100-75} +grid_reset 16.5 + + +test grid-16.6 {layout weights (shrinking at minsize)} { + foreach i {0 1 2} { + frame .$i -bg gray -width 100 -height 75 -bd 2 -relief ridge + grid .$i -row $i -column $i -sticky nswe + grid rowconfigure . $i -weight [expr $i + 1] -minsize 52 + grid columnconfigure . $i -weight [expr $i + 1] -minsize 69 + } + grid propagate . 0 + . configure -width 200 -height 150 + set a "" + update + foreach i {0 1 2} { + lappend a [winfo width .$i]-[winfo height .$i] + } + set a +} {69-52 69-52 69-52} +grid_reset 16.6 + +test grid-16.7 {layout weights (shrinking at minsize)} { + foreach i {0 1 2} { + frame .$i -bg gray -width 100 -height 75 -bd 2 -relief ridge + grid .$i -row $i -column $i -sticky nswe + } + grid propagate . 0 + grid columnconfigure . 1 -weight 1 -minsize 0 + grid rowconfigure . 1 -weight 1 -minsize 0 + . configure -width 100 -height 75 + set a "" + update + foreach i {0 1 2} { + lappend a [winfo width .$i]-[winfo height .$i]-[winfo ismapped .$i] + } + set a +} {100-75-1 1-1-0 200-150-1} +grid_reset 16.7 + +test grid-16.8 {layout internal constraints} { + foreach i {0 1 2 3 4} { + frame .$i -bg gray -width 30 -height 25 -bd 2 -relief ridge + grid .$i -row $i -column $i -sticky nswe + } + frame .f -bg red -width 250 -height 200 + frame .g -bg green -width 200 -height 180 + lower .f + raise .g .f + grid .f -row 1 -column 1 -rowspan 3 -columnspan 3 -sticky nswe + grid .g -row 1 -column 1 -rowspan 2 -columnspan 2 -sticky nswe + update + set a "" + foreach i {0 1 2 3 4} { + append a "[winfo x .$i] " + } + append a ", " + grid remove .f + update + foreach i {0 1 2 3 4} { + append a "[winfo x .$i] " + } + append a ", " + grid remove .g + grid .f + update + foreach i {0 1 2 3 4} { + append a "[winfo x .$i] " + } + append a ", " + grid remove .f + update + foreach i {0 1 2 3 4} { + append a "[winfo x .$i] " + } + set a +} {0 30 70 250 280 , 0 30 130 230 260 , 0 30 113 197 280 , 0 30 60 90 120 } |