OSDN Git Service

Updated to tk 8.4.1
[pf3gnuchains/sourceware.git] / tk / tests / grid.test
index e9720cb..082ecb7 100644 (file)
@@ -7,9 +7,12 @@
 #
 # RCS: @(#) $Id$
 
-if {[lsearch [namespace children] ::tcltest] == -1} {
-    source [file join [pwd] [file dirname [info script]] defs.tcl]
-}
+package require tcltest 2.1
+namespace import -force tcltest::configure
+namespace import -force tcltest::testsDirectory
+configure -testdir [file join [pwd] [file dirname [info script]]]
+configure -loadfile [file join [testsDirectory] constraints.tcl]
+tcltest::loadTestedCommands
 
 # helper routine to return "." to a sane state after a test
 # The variable GRID_VERBOSE can be used to "look" at the result
@@ -28,10 +31,10 @@ proc grid_reset {{test ?} {top .}} {
     update
     foreach {cols rows} [grid size .] {}
     for {set i 0} {$i <= $cols} {incr i} {
-       grid columnconfigure . $i -weight 0 -minsize 0 -pad 0
+       grid columnconfigure . $i -weight 0 -minsize 0 -pad 0 -uniform ""
     }
     for {set i 0} {$i <= $rows} {incr i} {
-       grid rowconfigure . $i -weight 0 -minsize 0 -pad 0
+       grid rowconfigure . $i -weight 0 -minsize 0 -pad 0 -uniform ""
     }
     grid propagate . 1
     update
@@ -46,7 +49,7 @@ test grid-1.1 {basic argument checking} {
 
 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.}}
