# # $Id: panedwindow.test,v 1.2 2006/11/07 03:45:28 jenglish Exp $ # package require Tk 8.5 package require tcltest ; namespace import -force tcltest::* loadTestedCommands # Basic sanity checks: # test panedwindow-1.0 "Setup" -body { ttk::panedwindow .pw } -result .pw test panedwindow-1.1 "Make sure empty panedwindow doesn't crash" -body { pack .pw -expand true -fill both update } test panedwindow-1.2 "Add a pane" -body { .pw add [ttk::frame .pw.f1] winfo manager .pw.f1 } -result "panedwindow" test panedwindow-1.3 "Steal pane" -body { pack .pw.f1 -side bottom winfo manager .pw.f1 } -result "pack" test panedwindow-1.4 "Make sure empty panedwindow still doesn't crash" -body { update } test panedwindow-1.5 "Remanage pane" -body { #XXX .pw insert 0 .pw.f1 .pw add .pw.f1 winfo manager .pw.f1 } -result "panedwindow" test panedwindow-1.6 "Forget pane" -body { .pw forget .pw.f1 winfo manager .pw.f1 } -result "" test panedwindow-1.7 "Make sure empty panedwindow still still doesn't crash" -body { update } test panedwindow-1.8 "Re-forget pane" -body { .pw forget .pw.f1 } -returnCodes 1 -result ".pw.f1 is not managed by .pw" test panedwindow-1.end "Cleanup" -body { destroy .pw } # Resize behavior: # test panedwindow-2.1 "..." -body { ttk::panedwindow .pw -orient horizontal .pw add [listbox .pw.l1] .pw add [listbox .pw.l2] .pw add [listbox .pw.l3] .pw add [listbox .pw.l4] pack .pw -expand true -fill both update set w1 [winfo width .] # This should make the window shrink: destroy .pw.l2 update set w2 [winfo width .] expr {$w2 < $w1} } -result 1 test panedwindow-2.2 "..., cont'd" -body { # This should keep the window from shrinking: wm geometry . [wm geometry .] set rw2 [winfo reqwidth .pw] destroy .pw.l1 update set w3 [winfo width .] set rw3 [winfo reqwidth .pw] expr {$w3 == $w2 && $rw3 < $rw2} # problem: [winfo reqwidth] shrinks, but sashes haven't moved # since we haven't gotten a ConfigureNotify. # How to (a) check for this, and (b) fix it? } -result 1 test panedwindow-2.3 "..., cont'd" -body { .pw add [listbox .pw.l5] update set rw4 [winfo reqwidth .pw] expr {$rw4 > $rw3} } -result 1 test panedwindow-2.end "Cleanup" -body { destroy .pw } # # ... # test panedwindow-3.0 "configure pane" -body { ttk::panedwindow .pw .pw add [listbox .pw.lb1] .pw add [listbox .pw.lb2] .pw pane 1 -weight 2 .pw pane 1 -weight } -result 2 test panedwindow-3.1 "configure pane -- errors" -body { .pw pane 1 -weight -4 } -returnCodes 1 -match glob -result "-weight must be nonnegative" test panedwindow-3.2 "add pane -- errors" -body { .pw add [ttk::label .pw.l] -weight -1 } -returnCodes 1 -match glob -result "-weight must be nonnegative" test panedwindow-3.end "cleanup" -body { destroy .pw } test panedwindow-4.1 "forget" -body { pack [ttk::panedwindow .pw -orient vertical] -expand true -fill both .pw add [label .pw.l1 -text "L1"] .pw add [label .pw.l2 -text "L2"] .pw add [label .pw.l3 -text "L3"] .pw add [label .pw.l4 -text "L4"] update .pw forget .pw.l1 .pw forget .pw.l2 .pw forget .pw.l3 .pw forget .pw.l4 update } test panedwindow-4.2 "forget forgotten" -body { .pw forget .pw.l1 } -returnCodes 1 -result ".pw.l1 is not managed by .pw" # checkorder $winlist -- # Ensure that Y coordinates windows in $winlist are strictly increasing. # proc checkorder {winlist} { set pos -1 foreach win $winlist { set nextpos [winfo y $win] if {$nextpos <= $pos} { error "window $win out of order" } set pos $nextpos } } test panedwindow-4.3 "insert command" -body { .pw insert end .pw.l1 .pw insert end .pw.l3 .pw insert 1 .pw.l2 .pw insert end .pw.l4 update; checkorder {.pw.l1 .pw.l2 .pw.l3 .pw.l4} } test panedwindow-4.END "cleanup" -body { destroy .pw } # See #1292219 test panedwindow-5.1 "Propage Map/Unmap state to children" -body { set result [list] pack [ttk::panedwindow .pw] .pw add [ttk::button .pw.b] update lappend result [winfo ismapped .pw] [winfo ismapped .pw.b] pack forget .pw update lappend result [winfo ismapped .pw] [winfo ismapped .pw.b] set result } -result [list 1 1 0 0] -cleanup { destroy .pw } tcltest::cleanupTests