place.test
上传用户:rrhhcc
上传日期:2015-12-11
资源大小:54129k
文件大小:13k
源码类别:

通讯编程

开发平台:

Visual C++

  1. # This file is a Tcl script to test out the "place" command.  It is
  2. # organized in the standard fashion for Tcl tests.
  3. #
  4. # Copyright (c) 1995 Sun Microsystems, Inc.
  5. # Copyright (c) 1998-1999 by Scriptics Corporation.
  6. # All rights reserved.
  7. #
  8. # RCS: @(#) $Id: place.test,v 1.8.2.1 2004/09/16 18:22:21 pspjuth Exp $
  9. package require tcltest 2.1
  10. namespace import -force tcltest::configure
  11. namespace import -force tcltest::testsDirectory
  12. configure -testdir [file join [pwd] [file dirname [info script]]]
  13. configure -loadfile [file join [testsDirectory] constraints.tcl]
  14. tcltest::loadTestedCommands
  15. # Used for constraining memory leak tests
  16. testConstraint memory [llength [info commands memory]]
  17. # XXX - This test file is woefully incomplete.  At present, only a
  18. # few of the features are tested.
  19. toplevel .t -width 300 -height 200 -bd 0
  20. wm geom .t +0+0
  21. frame .t.f -width 154 -height 84 -bd 2 -relief raised
  22. place .t.f -x 48 -y 38
  23. frame .t.f2 -width 30 -height 60 -bd 2 -relief raised
  24. update
  25. test place-1.1 {Tk_PlaceCmd procedure, "info" option} {
  26.     place .t.f2 -x 0
  27.     place info .t.f2
  28. } {-in .t -x 0 -relx 0 -y 0 -rely 0 -width {} -relwidth {} -height {} -relheight {} -anchor nw -bordermode inside}
  29. test place-1.2 {Tk_PlaceCmd procedure, "info" option} {
  30.     place .t.f2 -x 1 -y 2 -width 3 -height 4 -relx 0.1 -rely 0.2 
  31.     -relwidth 0.3 -relheight 0.4 -anchor se -in .t.f  
  32.     -bordermode outside
  33.     place info .t.f2
  34. } {-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}
  35. test place-1.3 {Tk_PlaceCmd procedure, "info" option} {
  36.     # Make sure the result is built as a proper list by using a space in parent
  37.     frame ".t.a b"
  38.     place .t.f2 -x 1 -y 2 -width {} -height 4 -relx 0.2 -rely 0.2 
  39.     -relwidth 0.3 -relheight {} -anchor w -in ".t.a b"  
  40.     -bordermode ignore
  41.     set res [place info .t.f2]
  42.     destroy ".t.a b"
  43.     set res
  44. } {-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}
  45. test place-2.1 {ConfigureSlave procedure, -height option} {
  46.     list [catch {place .t.f2 -height abcd} msg] $msg
  47. } {1 {bad screen distance "abcd"}}
  48. test place-2.2 {ConfigureSlave procedure, -height option} {
  49.     place forget .t.f2
  50.     place .t.f2 -in .t.f -height 40
  51.     update
  52.     winfo height .t.f2
  53. } {40}
  54. test place-2.3 {ConfigureSlave procedure, -height option} {
  55.     place forget .t.f2
  56.     place .t.f2 -in .t.f -height 120
  57.     update
  58.     place .t.f2 -height {}
  59.     update
  60.     winfo height .t.f2
  61. } {60}
  62. test place-3.1 {ConfigureSlave procedure, -relheight option} {
  63.     list [catch {place .t.f2 -relheight abcd} msg] $msg
  64. } {1 {expected floating-point number but got "abcd"}}
  65. test place-3.2 {ConfigureSlave procedure, -relheight option} {
  66.     place forget .t.f2
  67.     place .t.f2 -in .t.f -relheight .5
  68.     update
  69.     winfo height .t.f2
  70. } {40}
  71. test place-3.3 {ConfigureSlave procedure, -relheight option} {
  72.     place forget .t.f2
  73.     place .t.f2 -in .t.f -relheight .8
  74.     update
  75.     place .t.f2 -relheight {}
  76.     update
  77.     winfo height .t.f2
  78. } {60}
  79. test place-4.1 {ConfigureSlave procedure, bad -in options} {
  80.     place forget .t.f2
  81.     list [catch {place .t.f2 -in .t.f2} msg] $msg
  82. } [list 1 "can't place .t.f2 relative to itself"]
  83. test place-4.2 {ConfigureSlave procedure, bad -in option} {
  84.     place forget .t.f2
  85.     list [catch {place .t.f2 -in .} msg] $msg
  86. } [list 1 "can't place .t.f2 relative to ."]
  87. test place-5.1 {ConfigureSlave procedure, -relwidth option} {
  88.     list [catch {place .t.f2 -relwidth abcd} msg] $msg
  89. } {1 {expected floating-point number but got "abcd"}}
  90. test place-5.2 {ConfigureSlave procedure, -relwidth option} {
  91.     place forget .t.f2
  92.     place .t.f2 -in .t.f -relwidth .5
  93.     update
  94.     winfo width .t.f2
  95. } {75}
  96. test place-5.3 {ConfigureSlave procedure, -relwidth option} {
  97.     place forget .t.f2
  98.     place .t.f2 -in .t.f -relwidth .8
  99.     update
  100.     place .t.f2 -relwidth {}
  101.     update
  102.     winfo width .t.f2
  103. } {30}
  104. test place-6.1 {ConfigureSlave procedure, -width option} {
  105.     list [catch {place .t.f2 -width abcd} msg] $msg
  106. } {1 {bad screen distance "abcd"}}
  107. test place-6.2 {ConfigureSlave procedure, -width option} {
  108.     place forget .t.f2
  109.     place .t.f2 -in .t.f -width 100
  110.     update
  111.     winfo width .t.f2
  112. } {100}
  113. test place-6.3 {ConfigureSlave procedure, -width option} {
  114.     place forget .t.f2
  115.     place .t.f2 -in .t.f -width 120
  116.     update
  117.     place .t.f2 -width {}
  118.     update
  119.     winfo width .t.f2
  120. } {30}
  121. test place-7.1 {ReconfigurePlacement procedure, computing position} {
  122.     place forget .t.f2
  123.     place .t.f2 -in .t.f -x -2 -relx .5 -y 3 -rely .4
  124.     update
  125.     winfo geometry .t.f2
  126. } {30x60+123+75}
  127. test place-7.2 {ReconfigurePlacement procedure, position rounding} {
  128.     place forget .t.f2
  129.     place .t.f2 -in .t.f -x -1.4 -y -2.3
  130.     update
  131.     winfo geometry .t.f2
  132. } {30x60+49+38}
  133. test place-7.3 {ReconfigurePlacement procedure, position rounding} {
  134.     place forget .t.f2
  135.     place .t.f2 -in .t.f -x 1.4 -y 2.3
  136.     update
  137.     winfo geometry .t.f2
  138. } {30x60+51+42}
  139. test place-7.4 {ReconfigurePlacement procedure, position rounding} {
  140.     place forget .t.f2
  141.     place .t.f2 -in .t.f -x -1.6 -y -2.7
  142.     update
  143.     winfo geometry .t.f2
  144. } {30x60+48+37}
  145. test place-7.5 {ReconfigurePlacement procedure, position rounding} {
  146.     place forget .t.f2
  147.     place .t.f2 -in .t.f -x 1.6 -y 2.7
  148.     update
  149.     winfo geometry .t.f2
  150. } {30x60+52+43}
  151. test place-7.6 {ReconfigurePlacement procedure, position rounding} {
  152.     frame .t.f3 -width 100 -height 100 -bg #f00000 -bd 0
  153.     place .t.f3 -x 0 -y 0
  154.     raise .t.f2
  155.     place forget .t.f2
  156.     place .t.f2 -in .t.f3 -relx .303 -rely .406 -relwidth .304 -relheight .206
  157.     update
  158.     winfo geometry .t.f2
  159. } {31x20+30+41}
  160. catch {destroy .t.f3}
  161. test place-7.7 {ReconfigurePlacement procedure, computing size} {
  162.     place forget .t.f2
  163.     place .t.f2 -in .t.f -width 120 -height 89
  164.     update
  165.     list [winfo width .t.f2] [winfo height .t.f2]
  166. } {120 89}
  167. test place-7.8 {ReconfigurePlacement procedure, computing size} {
  168.     place forget .t.f2
  169.     place .t.f2 -in .t.f -relwidth .4 -relheight .5
  170.     update
  171.     list [winfo width .t.f2] [winfo height .t.f2]
  172. } {60 40}
  173. test place-7.9 {ReconfigurePlacement procedure, computing size} {
  174.     place forget .t.f2
  175.     place .t.f2 -in .t.f -width 10 -relwidth .4 -height -4 -relheight .5
  176.     update
  177.     list [winfo width .t.f2] [winfo height .t.f2]
  178. } {70 36}
  179. test place-7.10 {ReconfigurePlacement procedure, computing size} {
  180.     place forget .t.f2
  181.     place .t.f2 -in .t.f -width 10 -relwidth .4 -height -4 -relheight .5
  182.     place .t.f2 -width {} -relwidth {} -height {} -relheight {}
  183.     update
  184.     list [winfo width .t.f2] [winfo height .t.f2]
  185. } {30 60}
  186. test place-8.1 {MasterStructureProc, mapping and unmapping slaves} {
  187.     place forget .t.f2
  188.     place forget .t.f
  189.     place .t.f2 -relx 1.0 -rely 1.0 -anchor sw
  190.     update
  191.     set result [winfo ismapped .t.f2]
  192.     wm iconify .t
  193.     update
  194.     lappend result [winfo ismapped .t.f2]
  195.     place .t.f2 -x 40 -y 30 -relx 0 -rely 0 -anchor nw
  196.     update
  197.     lappend result [winfo x .t.f2] [winfo y .t.f2] [winfo ismapped .t.f2]
  198.     wm deiconify .t
  199.     update
  200.     lappend result [winfo ismapped .t.f2]
  201. } {1 0 40 30 0 1}
  202. test place-8.2 {MasterStructureProc, mapping and unmapping slaves} {
  203.     place forget .t.f2
  204.     place forget .t.f
  205.     place .t.f -x 0 -y 0 -width 200 -height 100
  206.     place .t.f2 -in .t.f -relx 1.0 -rely 1.0 -anchor sw -width 50 -height 20
  207.     update
  208.     set result [winfo ismapped .t.f2]
  209.     wm iconify .t
  210.     update
  211.     lappend result [winfo ismapped .t.f2]
  212.     place .t.f2 -x 40 -y 30 -relx 0 -rely 0 -anchor nw
  213.     update
  214.     lappend result [winfo x .t.f2] [winfo y .t.f2] [winfo ismapped .t.f2]
  215.     wm deiconify .t
  216.     update
  217.     lappend result [winfo ismapped .t.f2]
  218. } {1 0 42 32 0 1}
  219. test place-9.1 {PlaceObjCmd} {
  220.     list [catch {place} msg] $msg
  221. } [list 1 "wrong # args: should be "place option|pathName args""]
  222. test place-9.2 {PlaceObjCmd} {
  223.     list [catch {place foo} msg] $msg
  224. } [list 1 "wrong # args: should be "place option|pathName args""]
  225. test place-9.3 {PlaceObjCmd} {
  226.     catch {destroy .foo}
  227.     list [catch {place .foo bar} msg] $msg
  228. } [list 1 "bad window path name ".foo""]
  229. test place-9.4 {PlaceObjCmd} {
  230.     catch {destroy .foo}
  231.     list [catch {place bar .foo} msg] $msg
  232. } [list 1 "bad window path name ".foo""]
  233. test place-9.5 {PlaceObjCmd} {
  234.     catch {destroy .foo}
  235.     frame .foo
  236.     set res [list [catch {place badopt .foo} msg] $msg]
  237.     destroy .foo
  238.     set res
  239. } [list 1 "bad option "badopt": must be configure, forget, info, or slaves"]
  240. test place-9.6 {PlaceObjCmd, configure errors} {
  241.     catch {destroy .foo}
  242.     frame .foo
  243.     set res [list [catch {place configure .foo} msg] $msg]
  244.     destroy .foo
  245.     set res
  246. } [list 0 ""]
  247. test place-9.7 {PlaceObjCmd, configure errors} {
  248.     catch {destroy .foo}
  249.     frame .foo
  250.     set res [list [catch {place configure .foo bar} msg] $msg]
  251.     destroy .foo
  252.     set res
  253. } [list 0 ""]
  254. test place-9.8 {PlaceObjCmd, configure} {
  255.     catch {destroy .foo}
  256.     frame .foo
  257.     place .foo -x 0 -y 0
  258.     set res [place configure .foo]
  259.     destroy .foo
  260.     set res
  261. } [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}]
  262. test place-9.9 {PlaceObjCmd, configure} {
  263.     catch {destroy .foo}
  264.     frame .foo
  265.     place .foo -x 0 -y 0
  266.     set res [place configure .foo -x]
  267.     destroy .foo
  268.     set res
  269. } [list -x {} {} 0 0]
  270. test place-9.10 {PlaceObjCmd, forget errors} {
  271.     catch {destroy .foo}
  272.     frame .foo
  273.     set res [list [catch {place forget .foo bar} msg] $msg]
  274.     destroy .foo
  275.     set res
  276. } [list 1 "wrong # args: should be "place forget pathName""]
  277. test place-9.11 {PlaceObjCmd, info errors} {
  278.     catch {destroy .foo}
  279.     frame .foo
  280.     set res [list [catch {place info .foo bar} msg] $msg]
  281.     destroy .foo
  282.     set res
  283. } [list 1 "wrong # args: should be "place info pathName""]
  284. test place-9.12 {PlaceObjCmd, slaves errors} {
  285.     catch {destroy .foo}
  286.     frame .foo
  287.     set res [list [catch {place slaves .foo bar} msg] $msg]
  288.     destroy .foo
  289.     set res
  290. } [list 1 "wrong # args: should be "place slaves pathName""]
  291.     
  292. test place-10.1 {ConfigureSlave} {
  293.     catch {destroy .foo}
  294.     frame .foo
  295.     set res [list [catch {place .foo -badopt} msg] $msg]
  296.     destroy .foo
  297.     set res
  298. } [list 1 "unknown option "-badopt""]
  299. test place-10.2 {ConfigureSlave} {
  300.     catch {destroy .foo}
  301.     frame .foo
  302.     set res [list [catch {place .foo -anchor} msg] $msg]
  303.     destroy .foo
  304.     set res
  305. } [list 1 "value for "-anchor" missing"]
  306. test place-10.3 {ConfigureSlave} {
  307.     catch {destroy .foo}
  308.     frame .foo
  309.     set res [list [catch {place .foo -bordermode j} msg] $msg]
  310.     destroy .foo
  311.     set res
  312. } [list 1 "bad bordermode "j": must be inside, outside, or ignore"]
  313. test place-10.4 {ConfigureSlave} {
  314.     catch {destroy .foo}
  315.     frame .foo
  316.     set res [list [catch {place configure .foo -x 0 -y} msg] $msg]
  317.     destroy .foo
  318.     set res
  319. } [list 1 "value for "-y" missing"]
  320. test place-11.1 {PlaceObjCmd, slaves command} {
  321.     catch {destroy .foo}
  322.     frame .foo
  323.     set res [place slaves .foo]
  324.     destroy .foo
  325.     set res
  326. } {}
  327. test place-11.2 {PlaceObjCmd, slaves command} {
  328.     catch {destroy .foo .bar}
  329.     frame .foo
  330.     frame .bar
  331.     place .bar -in .foo
  332.     set res [place slaves .foo]
  333.     destroy .foo
  334.     destroy .bar
  335.     set res
  336. } [list .bar]
  337. test place-12.1 {PlaceObjCmd, forget command} {
  338.     catch {destroy .foo}
  339.     frame .foo
  340.     place .foo -width 50 -height 50
  341.     update
  342.     set res [winfo ismapped .foo]
  343.     place forget .foo
  344.     update
  345.     lappend res [winfo ismapped .foo]
  346.     destroy .foo
  347.     set res
  348. } [list 1 0]
  349. test place-13.1 {test respect for internalborder} {
  350.     toplevel .pack
  351.     wm geometry .pack 200x200
  352.     frame .pack.l -width 15 -height 10
  353.     labelframe .pack.lf -labelwidget .pack.l
  354.     pack .pack.lf -fill both -expand 1
  355.     frame .pack.lf.f
  356.     place .pack.lf.f -x 0 -y 0 -relwidth 1.0 -relheight 1.0
  357.     update
  358.     set res [list [winfo geometry .pack.lf.f]]
  359.     .pack.lf configure -labelanchor e -padx 3 -pady 5
  360.     update
  361.     lappend res [winfo geometry .pack.lf.f]
  362.     destroy .pack
  363.     set res
  364. } {196x188+2+10 177x186+5+7}
  365. test place-14.1 {memory leak testing} -setup {
  366.     proc getbytes {} {
  367.         set lines [split [memory info] "n"]
  368.         lindex [lindex $lines 3] 3
  369.     }
  370.     # Repeat each body checking that memory does not increase
  371.     proc stress {args} {
  372.         set res {}
  373.         foreach body $args {
  374.             set end 0
  375.             for {set i 0} {$i < 5} {incr i} {
  376.                 uplevel 1 $body
  377.                 set tmp $end
  378.                 set end [getbytes]
  379.             }
  380.             lappend res [expr {$end - $tmp}]
  381.         }
  382.         return $res
  383.     }
  384. } -constraints memory -body {
  385.     # Test all manners of forgetting a slave
  386.     frame .f
  387.     frame .f.f
  388.     stress {
  389.         place .f.f -x [expr {1 + 1}] -y [expr {2 + 2}]
  390.         place forget .f.f
  391.     } {
  392.         place .f.f -x [expr {1 + 1}] -y [expr {2 + 2}]
  393.         pack .f.f
  394.     } {
  395.         place .f.f -x [expr {1 + 1}] -y [expr {2 + 2}]
  396.         destroy .f
  397.         frame .f
  398.         frame .f.f
  399.     }
  400. } -result {0 0 0} -cleanup {
  401.     destroy .f
  402.     rename getbytes {}
  403.     rename stress {}
  404. }
  405. catch {destroy .t}
  406. # cleanup
  407. ::tcltest::cleanupTests
  408. return