+} {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
@@ -68,6 +71,22 @@ test grid-1.6 {basic argument checking} {
        list [catch {grid x} msg] $msg
 } {1 {can't determine master window}}
 
+test grid-1.7 {basic argument checking} {
+       list [catch {grid configure x} msg] $msg
+} {1 {can't determine master window}}
+
+test grid-1.8 {basic argument checking} {
+       button .b
+       list [catch {grid x .b} msg] $msg
+} {0 {}}
+grid_reset 1.8
+
+test grid-1.9 {basic argument checking} {
+       button .b
+       list [catch {grid configure x .b} msg] $msg
+} {0 {}}
+grid_reset 1.9
+
 test grid-2.1 {bbox} {
        list [catch {grid bbox .} msg] $msg
 } {0 {0 0 0 0}}
@@ -82,7 +101,7 @@ test grid-2.2 {bbox} {
 
 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??"}}
+} {1 {wrong # args: should be "grid bbox master ?column row ?column row??"}}
 
 test grid-2.4 {bbox} {
        list [catch {grid bbox .bad 0 0} msg] $msg
@@ -175,6 +194,19 @@ test grid-3.7 {configure: basic argument checking} {
 } {1 {can't put .f.b inside .}}
 grid_reset 3.7
 
+test grid-3.8 {configure: basic argument checking} {
+    button .b
+    grid configure x .b
+    grid slaves .
+} {.b}
+grid_reset 3.8
+
+test grid-3.9 {configure: basic argument checking} {
+    button .b
+    list [catch {grid configure y .b} msg] $msg
+} {1 {invalid window shortcut, "y" should be '-', 'x', or '^'}}
+grid_reset 3.9
+
 test grid-4.1 {forget: basic argument checking} {
     list [catch {grid forget foo} msg] $msg
 } {1 {bad window path name "foo"}}
@@ -198,6 +230,15 @@ test grid-4.3 {forget} {
 } {-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.3.1 {forget} {
+    button .c
+    grid .c -row 2 -column 2 -rowspan 2 -columnspan 2 -padx {3 5} -pady {4 7} -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.1
+
 test grid-4.4 {forget, calling Tk_UnmaintainGeometry} {
     frame .f -bd 2 -relief raised
     place .f -x 10 -y 20 -width 200 -height 100
@@ -476,19 +517,19 @@ test grid-9.3 {slaves} {
 
 test grid-9.4 {slaves} {
        list [catch {grid slaves . a b} msg] $msg
-} {1 {invalid args: should be "grid slaves window ?-option value...?"}}
+} {1 {bad option "a": must be -column or -row}}
 
 test grid-9.5 {slaves} {
-       list [catch {grid slaves . -foo x} msg] $msg
+       list [catch {grid slaves . -column 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}}
+       list [catch {grid slaves . -row -3} msg] $msg
+} {1 {-row 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"}}
+} {1 {bad option "-foo": must be -column or -row}}
 
 test grid-9.8 {slaves} {
        list [catch {grid slaves .x -row 3} msg] $msg
@@ -554,12 +595,12 @@ 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}}
+} {0 {-minsize 0 -pad 0 -uniform {} -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.}}
+} {1 {bad option "-foo": must be -minsize, -pad, -uniform, or -weight}}
 grid_reset 10.7
 
 test grid-10.8 {column/row configure} {
@@ -581,34 +622,34 @@ 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
+grid_reset 10.11
 
 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
+grid_reset 10.12
 
 test grid-10.13 {column/row configure} {
        grid columnconfigure . 0 -weight 3
        grid columnconfigure . 0 -weight
 } {3}
-grid_reset 10.12
+grid_reset 10.13
 
 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
+grid_reset 10.14
 
 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
+grid_reset 10.15
 
 test grid-10.16 {column/row configure} {
        grid columnconfigure . 0 -pad 3
        grid columnconfigure . 0 -pad
 } {3}
-grid_reset 10.15
+grid_reset 10.16
 
 test grid-10.17 {column/row configure} {
        frame .f
@@ -624,17 +665,30 @@ test grid-10.17 {column/row configure} {
        grid columnconfigure .f 0 -weight 0
        set a
 } {0 1 0 1}
-grid_reset 10.16
+grid_reset 10.17
 
 test grid-10.18 {column/row configure} {
        frame .f
-       grid columnconfigure .f 0 -minsize 10 -weight 1
+       grid columnconfigure .f {0 2} -minsize 10 -weight 1
        list [grid columnconfigure .f 0 -minsize] \
                [grid columnconfigure .f 1 -minsize] \
+               [grid columnconfigure .f 2 -minsize] \
                [grid columnconfigure .f 0 -weight] \
-               [grid columnconfigure .f 1 -weight]
-}  {10 0 1 0}
-grid_reset 10.17
+               [grid columnconfigure .f 1 -weight] \
+               [grid columnconfigure .f 2 -weight]
+}  {10 0 10 1 0 1}
+grid_reset 10.18
+
+test grid-10.19 {column/row configure} {
+       list [catch {grid columnconfigure . {0 -1 2} -weight 1} msg] $msg
+} {1 {grid columnconfigure: "-1" is out of range}}
+grid_reset 10.19
+
+test grid-10.20 {column/row configure} {
+       grid columnconfigure . 0 -uniform foo
+       grid columnconfigure . 0 -uniform
+} {foo}
+grid_reset 10.20
 
 # auto-placement tests
 
@@ -779,7 +833,7 @@ 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
+       frame .f$i -width 60 -height 60 -highlightthickness 0 -bg red
     }
     grid .f1 .f2
     grid  ^  .f3
@@ -790,7 +844,7 @@ test grid-11.14 {default widget placement} {
                [winfo width .f$i],[winfo height .f$i]"
     }
     set a
-} {{0,25  50,50} {50,0  50,50} {50,50  50,50}}
+} {{0,30  60,60} {60,0  60,60} {60,60  60,60}}
 grid_reset 11.14
 
 test grid-11.15 {^ ^ test with multiple windows} {
@@ -809,6 +863,34 @@ test grid-11.15 {^ ^ test with multiple windows} {
 } {{0,0 50,50} {50,0 50,100} {100,0 50,100} {0,50 50,50}}
 grid_reset 11.15
 
+test grid-11.16 {default widget placement} {
+    foreach l {a b c d e} {
+        frame .$l -width 50 -height 50
+    }
+    grid .a .b .c .d -sticky news 
+    grid  x  ^  x .e -sticky news
+    update
+    set res ""
+    lappend res [winfo height .a]
+    lappend res [winfo height .b]
+    lappend res [winfo height .c]
+} {50 100 50}
+grid_reset 11.16
+
+test grid-11.17 {default widget placement} {
+    foreach l {a b c d e} {
+        frame .$l -width 50 -height 50
+    }
+    grid .a .b .c .d -sticky news
+    grid  ^  x  ^ .e -sticky news
+    update
+    set res ""
+    lappend res [winfo height .a]
+    lappend res [winfo height .b]
+    lappend res [winfo height .c]
+} {100 50 100}
+grid_reset 11.17
+
 test grid-12.1 {-sticky} {
     catch {unset data}
     frame .f -width 200 -height 100 -highlightthickness 0 -bg red
@@ -884,6 +966,12 @@ test grid-13.4 {-ipadx} {
 } {1 {bad ipadx value "x": must be positive screen distance}}
 grid_reset 13.4
 
+test grid-13.4.1 {-ipadx} {
+    frame .f -width 20 -height 20 -highlightthickness 0 -bg red
+    list [catch "grid .f -ipadx {5 5}" msg] $msg
+} {1 {bad ipadx value "5 5": must be positive screen distance}}
+grid_reset 13.4.1
+
 test grid-13.5 {-ipadx} {
     frame .f -width 200 -height 100 -highlightthickness 0 -bg red
     grid .f
@@ -901,6 +989,12 @@ test grid-13.6 {-ipady} {
 } {1 {bad ipady value "x": must be positive screen distance}}
 grid_reset 13.6
 
+test grid-13.6.1 {-ipady} {
+    frame .f -width 20 -height 20 -highlightthickness 0 -bg red
+    list [catch "grid .f -ipady {5 5}" msg] $msg
+} {1 {bad ipady value "5 5": must be positive screen distance}}
+grid_reset 13.6.1
+
 test grid-13.7 {-ipady} {
     frame .f -width 200 -height 100 -highlightthickness 0 -bg red
     grid .f
@@ -915,9 +1009,15 @@ 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}}
+} {1 {bad pad value "x": must be positive screen distance}}
 grid_reset 13.8
 
+test grid-13.8.1 {-padx} {
+    frame .f -width 20 -height 20 -highlightthickness 0 -bg red
+    list [catch "grid .f -padx {10 x}" msg] $msg
+} {1 {bad 2nd pad value "x": must be positive screen distance}}
+grid_reset 13.8.1
+
 test grid-13.9 {-padx} {
     frame .f -width 200 -height 100 -highlightthickness 0 -bg red
     grid .f
@@ -925,16 +1025,33 @@ test grid-13.9 {-padx} {
     set a "[winfo width .f] [winfo width .]"
     grid .f -padx 1
     update
-    list $a "[winfo width .f] [winfo width .]"
-} {{200 200} {200 202}}
+    list $a "[winfo width .f] [winfo width .] [winfo x .f]"
+} {{200 200} {200 202 1}}
 grid_reset 13.9
 
+test grid-13.9.1 {-padx} {
+    frame .f -width 200 -height 100 -highlightthickness 0 -bg red
+    grid .f
+    update
+    set a "[winfo width .f] [winfo width .]"
+    grid .f -padx {10 5}
+    update
+    list $a "[winfo width .f] [winfo width .] [winfo x .f]"
+} {{200 200} {200 215 10}}
+grid_reset 13.9.1
+
 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}}
+} {1 {bad pad value "x": must be positive screen distance}}
 grid_reset 13.10
 
+test grid-13.10.1 {-pady} {
+    frame .f -width 20 -height 20 -highlightthickness 0 -bg red
+    list [catch "grid .f -pady {10 x}" msg] $msg
+} {1 {bad 2nd pad value "x": must be positive screen distance}}
+grid_reset 13.10.1
+
 test grid-13.11 {-pady} {
     frame .f -width 200 -height 100 -highlightthickness 0 -bg red
     grid .f
@@ -942,10 +1059,21 @@ test grid-13.11 {-pady} {
     set a "[winfo height .f] [winfo height .]"
     grid .f -pady 1
     update
-    list $a "[winfo height .f] [winfo height .]"
-} {{100 100} {100 102}}
+    list $a "[winfo height .f] [winfo height .] [winfo y .f]"
+} {{100 100} {100 102 1}}
 grid_reset 13.11
 
+test grid-13.11.1 {-pady} {
+    frame .f -width 200 -height 100 -highlightthickness 0 -bg red
+    grid .f
+    update
+    set a "[winfo height .f] [winfo height .]"
+    grid .f -pady {4 16}
+    update
+    list $a "[winfo height .f] [winfo height .] [winfo y .f]"
+} {{100 100} {100 120 4}}
+grid_reset 13.11.1
+
 test grid-13.12 {-ipad x and y} {
     frame .f -width 20 -height 20 -highlightthickness 0 -bg red
     grid columnconfigure . 0 -minsize 150
@@ -1217,6 +1345,86 @@ test grid-16.8 {layout internal constraints} {
     }
     set a
 } {0 30 70 250 280 , 0 30 130 230 260 , 0 30 113 197 280 , 0 30 60 90 120 }
+grid_reset 16.8
+
+test grid-16.9 {layout uniform} {
+    frame .f1 -width 75 -height 50
+    frame .f2 -width 60 -height 25
+    frame .f3 -width 95 -height 75
+    frame .f4 -width 135 -height 100
+    frame .f5 -width 80 -height 40
+    for {set t 1} {$t <= 5} {incr t} {
+        grid .f$t
+    }
+    grid rowconfigure . {0 2} -uniform a
+    grid rowconfigure . {1 3} -uniform b
+    update
+    list [grid bbox . 0 0] [grid bbox . 0 1] [grid bbox . 0 2] \
+            [grid bbox . 0 3] [grid bbox . 0 4]
+} {{0 0 135 75} {0 75 135 100} {0 175 135 75} {0 250 135 100} {0 350 135 40}}
+grid_reset 16.9
+
+test grid-16.10 {layout uniform} {
+    grid [frame .f1 -width  75 -height  50] -row 0 -column 0
+    grid [frame .f2 -width  60 -height  30] -row 1 -column 2
+    grid [frame .f3 -width  95 -height  90] -row 2 -column 1
+    grid [frame .f4 -width  60 -height 100] -row 3 -column 4
+    grid [frame .f5 -width  60 -height  40] -row 4 -column 3
+
+    grid rowconfigure . {0 1} -uniform a
+    grid rowconfigure . {2 4} -uniform b
+    grid rowconfigure . {0 2} -weight 2
+    grid columnconfigure . {0 2} -uniform a
+    grid columnconfigure . {3 4} -uniform b
+    grid columnconfigure . {2 4} -weight 2
+    grid columnconfigure . 3 -minsize 70
+    grid columnconfigure . 4 -minsize 130
+    update
+    list [grid bbox . 0 0] [grid bbox . 2 1] [grid bbox . 1 2] \
+            [grid bbox . 4 3] [grid bbox . 3 4]
+} {{0 0 75 60} {170 60 150 30} {75 90 95 90} {390 180 140 100} {320 280 70 45}}
+grid_reset 16.10
+
+test grid-16.11 {layout uniform (shrink)} {
+    frame .f1 -width 75 -height 50
+    frame .f2 -width 100 -height 95
+    grid .f1 .f2 -sticky news
+    grid columnconfigure . {0 1} -uniform a
+    grid columnconfigure . 0 -weight 1
+    update
+    set res {}
+    lappend res [grid bbox . 0 0] [grid bbox . 1 0]
+    grid propagate . 0
+    . configure -width 150 -height 95
+    update
+    lappend res [grid bbox . 0 0] [grid bbox . 1 0]
+} {{0 0 100 95} {100 0 100 95} {0 0 50 95} {50 0 100 95}}
+grid_reset 16.11
+
+test grid-16.12 {layout uniform (grow)} {
+    frame .f1 -width 40 -height 50
+    frame .f2 -width 50 -height 95
+    frame .f3 -width 60 -height 50
+    frame .f4 -width 70 -height 95
+    grid .f1 .f2 .f3 .f4 -sticky news
+    grid columnconfigure . {0 1 2} -uniform a
+    # Put weight 2 on the biggest in the group to see that the groups
+    # adapts to one of the smaller.
+    grid columnconfigure . 2 -weight 2
+    grid columnconfigure . {0 3} -weight 1
+    update
+    set res {}
+    lappend res [grid bbox . 0 0] [grid bbox . 1 0]
+    lappend res [grid bbox . 2 0] [grid bbox . 3 0]
+
+    grid propagate . 0
+    . configure -width 350 -height 95
+    update
+    lappend res [grid bbox . 0 0] [grid bbox . 1 0]
+    lappend res [grid bbox . 2 0] [grid bbox . 3 0]
+} [list {0 0 50 95} {50 0 50 95} {100 0 100 95} {200 0 70 95} \
+        {0 0 70 95} {70 0 50 95} {120 0 140 95} {260 0 90 95}]
+grid_reset 16.12
 
 test grid-17.1 {forget and pending idle handlers} {
     # This test is intended to detect a crash caused by a failure to remove
@@ -1241,20 +1449,74 @@ test grid-17.1 {forget and pending idle handlers} {
     set result ok
 } ok
 
+test grid-18.1 {test respect for internalborder} {
+    toplevel .pack
+    wm geometry .pack 200x200
+    frame .pack.l -width 15 -height 10
+    labelframe .pack.lf -labelwidget .pack.l
+    pack .pack.lf -fill both -expand 1
+    frame .pack.lf.f
+    grid .pack.lf.f -sticky news
+    grid columnconfigure .pack.lf 0 -weight 1
+    grid rowconfigure .pack.lf 0 -weight 1
+    update
+    set res [list [winfo geometry .pack.lf.f]]
+    .pack.lf configure -labelanchor e -padx 3 -pady 5
+    update
+    lappend res [winfo geometry .pack.lf.f]
+    destroy .pack
+    set res
+} {196x188+2+10 177x186+5+7}
+test grid-18.2 {test support for minreqsize} {
+    toplevel .pack
+    wm geometry .pack {}
+    frame .pack.l -width 150 -height 100
+    labelframe .pack.lf -labelwidget .pack.l
+    pack .pack.lf -fill both -expand 1
+    frame .pack.lf.f -width 20 -height 25
+    grid .pack.lf.f
+    update
+    set res [list [winfo geometry .pack.lf]]
+    .pack.lf configure -labelanchor ws
+    update
+    lappend res [winfo geometry .pack.lf]
+    destroy .pack
+    set res
+} {162x127+0+0 172x112+0+0}
+
+test grid-19.1 {uniform realloc} {
+    # Use a lot of uniform groups to test the reallocation mechanism
+    for {set t 0} {$t < 100} {incr t 2} {
+        frame .fa$t -width 5 -height 20
+        frame .fb$t -width 6 -height 20
+        grid .fa$t .fb$t -row 0 -column $t -sticky news
+        grid columnconfigure . [list $t [expr {$t + 1}]] -uniform a$t
+    }
+    update
+    grid bbox .
+} {0 0 600 20}
+grid_reset 19.1
+
+test grid-20.1 {recalculate size after removal (destroy)} {
+    label .l1 -text l1
+    grid .l1 -row 2 -column 2
+    destroy .l1
+    label .l2 -text l2
+    grid .l2
+    grid size .
+} {1 1}
+grid_reset 20.1
+
+test grid-20.2 {recalculate size after removal (forget)} {
+    label .l1 -text l1
+    grid .l1 -row 2 -column 2
+    grid forget .l1
+    label .l2 -text l2
+    grid .l2
+    grid size .
+} {1 1}
+grid_reset 20.2
+
 # cleanup
 ::tcltest::cleanupTests
 return
-
-
-
-
-
-
-
-
-
-
-
-
-
-