diff options
Diffstat (limited to 'tk8.6/tests/place.test')
-rw-r--r-- | tk8.6/tests/place.test | 504 |
1 files changed, 504 insertions, 0 deletions
diff --git a/tk8.6/tests/place.test b/tk8.6/tests/place.test new file mode 100644 index 0000000..ddfa64c --- /dev/null +++ b/tk8.6/tests/place.test @@ -0,0 +1,504 @@ +# This file is a Tcl script to test out the "place" command. It is +# organized in the standard fashion for Tcl tests. +# +# Copyright (c) 1995 Sun Microsystems, Inc. +# Copyright (c) 1998-1999 by Scriptics Corporation. +# All rights reserved. + +package require tcltest 2.2 +namespace import ::tcltest::* +eval tcltest::configure $argv +tcltest::loadTestedCommands + +# Used for constraining memory leak tests +testConstraint memory [llength [info commands memory]] + +# XXX - This test file is woefully incomplete. At present, only a +# few of the features are tested. + +# Widgets used in tests 1.* - 8.* +toplevel .t -width 300 -height 200 -bd 0 +wm geom .t +0+0 +frame .t.f -width 154 -height 84 -bd 2 -relief raised +place .t.f -x 48 -y 38 +frame .t.f2 -width 30 -height 60 -bd 2 -relief raised +update + +test place-1.1 {Tk_PlaceCmd procedure, "info" option} -setup { + place forget .t.f2 +} -body { + place .t.f2 -x 0 + place info .t.f2 +} -result {-in .t -x 0 -relx 0 -y 0 -rely 0 -width {} -relwidth {} -height {} -relheight {} -anchor nw -bordermode inside} +test place-1.2 {Tk_PlaceCmd procedure, "info" option} -setup { + place forget .t.f2 +} -body { + place .t.f2 -x 1 -y 2 -width 3 -height 4 -relx 0.1 -rely 0.2 \ + -relwidth 0.3 -relheight 0.4 -anchor se -in .t.f \ + -bordermode outside + place info .t.f2 +} -result {-in .t.f -x 1 -relx 0.1 -y 2 -rely 0.2 -width 3 -relwidth 0.3 -height 4 -relheight 0.4 -anchor se -bordermode outside} +test place-1.3 {Tk_PlaceCmd procedure, "info" option} -setup { + place forget .t.f2 + destroy .t.a.b +} -body { + # Make sure the result is built as a proper list by using a space in parent + frame ".t.a b" + place .t.f2 -x 1 -y 2 -width {} -height 4 -relx 0.2 -rely 0.2 \ + -relwidth 0.3 -relheight {} -anchor w -in ".t.a b" \ + -bordermode ignore + place info .t.f2 +} -cleanup { + destroy ".t.a.b" +} -result {-in {.t.a b} -x 1 -relx 0.2 -y 2 -rely 0.2 -width {} -relwidth 0.3 -height 4 -relheight {} -anchor w -bordermode ignore} + + +test place-2.1 {ConfigureSlave procedure, -height option} -body { + place .t.f2 -height abcd +} -returnCodes error -result {bad screen distance "abcd"} +test place-2.2 {ConfigureSlave procedure, -height option} -setup { + place forget .t.f2 +} -body { + place .t.f2 -in .t.f -height 40 + update + winfo height .t.f2 +} -result {40} +test place-2.3 {ConfigureSlave procedure, -height option} -setup { + place forget .t.f2 +} -body { + place .t.f2 -in .t.f -height 120 + update + place .t.f2 -height {} + update + winfo height .t.f2 +} -result {60} + + +test place-3.1 {ConfigureSlave procedure, -relheight option} -body { + place .t.f2 -relheight abcd +} -returnCodes error -result {expected floating-point number but got "abcd"} +test place-3.2 {ConfigureSlave procedure, -relheight option} -setup { + place forget .t.f2 +} -body { + place .t.f2 -in .t.f -relheight .5 + update + winfo height .t.f2 +} -result {40} +test place-3.3 {ConfigureSlave procedure, -relheight option} -setup { + place forget .t.f2 +} -body { + place .t.f2 -in .t.f -relheight .8 + update + place .t.f2 -relheight {} + update + winfo height .t.f2 +} -result {60} + + +test place-4.1 {ConfigureSlave procedure, bad -in options} -setup { + place forget .t.f2 +} -body { + place .t.f2 -in .t.f2 +} -returnCodes error -result {can't place .t.f2 relative to itself} +test place-4.2 {ConfigureSlave procedure, bad -in option} -setup { + place forget .t.f2 +} -body { + set result [list [winfo manager .t.f2]] + catch {place .t.f2 -in .t.f2} + lappend result [winfo manager .t.f2] +} -result {{} {}} +test place-4.3 {ConfigureSlave procedure, bad -in option} -setup { + place forget .t.f2 +} -body { + winfo manager .t.f2 + place .t.f2 -in .t.f2 +} -returnCodes error -result {can't place .t.f2 relative to itself} +test place-4.4 {ConfigureSlave procedure, bad -in option} -setup { + place forget .t.f2 +} -body { + place .t.f2 -in . +} -returnCodes error -result {can't place .t.f2 relative to .} + + +test place-5.1 {ConfigureSlave procedure, -relwidth option} -body { + place .t.f2 -relwidth abcd +} -returnCodes error -result {expected floating-point number but got "abcd"} +test place-5.2 {ConfigureSlave procedure, -relwidth option} -setup { + place forget .t.f2 +} -body { + place .t.f2 -in .t.f -relwidth .5 + update + winfo width .t.f2 +} -result {75} +test place-5.3 {ConfigureSlave procedure, -relwidth option} -setup { + place forget .t.f2 +} -body { + place .t.f2 -in .t.f -relwidth .8 + update + place .t.f2 -relwidth {} + update + winfo width .t.f2 +} -result {30} + +test place-6.1 {ConfigureSlave procedure, -width option} -body { + place .t.f2 -width abcd +} -returnCodes error -result {bad screen distance "abcd"} +test place-6.2 {ConfigureSlave procedure, -width option} -setup { + place forget .t.f2 +} -body { + place .t.f2 -in .t.f -width 100 + update + winfo width .t.f2 +} -result {100} +test place-6.3 {ConfigureSlave procedure, -width option} -setup { + place forget .t.f2 +} -body { + place .t.f2 -in .t.f -width 120 + update + place .t.f2 -width {} + update + winfo width .t.f2 +} -result {30} + + +test place-7.1 {ReconfigurePlacement procedure, computing position} -setup { + place forget .t.f2 +} -body { + place .t.f2 -in .t.f -x -2 -relx .5 -y 3 -rely .4 + update + winfo geometry .t.f2 +} -result {30x60+123+75} +test place-7.2 {ReconfigurePlacement procedure, position rounding} -setup { + place forget .t.f2 +} -body { + place .t.f2 -in .t.f -x -1.4 -y -2.3 + update + winfo geometry .t.f2 +} -result {30x60+49+38} +test place-7.3 {ReconfigurePlacement procedure, position rounding} -setup { + place forget .t.f2 +} -body { + place .t.f2 -in .t.f -x 1.4 -y 2.3 + update + winfo geometry .t.f2 +} -result {30x60+51+42} +test place-7.4 {ReconfigurePlacement procedure, position rounding} -setup { + place forget .t.f2 +} -body { + place .t.f2 -in .t.f -x -1.6 -y -2.7 + update + winfo geometry .t.f2 +} -result {30x60+48+37} +test place-7.5 {ReconfigurePlacement procedure, position rounding} -setup { + place forget .t.f2 +} -body { + place .t.f2 -in .t.f -x 1.6 -y 2.7 + update + winfo geometry .t.f2 +} -result {30x60+52+43} +test place-7.6 {ReconfigurePlacement procedure, position rounding} -setup { + destroy .t.f3 +} -body { + frame .t.f3 -width 100 -height 100 -bg #f00000 -bd 0 + place .t.f3 -x 0 -y 0 + raise .t.f2 + place forget .t.f2 + place .t.f2 -in .t.f3 -relx .303 -rely .406 -relwidth .304 -relheight .206 + update + winfo geometry .t.f2 +} -cleanup { + destroy .t.f3 +} -result {31x20+30+41} +test place-7.7 {ReconfigurePlacement procedure, computing size} -setup { + place forget .t.f2 +} -body { + place .t.f2 -in .t.f -width 120 -height 89 + update + list [winfo width .t.f2] [winfo height .t.f2] +} -result {120 89} +test place-7.8 {ReconfigurePlacement procedure, computing size} -setup { + place forget .t.f2 +} -body { + place .t.f2 -in .t.f -relwidth .4 -relheight .5 + update + list [winfo width .t.f2] [winfo height .t.f2] +} -result {60 40} +test place-7.9 {ReconfigurePlacement procedure, computing size} -setup { + place forget .t.f2 +} -body { + place .t.f2 -in .t.f -width 10 -relwidth .4 -height -4 -relheight .5 + update + list [winfo width .t.f2] [winfo height .t.f2] +} -result {70 36} +test place-7.10 {ReconfigurePlacement procedure, computing size} -setup { + place forget .t.f2 +} -body { + place .t.f2 -in .t.f -width 10 -relwidth .4 -height -4 -relheight .5 + place .t.f2 -width {} -relwidth {} -height {} -relheight {} + update + list [winfo width .t.f2] [winfo height .t.f2] +} -result {30 60} + + +test place-8.1 {MasterStructureProc, mapping and unmapping slaves} -setup { + place forget .t.f2 + place forget .t.f +} -body { + place .t.f2 -relx 1.0 -rely 1.0 -anchor sw + update + set result [winfo ismapped .t.f2] + wm iconify .t + update + lappend result [winfo ismapped .t.f2] + place .t.f2 -x 40 -y 30 -relx 0 -rely 0 -anchor nw + update + lappend result [winfo x .t.f2] [winfo y .t.f2] [winfo ismapped .t.f2] + wm deiconify .t + update + lappend result [winfo ismapped .t.f2] +} -result {1 0 40 30 0 1} +test place-8.2 {MasterStructureProc, mapping and unmapping slaves} -setup { + place forget .t.f2 + place forget .t.f +} -body { + place .t.f -x 0 -y 0 -width 200 -height 100 + place .t.f2 -in .t.f -relx 1.0 -rely 1.0 -anchor sw -width 50 -height 20 + update + set result [winfo ismapped .t.f2] + wm iconify .t + update + lappend result [winfo ismapped .t.f2] + place .t.f2 -x 40 -y 30 -relx 0 -rely 0 -anchor nw + update + lappend result [winfo x .t.f2] [winfo y .t.f2] [winfo ismapped .t.f2] + wm deiconify .t + update + lappend result [winfo ismapped .t.f2] +} -result {1 0 42 32 0 1} +destroy .t + + +test place-9.1 {PlaceObjCmd} -body { + place +} -returnCodes error -result {wrong # args: should be "place option|pathName args"} +test place-9.2 {PlaceObjCmd} -body { + place foo +} -returnCodes error -result {wrong # args: should be "place option|pathName args"} +test place-9.3 {PlaceObjCmd} -setup { + destroy .foo +} -body { + place .foo bar +} -returnCodes error -result {bad window path name ".foo"} +test place-9.4 {PlaceObjCmd} -setup { + destroy .foo +} -body { + place bar .foo +} -cleanup { + destroy .foo +} -returnCodes error -result {bad window path name ".foo"} +test place-9.5 {PlaceObjCmd} -setup { + destroy .foo +} -body { + frame .foo + place badopt .foo +} -cleanup { + destroy .foo +} -returnCodes error -result {bad option "badopt": must be configure, forget, info, or slaves} +test place-9.6 {PlaceObjCmd, configure errors} -setup { + destroy .foo +} -body { + frame .foo + place configure .foo +} -cleanup { + destroy .foo +} -returnCodes ok -result {} +test place-9.7 {PlaceObjCmd, configure errors} -setup { + destroy .foo +} -body { + frame .foo + place configure .foo bar +} -cleanup { + destroy .foo +} -returnCodes ok -result {} +test place-9.8 {PlaceObjCmd, configure} -setup { + destroy .foo +} -body { + frame .foo + place .foo -x 0 -y 0 + place configure .foo +} -cleanup { + destroy .foo +} -result [list {-anchor {} {} nw nw} {-bordermode {} {} inside inside} {-height {} {} {} {}} {-in {} {} {} .} {-relheight {} {} {} {}} {-relwidth {} {} {} {}} {-relx {} {} 0 0.0} {-rely {} {} 0 0.0} {-width {} {} {} {}} {-x {} {} 0 0} {-y {} {} 0 0}] +test place-9.9 {PlaceObjCmd, configure} -setup { + destroy .foo +} -body { + frame .foo + place .foo -x 0 -y 0 + place configure .foo -x +} -cleanup { + destroy .foo +} -result {-x {} {} 0 0} +test place-9.10 {PlaceObjCmd, forget errors} -setup { + destroy .foo +} -body { + frame .foo + place forget .foo bar +} -cleanup { + destroy .foo +} -returnCodes error -result {wrong # args: should be "place forget pathName"} +test place-9.11 {PlaceObjCmd, info errors} -setup { + destroy .foo +} -body { + frame .foo + place info .foo bar +} -cleanup { + destroy .foo +} -returnCodes error -result {wrong # args: should be "place info pathName"} +test place-9.12 {PlaceObjCmd, slaves errors} -setup { + destroy .foo +} -body { + frame .foo + place slaves .foo bar +} -cleanup { + destroy .foo +} -returnCodes error -result {wrong # args: should be "place slaves pathName"} + + +test place-10.1 {ConfigureSlave} -setup { + destroy .foo +} -body { + frame .foo + place .foo -badopt +} -cleanup { + destroy .foo +} -returnCodes error -result {unknown option "-badopt"} +test place-10.2 {ConfigureSlave} -setup { + destroy .foo +} -body { + frame .foo + place .foo -anchor +} -cleanup { + destroy .foo +} -returnCodes error -result {value for "-anchor" missing} +test place-10.3 {ConfigureSlave} -setup { + destroy .foo +} -body { + frame .foo + place .foo -bordermode j +} -cleanup { + destroy .foo +} -returnCodes error -result {bad bordermode "j": must be inside, outside, or ignore} +test place-10.4 {ConfigureSlave} -setup { + destroy .foo +} -body { + frame .foo + place configure .foo -x 0 -y +} -cleanup { + destroy .foo +} -returnCodes error -result {value for "-y" missing} + + +test place-11.1 {PlaceObjCmd, slaves command} -setup { + destroy .foo +} -body { + frame .foo + place slaves .foo +} -cleanup { + destroy .foo +} -result {} +test place-11.2 {PlaceObjCmd, slaves command} -setup { + destroy .foo .bar +} -body { + frame .foo + frame .bar + place .bar -in .foo + place slaves .foo +} -cleanup { + destroy .foo .bar +} -result [list .bar] + + +test place-12.1 {PlaceObjCmd, forget command} -setup { + destroy .foo +} -body { + frame .foo + place .foo -width 50 -height 50 + update + set res [winfo ismapped .foo] + place forget .foo + update + lappend res [winfo ismapped .foo] +} -cleanup { + destroy .foo +} -result {1 0} + + +test place-13.1 {test respect for internalborder} -setup { + destroy .pack +} -body { + 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 + place .pack.lf.f -x 0 -y 0 -relwidth 1.0 -relheight 1.0 + 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] +} -cleanup { + destroy .pack +} -result {196x188+2+10 177x186+5+7} + + +test place-14.1 {memory leak testing} -constraints memory -setup { + destroy .f + proc getbytes {} { + set lines [split [memory info] "\n"] + lindex [lindex $lines 3] 3 + } + # Repeat each body checking that memory does not increase + proc stress {args} { + set res {} + foreach body $args { + set end 0 + for {set i 0} {$i < 5} {incr i} { + uplevel 1 $body + set tmp $end + set end [getbytes] + } + lappend res [expr {$end - $tmp}] + } + return $res + } +} -body { + # Test all manners of forgetting a slave + frame .f + frame .f.f + stress { + place .f.f -x [expr {1 + 1}] -y [expr {2 + 2}] + place forget .f.f + } { + place .f.f -x [expr {1 + 1}] -y [expr {2 + 2}] + pack .f.f + } { + place .f.f -x [expr {1 + 1}] -y [expr {2 + 2}] + destroy .f + frame .f + frame .f.f + } +} -cleanup { + destroy .f + rename getbytes {} + rename stress {} +} -result {0 0 0} + + +# cleanup +cleanupTests +return + + + |