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

通讯编程

开发平台:

Visual C++

  1. # This file is a Tcl script to test out the "pack" command
  2. # of Tk.  It is organized in the standard fashion for Tcl tests.
  3. #
  4. # Copyright (c) 1993 The Regents of the University of California.
  5. # Copyright (c) 1994 Sun Microsystems, Inc.
  6. # Copyright (c) 1998-1999 by Scriptics Corporation.
  7. # All rights reserved.
  8. #
  9. # RCS: @(#) $Id: pack.test,v 1.10.2.1 2006/04/05 17:51:04 dgp Exp $
  10. package require tcltest 2.1
  11. namespace import -force tcltest::configure
  12. namespace import -force tcltest::testsDirectory
  13. configure -testdir [file join [pwd] [file dirname [info script]]]
  14. configure -loadfile [file join [testsDirectory] constraints.tcl]
  15. tcltest::loadTestedCommands
  16. # Utility procedures:
  17. proc pack1 {args} {
  18.     pack forget .pack.a .pack.b .pack.c .pack.d
  19.     eval pack .pack.a $args
  20.     pack .pack.b -expand yes -fill both
  21.     update
  22.     list [winfo geometry .pack.a] [winfo geometry .pack.b]
  23. }
  24. proc pack2 {args} {
  25.     pack forget .pack.a .pack.b .pack.c .pack.d
  26.     eval pack .pack.a $args
  27.     update
  28.     winfo geometry .pack.a
  29. }
  30. proc pack3 {args} {
  31.     pack forget .pack.a .pack.b .pack.c .pack.d
  32.     pack .pack.a -side  top
  33.     pack .pack.c -side left
  34.     eval pack .pack.b $args
  35.     update
  36.     winfo geometry .pack.b
  37. }
  38. proc pack4 {option value} {
  39.     pack forget .pack.a .pack.b .pack.c .pack.d
  40.     pack .pack.a $option $value
  41.     set i [pack info .pack.a]
  42.     lindex $i [expr [lsearch -exact $i $option]+1]
  43. }
  44. # Create some test windows.
  45. catch {destroy .pack}
  46. toplevel .pack
  47. wm geom .pack 300x200+0+0
  48. wm minsize .pack 1 1
  49. update idletasks
  50. foreach i {a b c d} {
  51.     frame .pack.$i
  52.     label .pack.$i.label -text $i -relief raised
  53.     place .pack.$i.label -relwidth 1.0 -relheight 1.0
  54. }
  55. .pack.a config -width 20 -height 40
  56. .pack.b config -width 50 -height 30
  57. .pack.c config -width 80 -height 80
  58. .pack.d config -width 40 -height 30
  59. test pack-1.1 {-side option} {
  60.     pack1 -side top
  61. } {20x40+140+0 300x160+0+40}
  62. test pack-1.2 {-side option} {
  63.     pack1 -side bottom
  64. } {20x40+140+160 300x160+0+0}
  65. test pack-1.3 {-side option} {
  66.     pack1 -side left
  67. } {20x40+0+80 280x200+20+0}
  68. test pack-1.4 {-side option} {
  69.     pack1 -side right
  70. } {20x40+280+80 280x200+0+0}
  71. test pack-2.1 {x padding and filling} {
  72.     pack1 -side right -padx 20
  73. } {20x40+260+80 240x200+0+0}
  74. test pack-2.1.1 {x padding and filling} {
  75.     pack1 -side right -padx {10 30}
  76. } {20x40+250+80 240x200+0+0}
  77. test pack-2.1.2 {x padding and filling} {
  78.     pack1 -side right -padx {35 5}
  79. } {20x40+275+80 240x200+0+0}
  80. test pack-2.2 {x padding and filling} {
  81.     pack1 -side right -ipadx 20
  82. } {60x40+240+80 240x200+0+0}
  83. test pack-2.3 {x padding and filling} {
  84.     pack1 -side right -ipadx 5 -padx 10
  85. } {30x40+260+80 250x200+0+0}
  86. test pack-2.4 {x padding and filling} {
  87.     pack1 -side right -padx 20 -fill x
  88. } {20x40+260+80 240x200+0+0}
  89. test pack-2.4.1 {x padding and filling} {
  90.     pack1 -side right -padx {9 31} -fill x
  91. } {20x40+249+80 240x200+0+0}
  92. test pack-2.5 {x padding and filling} {
  93.     pack1 -side right -ipadx 20 -fill x
  94. } {60x40+240+80 240x200+0+0}
  95. test pack-2.6 {x padding and filling} {
  96.     pack1 -side right -ipadx 5 -padx 10 -fill x
  97. } {30x40+260+80 250x200+0+0}
  98. test pack-2.6.1 {x padding and filling} {
  99.     pack1 -side right -ipadx 5 -padx {5 15} -fill x
  100. } {30x40+255+80 250x200+0+0}
  101. test pack-2.7 {x padding and filling} {
  102.     pack1 -side top -padx 20
  103. } {20x40+140+0 300x160+0+40}
  104. test pack-2.7.1 {x padding and filling} {
  105.     pack1 -side top -padx {0 40}
  106. } {20x40+120+0 300x160+0+40}
  107. test pack-2.7.2 {x padding and filling} {
  108.     pack1 -side top -padx {31 9}
  109. } {20x40+151+0 300x160+0+40}
  110. test pack-2.8 {x padding and filling} {
  111.     pack1 -side top -ipadx 20
  112. } {60x40+120+0 300x160+0+40}
  113. test pack-2.9 {x padding and filling} {
  114.     pack1 -side top -ipadx 5 -padx 10
  115. } {30x40+135+0 300x160+0+40}
  116. test pack-2.9.1 {x padding and filling} {
  117.     pack1 -side top -ipadx 5 -padx {5 15}
  118. } {30x40+130+0 300x160+0+40}
  119. test pack-2.10 {x padding and filling} {
  120.     pack1 -side top -padx 20 -fill x
  121. } {260x40+20+0 300x160+0+40}
  122. test pack-2.10.1 {x padding and filling} {
  123.     pack1 -side top -padx {25 15} -fill x
  124. } {260x40+25+0 300x160+0+40}
  125. test pack-2.11 {x padding and filling} {
  126.     pack1 -side top -ipadx 20 -fill x
  127. } {300x40+0+0 300x160+0+40}
  128. test pack-2.12 {x padding and filling} {
  129.     pack1 -side top -ipadx 5 -padx 10 -fill x
  130. } {280x40+10+0 300x160+0+40}
  131. test pack-2.12 {x padding and filling} {
  132.     pack1 -side top -ipadx 5 -padx {5 15} -fill x
  133. } {280x40+5+0 300x160+0+40}
  134. set pad [winfo pixels .pack 1c]
  135. test pack-2.13 {x padding and filling} {
  136.     pack forget .pack.a .pack.b .pack.c .pack.d
  137.     pack .pack.a -padx 1c
  138.     set x [pack info .pack.a]
  139.     lindex $x [expr [lsearch -exact $x -padx]+1]
  140. } $pad
  141. test pack-2.14 {x padding and filling} {
  142.     pack forget .pack.a .pack.b .pack.c .pack.d
  143.     pack .pack.a -ipadx 1c
  144.     set x [pack info .pack.a]
  145.     lindex $x [expr [lsearch -exact $x -ipadx]+1]
  146. } $pad
  147. test pack-3.1 {y padding and filling} {
  148.     pack1 -side right -pady 20
  149. } {20x40+280+80 280x200+0+0}
  150. test pack-3.1.1 {y padding and filling} {
  151.     pack1 -side right -pady {5 35}
  152. } {20x40+280+65 280x200+0+0}
  153. test pack-3.1.2 {y padding and filling} {
  154.     pack1 -side right -pady {40 0}
  155. } {20x40+280+100 280x200+0+0}
  156. test pack-3.2 {y padding and filling} {
  157.     pack1 -side right -ipady 20
  158. } {20x80+280+60 280x200+0+0}
  159. test pack-3.3 {y padding and filling} {
  160.     pack1 -side right -ipady 5 -pady 10
  161. } {20x50+280+75 280x200+0+0}
  162. test pack-3.3.1 {y padding and filling} {
  163.     pack1 -side right -ipady 5 -pady {5 15}
  164. } {20x50+280+70 280x200+0+0}
  165. test pack-3.4 {y padding and filling} {
  166.     pack1 -side right -pady 20 -fill y
  167. } {20x160+280+20 280x200+0+0}
  168. test pack-3.4.1 {y padding and filling} {
  169.     pack1 -side right -pady {35 5} -fill y
  170. } {20x160+280+35 280x200+0+0}
  171. test pack-3.5 {y padding and filling} {
  172.     pack1 -side right -ipady 20 -fill y
  173. } {20x200+280+0 280x200+0+0}
  174. test pack-3.6 {y padding and filling} {
  175.     pack1 -side right -ipady 5 -pady 10 -fill y
  176. } {20x180+280+10 280x200+0+0}
  177. test pack-3.6.1 {y padding and filling} {
  178.     pack1 -side right -ipady 5 -pady {0 20} -fill y
  179. } {20x180+280+0 280x200+0+0}
  180. test pack-3.7 {y padding and filling} {
  181.     pack1 -side top -pady 20
  182. } {20x40+140+20 300x120+0+80}
  183. test pack-3.7.1 {y padding and filling} {
  184.     pack1 -side top -pady {40 0}
  185. } {20x40+140+40 300x120+0+80}
  186. test pack-3.8 {y padding and filling} {
  187.     pack1 -side top -ipady 20
  188. } {20x80+140+0 300x120+0+80}
  189. test pack-3.9 {y padding and filling} {
  190.     pack1 -side top -ipady 5 -pady 10
  191. } {20x50+140+10 300x130+0+70}
  192. test pack-3.9.1 {y padding and filling} {
  193.     pack1 -side top -ipady 5 -pady {3 17}
  194. } {20x50+140+3 300x130+0+70}
  195. test pack-3.10 {y padding and filling} {
  196.     pack1 -side top -pady 20 -fill y
  197. } {20x40+140+20 300x120+0+80}
  198. test pack-3.10.1 {y padding and filling} {
  199.     pack1 -side top -pady {39 1} -fill y
  200. } {20x40+140+39 300x120+0+80}
  201. test pack-3.11 {y padding and filling} {
  202.     pack1 -side top -ipady 20 -fill y
  203. } {20x80+140+0 300x120+0+80}
  204. test pack-3.12 {y padding and filling} {
  205.     pack1 -side top -ipady 5 -pady 10 -fill y
  206. } {20x50+140+10 300x130+0+70}
  207. test pack-3.12.1 {y padding and filling} {
  208.     pack1 -side top -ipady 5 -pady {1 19} -fill y
  209. } {20x50+140+1 300x130+0+70}
  210. set pad [winfo pixels .pack 1c]
  211. test pack-3.13 {y padding and filling} {
  212.     pack forget .pack.a .pack.b .pack.c .pack.d
  213.     pack .pack.a -pady 1c
  214.     set x [pack info .pack.a]
  215.     lindex $x [expr [lsearch -exact $x -pady]+1]
  216. } $pad
  217. test pack-3.14 {y padding and filling} {
  218.     pack forget .pack.a .pack.b .pack.c .pack.d
  219.     pack .pack.a -ipady 1c
  220.     set x [pack info .pack.a]
  221.     lindex $x [expr [lsearch -exact $x -ipady]+1]
  222. } $pad
  223. test pack-4.1 {anchors} {
  224.     pack2 -side top -ipadx 5 -padx 10 -ipady 15 -pady 20 -expand y -anchor n
  225. } {30x70+135+20}
  226. test pack-4.2 {anchors} {
  227.     pack2 -side top -ipadx 5 -padx 10 -ipady 15 -pady 20 -expand y -anchor ne
  228. } {30x70+260+20}
  229. test pack-4.3 {anchors} {
  230.     pack2 -side top -ipadx 5 -padx 10 -ipady 15 -pady 20 -expand y -anchor e
  231. } {30x70+260+65}
  232. test pack-4.4 {anchors} {
  233.     pack2 -side top -ipadx 5 -padx 10 -ipady 15 -pady 20 -expand y -anchor se
  234. } {30x70+260+110}
  235. test pack-4.5 {anchors} {
  236.     pack2 -side top -ipadx 5 -padx 10 -ipady 15 -pady 20 -expand y -anchor s
  237. } {30x70+135+110}
  238. test pack-4.6 {anchors} {
  239.     pack2 -side top -ipadx 5 -padx 10 -ipady 15 -pady 20 -expand y -anchor sw
  240. } {30x70+10+110}
  241. test pack-4.7 {anchors} {
  242.     pack2 -side top -ipadx 5 -padx 10 -ipady 15 -pady 20 -expand y -anchor w
  243. } {30x70+10+65}
  244. test pack-4.8 {anchors} {
  245.     pack2 -side top -ipadx 5 -padx 10 -ipady 15 -pady 20 -expand y -anchor nw
  246. } {30x70+10+20}
  247. test pack-4.9 {anchors} {
  248.     pack2 -side top -ipadx 5 -padx 10 -ipady 15 -pady 20 -expand y -anchor center
  249. } {30x70+135+65}
  250. # Repeat above tests, but with a frame that isn't at (0,0), so that
  251. # we can be sure that the frame offset is being added in correctly.
  252. test pack-5.1 {more anchors} {
  253.     pack3 -side top -ipadx 5 -padx 10 -ipady 15 -pady 20 -expand y -anchor n
  254. } {60x60+160+60}
  255. test pack-5.2 {more anchors} {
  256.     pack3 -side top -ipadx 5 -padx 10 -ipady 15 -pady 20 -expand y -anchor ne
  257. } {60x60+230+60}
  258. test pack-5.3 {more anchors} {
  259.     pack3 -side top -ipadx 5 -padx 10 -ipady 15 -pady 20 -expand y -anchor e
  260. } {60x60+230+90}
  261. test pack-5.4 {more anchors} {
  262.     pack3 -side top -ipadx 5 -padx 10 -ipady 15 -pady 20 -expand y -anchor se
  263. } {60x60+230+120}
  264. test pack-5.5 {more anchors} {
  265.     pack3 -side top -ipadx 5 -padx 10 -ipady 15 -pady 20 -expand y -anchor s
  266. } {60x60+160+120}
  267. test pack-5.6 {more anchors} {
  268.     pack3 -side top -ipadx 5 -padx 10 -ipady 15 -pady 20 -expand y -anchor sw
  269. } {60x60+90+120}
  270. test pack-5.7 {more anchors} {
  271.     pack3 -side top -ipadx 5 -padx 10 -ipady 15 -pady 20 -expand y -anchor w
  272. } {60x60+90+90}
  273. test pack-5.8 {more anchors} {
  274.     pack3 -side top -ipadx 5 -padx 10 -ipady 15 -pady 20 -expand y -anchor nw
  275. } {60x60+90+60}
  276. test pack-5.9 {more anchors} {
  277.     pack3 -side top -ipadx 5 -padx 10 -ipady 15 -pady 20 -expand y -anchor center
  278. } {60x60+160+90}
  279. test pack-6.1 {-expand option} {
  280.     pack forget .pack.a .pack.b .pack.c .pack.d
  281.     pack .pack.a .pack.b .pack.c .pack.d -side left
  282.     update
  283.     list [winfo geometry .pack.a] [winfo geometry .pack.b] 
  284.     [winfo geometry .pack.c] [winfo geometry .pack.d]
  285. } {20x40+0+80 50x30+20+85 80x80+70+60 40x30+150+85}
  286. test pack-6.2 {-expand option} {
  287.     pack forget .pack.a .pack.b .pack.c .pack.d
  288.     pack .pack.a -side left -expand yes
  289.     pack .pack.b -side left
  290.     pack .pack.c .pack.d -side left -expand 1
  291.     update
  292.     list [winfo geometry .pack.a] [winfo geometry .pack.b] 
  293.     [winfo geometry .pack.c] [winfo geometry .pack.d]
  294. } {20x40+18+80 50x30+56+85 80x80+124+60 40x30+241+85}
  295. test pack-6.3 {-expand option} {
  296.     pack forget .pack.a .pack.b .pack.c .pack.d
  297.     pack .pack.a .pack.b .pack.c .pack.d -side top
  298.     update
  299.     list [winfo geometry .pack.a] [winfo geometry .pack.b] 
  300.     [winfo geometry .pack.c] [winfo geometry .pack.d]
  301. } {20x40+140+0 50x30+125+40 80x80+110+70 40x30+130+150}
  302. test pack-6.4 {-expand option} {
  303.     pack forget .pack.a .pack.b .pack.c .pack.d
  304.     pack .pack.a -side top -expand yes
  305.     pack .pack.b -side top
  306.     pack .pack.c .pack.d -side top -expand 1
  307.     update
  308.     list [winfo geometry .pack.a] [winfo geometry .pack.b] 
  309.     [winfo geometry .pack.c] [winfo geometry .pack.d]
  310. } {20x40+140+3 50x30+125+46 80x80+110+79 40x30+130+166}
  311. test pack-6.5 {-expand option} {
  312.     pack forget .pack.a .pack.b .pack.c .pack.d
  313.     pack .pack.a .pack.b .pack.c .pack.d -side right
  314.     update
  315.     list [winfo geometry .pack.a] [winfo geometry .pack.b] 
  316.     [winfo geometry .pack.c] [winfo geometry .pack.d]
  317. } {20x40+280+80 50x30+230+85 80x80+150+60 40x30+110+85}
  318. test pack-6.6 {-expand option} {
  319.     pack forget .pack.a .pack.b .pack.c .pack.d
  320.     pack .pack.a -side right -expand yes
  321.     pack .pack.b -side right
  322.     pack .pack.c .pack.d -side right -expand 1
  323.     update
  324.     list [winfo geometry .pack.a] [winfo geometry .pack.b] 
  325.     [winfo geometry .pack.c] [winfo geometry .pack.d]
  326. } {20x40+262+80 50x30+194+85 80x80+95+60 40x30+18+85}
  327. test pack-6.7 {-expand option} {
  328.     pack forget .pack.a .pack.b .pack.c .pack.d
  329.     pack .pack.a .pack.b .pack.c .pack.d -side bottom
  330.     update
  331.     list [winfo geometry .pack.a] [winfo geometry .pack.b] 
  332.     [winfo geometry .pack.c] [winfo geometry .pack.d]
  333. } {20x40+140+160 50x30+125+130 80x80+110+50 40x30+130+20}
  334. test pack-6.8 {-expand option} {
  335.     pack forget .pack.a .pack.b .pack.c .pack.d
  336.     pack .pack.a -side bottom -expand yes
  337.     pack .pack.b -side bottom
  338.     pack .pack.c .pack.d -side bottom -expand 1
  339.     update
  340.     list [winfo geometry .pack.a] [winfo geometry .pack.b] 
  341.     [winfo geometry .pack.c] [winfo geometry .pack.d]
  342. } {20x40+140+157 50x30+125+124 80x80+110+40 40x30+130+3}
  343. test pack-6.9 {-expand option} {
  344.     pack forget .pack.a .pack.b .pack.c .pack.d
  345.     pack .pack.a -side bottom -expand yes -fill both
  346.     pack .pack.b -side right
  347.     pack .pack.c -side top -expand 1 -fill both
  348.     pack .pack.d -side left
  349.     update
  350.     list [winfo geometry .pack.a] [winfo geometry .pack.b] 
  351.     [winfo geometry .pack.c] [winfo geometry .pack.d]
  352. } {300x65+0+135 50x30+250+52 250x105+0+0 40x30+0+105}
  353. test pack-6.10 {-expand option} {
  354.     pack forget .pack.a .pack.b .pack.c .pack.d
  355.     pack .pack.a -side left -expand yes -fill both
  356.     pack .pack.b -side top
  357.     pack .pack.c -side right -expand 1 -fill both
  358.     pack .pack.d -side bottom
  359.     update
  360.     list [winfo geometry .pack.a] [winfo geometry .pack.b] 
  361.     [winfo geometry .pack.c] [winfo geometry .pack.d]
  362. } {100x200+0+0 50x30+175+0 160x170+140+30 40x30+100+170}
  363. test pack-6.11 {-expand option} {
  364.     pack forget .pack.a .pack.b .pack.c .pack.d
  365.     pack .pack.a -side left -expand yes -fill both
  366.     pack .pack.b -side top -expand yes -fill both
  367.     pack .pack.c -side right -expand 1 -fill both
  368.     pack .pack.d -side bottom -expand yes -fill both
  369.     update
  370.     list [winfo geometry .pack.a] [winfo geometry .pack.b] 
  371.     [winfo geometry .pack.c] [winfo geometry .pack.d]
  372. } {100x200+0+0 200x100+100+0 160x100+140+100 40x100+100+100}
  373. catch {destroy .pack2}
  374. toplevel .pack2 -height 400 -width 400
  375. wm geometry .pack2 +0+0
  376. pack propagate .pack2 0
  377. pack forget .pack2.a .pack2.b .pack2.c .pack2.d
  378. foreach i {w1 w2 w3} {
  379.     frame .pack2.$i -width 30 -height 30 -bd 2 -relief raised
  380.     label .pack2.$i.l -text $i
  381.     place .pack2.$i.l -relwidth 1.0 -relheight 1.0
  382. }
  383. test pack-6.12 {-expand option} {
  384.     pack .pack2.w1 .pack2.w2 .pack2.w3 -padx 5 -ipadx 4 -pady 2 -ipady 6 -expand 1 -side left
  385.     update
  386.     list [winfo geometry .pack2.w1] [winfo geometry .pack2.w2] [winfo geometry .pack2.w3]
  387. } {38x42+47+179 38x42+180+179 38x42+314+179}
  388. test pack-6.13 {-expand option} {
  389.     pack forget .pack2.w1 .pack2.w2 .pack2.w3
  390.     pack .pack2.w1 .pack2.w2 .pack2.w3 -padx 5 -ipadx 4 -pady 2 
  391.     -ipady 6 -expand 1 -side top
  392.     update
  393.     list [winfo geometry .pack2.w1] [winfo geometry .pack2.w2] [winfo geometry .pack2.w3]
  394. } {38x42+181+45 38x42+181+178 38x42+181+312}
  395. catch {destroy .pack2}
  396. wm geometry .pack {}
  397. test pack-7.1 {requesting size for parent} {
  398.     pack forget .pack.a .pack.b .pack.c .pack.d
  399.     pack .pack.a .pack.b .pack.c .pack.d -side left -padx 5 -pady 10
  400.     update
  401.     list [winfo reqwidth .pack] [winfo reqheight .pack]
  402. } {230 100}
  403. test pack-7.2 {requesting size for parent} {
  404.     pack forget .pack.a .pack.b .pack.c .pack.d
  405.     pack .pack.a .pack.b .pack.c .pack.d -side top -padx 5 -pady 10
  406.     update
  407.     list [winfo reqwidth .pack] [winfo reqheight .pack]
  408. } {90 260}
  409. test pack-7.3 {requesting size for parent} {
  410.     pack forget .pack.a .pack.b .pack.c .pack.d
  411.     pack .pack.a .pack.b .pack.c .pack.d -side right -padx 5 -pady 10
  412.     update
  413.     list [winfo reqwidth .pack] [winfo reqheight .pack]
  414. } {230 100}
  415. test pack-7.4 {requesting size for parent} {
  416.     pack forget .pack.a .pack.b .pack.c .pack.d
  417.     pack .pack.a .pack.b .pack.c .pack.d -side bottom -padx 5 -pady 10
  418.     update
  419.     list [winfo reqwidth .pack] [winfo reqheight .pack]
  420. } {90 260}
  421. test pack-7.5 {requesting size for parent} {
  422.     pack forget .pack.a .pack.b .pack.c .pack.d
  423.     pack .pack.a -side top -padx 5 -pady 10
  424.     pack .pack.b -side right -padx 5 -pady 10
  425.     pack .pack.c -side bottom -padx 5 -pady 10
  426.     pack .pack.d -side left -padx 5 -pady 10
  427.     update
  428.     list [winfo reqwidth .pack] [winfo reqheight .pack]
  429. } {150 210}
  430. test pack-7.6 {requesting size for parent} {
  431.     pack forget .pack.a .pack.b .pack.c .pack.d
  432.     pack .pack.a -side top
  433.     pack .pack.c -side left
  434.     pack .pack.d -side bottom
  435.     update
  436.     list [winfo reqwidth .pack] [winfo reqheight .pack]
  437. } {120 120}
  438. test pack-7.7 {requesting size for parent} {
  439.     pack forget .pack.a .pack.b .pack.c .pack.d
  440.     pack .pack.a -side right
  441.     pack .pack.c -side bottom
  442.     pack .pack.d -side top
  443.     update
  444.     list [winfo reqwidth .pack] [winfo reqheight .pack]
  445. } {100 110}
  446. # For the tests below, create a couple of "pad" windows to shrink
  447. # the available space for the remaining windows.  The tests have to
  448. # be done this way rather than shrinking the whole window, because
  449. # some window managers like mwm won't let a top-level window get
  450. # very small.
  451. pack forget .pack.a .pack.b .pack.c .pack.d
  452. frame .pack.right -width 200 -height 10 -bd 2 -relief raised
  453. frame .pack.bottom -width 10 -height 150 -bd 2 -relief raised
  454. pack .pack.right -side right
  455. pack .pack.bottom -side bottom
  456. pack .pack.a .pack.b .pack.c -side top
  457. update
  458. test pack-8.1 {insufficient space} {
  459.     list [winfo geometry .pack.a] [winfo ismapped .pack.a] 
  460.     [winfo geometry .pack.b] [winfo ismapped .pack.b] 
  461.     [winfo geometry .pack.c] [winfo ismapped .pack.c]
  462. } {20x40+30+0 1 50x30+15+40 1 80x80+0+70 1}
  463. wm geom .pack 270x250
  464. update
  465. test pack-8.2 {insufficient space} {
  466.     list [winfo geometry .pack.a] [winfo ismapped .pack.a] 
  467.     [winfo geometry .pack.b] [winfo ismapped .pack.b] 
  468.     [winfo geometry .pack.c] [winfo ismapped .pack.c]
  469. } {20x40+25+0 1 50x30+10+40 1 70x30+0+70 1}
  470. wm geom .pack 240x220
  471. update
  472. test pack-8.3 {insufficient space} {
  473.     list [winfo geometry .pack.a] [winfo ismapped .pack.a] 
  474.     [winfo geometry .pack.b] [winfo ismapped .pack.b] 
  475.     [winfo geometry .pack.c] [winfo ismapped .pack.c]
  476. } {20x40+10+0 1 40x30+0+40 1 70x30+0+70 0}
  477. wm geom .pack 350x350
  478. update
  479. test pack-8.4 {insufficient space} {
  480.     list [winfo geometry .pack.a] [winfo ismapped .pack.a] 
  481.     [winfo geometry .pack.b] [winfo ismapped .pack.b] 
  482.     [winfo geometry .pack.c] [winfo ismapped .pack.c]
  483. } {20x40+65+0 1 50x30+50+40 1 80x80+35+70 1}
  484. wm geom .pack {}
  485. pack .pack.a -side left
  486. pack .pack.b -side right
  487. pack .pack.c -side left
  488. update
  489. test pack-8.5 {insufficient space} {
  490.     list [winfo geometry .pack.a] [winfo ismapped .pack.a] 
  491.     [winfo geometry .pack.b] [winfo ismapped .pack.b] 
  492.     [winfo geometry .pack.c] [winfo ismapped .pack.c]
  493. } {20x40+0+20 1 50x30+100+25 1 80x80+20+0 1}
  494. wm geom .pack 320x180
  495. update
  496. test pack-8.6 {insufficient space} {
  497.     list [winfo geometry .pack.a] [winfo ismapped .pack.a] 
  498.     [winfo geometry .pack.b] [winfo ismapped .pack.b] 
  499.     [winfo geometry .pack.c] [winfo ismapped .pack.c]
  500. } {20x30+0+0 1 50x30+70+0 1 50x30+20+0 1}
  501. wm geom .pack 250x180
  502. update
  503. test pack-8.7 {insufficient space} {
  504.     list [winfo geometry .pack.a] [winfo ismapped .pack.a] 
  505.     [winfo geometry .pack.b] [winfo ismapped .pack.b] 
  506.     [winfo geometry .pack.c] [winfo ismapped .pack.c]
  507. } {20x30+0+0 1 30x30+20+0 1 50x30+20+0 0}
  508. pack forget .pack.b
  509. update
  510. test pack-8.8 {insufficient space} {
  511.     list [winfo geometry .pack.a] [winfo ismapped .pack.a] 
  512.     [winfo geometry .pack.b] [winfo ismapped .pack.b] 
  513.     [winfo geometry .pack.c] [winfo ismapped .pack.c]
  514. } {20x30+0+0 1 30x30+20+0 0 30x30+20+0 1}
  515. pack .pack.b -side right -after .pack.a
  516. wm geom .pack {}
  517. update
  518. test pack-8.9 {insufficient space} {
  519.     list [winfo geometry .pack.a] [winfo ismapped .pack.a] 
  520.     [winfo geometry .pack.b] [winfo ismapped .pack.b] 
  521.     [winfo geometry .pack.c] [winfo ismapped .pack.c]
  522. } {20x40+0+20 1 50x30+100+25 1 80x80+20+0 1}
  523. pack forget .pack.right .pack.bottom
  524. test pack-9.1 {window ordering} {
  525.     pack forget .pack.a .pack.b .pack.c .pack.d
  526.     pack .pack.a .pack.b .pack.c .pack.d -side top
  527.     pack .pack.a -after .pack.b
  528.     pack slaves .pack
  529. } {.pack.b .pack.a .pack.c .pack.d}
  530. test pack-9.2 {window ordering} {
  531.     pack forget .pack.a .pack.b .pack.c .pack.d
  532.     pack .pack.a .pack.b .pack.c .pack.d -side top
  533.     pack .pack.a -after .pack.a
  534.     pack slaves .pack
  535. } {.pack.a .pack.b .pack.c .pack.d}
  536. test pack-9.3 {window ordering} {
  537.     pack forget .pack.a .pack.b .pack.c .pack.d
  538.     pack .pack.a .pack.b .pack.c .pack.d -side top
  539.     pack .pack.a -before .pack.d
  540.     pack slaves .pack
  541. } {.pack.b .pack.c .pack.a .pack.d}
  542. test pack-9.4 {window ordering} {
  543.     pack forget .pack.a .pack.b .pack.c .pack.d
  544.     pack .pack.a .pack.b .pack.c .pack.d -side top
  545.     pack .pack.d -before .pack.a
  546.     pack slaves .pack
  547. } {.pack.d .pack.a .pack.b .pack.c}
  548. test pack-9.5 {window ordering} {
  549.     pack forget .pack.a .pack.b .pack.c .pack.d
  550.     pack .pack.a .pack.b .pack.c .pack.d -side top
  551.     pack propagate .pack.c 0
  552.     pack .pack.a -in .pack.c
  553.     list [pack slaves .pack] [pack slaves .pack.c]
  554. } {{.pack.b .pack.c .pack.d} .pack.a}
  555. test pack-9.6 {window ordering} {
  556.     pack forget .pack.a .pack.b .pack.c .pack.d
  557.     pack .pack.a .pack.b .pack.c .pack.d -side top
  558.     pack .pack.a -in .pack
  559.     pack slaves .pack
  560. } {.pack.b .pack.c .pack.d .pack.a}
  561. test pack-9.7 {window ordering} {
  562.     pack forget .pack.a .pack.b .pack.c .pack.d
  563.     pack .pack.a .pack.b .pack.c .pack.d -side top
  564.     pack .pack.a -padx 0
  565.     pack slaves .pack
  566. } {.pack.a .pack.b .pack.c .pack.d}
  567. test pack-9.8 {window ordering} {
  568.     pack forget .pack.a .pack.b .pack.c .pack.d
  569.     pack .pack.a .pack.b .pack.c
  570.     pack .pack.d
  571.     pack slaves .pack
  572. } {.pack.a .pack.b .pack.c .pack.d}
  573. test pack-9.9 {window ordering} {
  574.     pack forget .pack.a .pack.b .pack.c .pack.d
  575.     pack .pack.a .pack.b .pack.c .pack.d
  576.     pack .pack.b .pack.d .pack.c -before .pack.a
  577.     pack slaves .pack
  578. } {.pack.b .pack.d .pack.c .pack.a}
  579. test pack-9.10 {window ordering} {
  580.     pack forget .pack.a .pack.b .pack.c .pack.d
  581.     pack .pack.a .pack.b .pack.c .pack.d
  582.     pack .pack.a .pack.c .pack.d .pack.b -after .pack.a
  583.     pack slaves .pack
  584. } {.pack.a .pack.c .pack.d .pack.b}
  585. test pack-10.1 {retaining/clearing configuration state} {
  586.     pack forget .pack.a .pack.b .pack.c .pack.d
  587.     pack .pack.a -side bottom -anchor n -padx 1 -pady 2 -ipadx 3 -ipady 4 
  588. -fill both -expand 1
  589.     pack forget .pack.a
  590.     pack .pack.a
  591.     pack info .pack.a
  592. } {-in .pack -anchor center -expand 0 -fill none -ipadx 0 -ipady 0 -padx 0 -pady 0 -side top}
  593. test pack-10.2 {retaining/clearing configuration state} {
  594.     pack forget .pack.a .pack.b .pack.c .pack.d
  595.     pack .pack.a -side bottom -anchor n -padx 1 -pady 2 -ipadx 3 -ipady 4 
  596. -fill both -expand 1
  597.     pack .pack.a -pady 14
  598.     pack info .pack.a
  599. } {-in .pack -anchor n -expand 1 -fill both -ipadx 3 -ipady 4 -padx 1 -pady 14 -side bottom}
  600. test pack-11.1 {info option} {
  601.     pack4 -in .pack
  602. } .pack
  603. test pack-11.2 {info option} {
  604.     pack4 -anchor n
  605. } n
  606. test pack-11.3 {info option} {
  607.     pack4 -anchor sw
  608. } sw
  609. test pack-11.4 {info option} {
  610.     pack4 -expand yes
  611. } 1
  612. test pack-11.5 {info option} {
  613.     pack4 -expand no
  614. } 0
  615. test pack-11.6 {info option} {
  616.     pack4 -fill x
  617. } x
  618. test pack-11.7 {info option} {
  619.     pack4 -fill y
  620. } y
  621. test pack-11.8 {info option} {
  622.     pack4 -fill both
  623. } both
  624. test pack-11.9 {info option} {
  625.     pack4 -fill none
  626. } none
  627. test pack-11.10 {info option} {
  628.     pack4 -ipadx 14
  629. } 14
  630. test pack-11.11 {info option} {
  631.     pack4 -ipady 22
  632. } 22
  633. test pack-11.12 {info option} {
  634.     pack4 -padx 2
  635. } 2
  636. test pack-11.12.1 {info option} {
  637.     pack4 -padx {2 9}
  638. } {2 9}
  639. test pack-11.13 {info option} {
  640.     pack4 -pady 3
  641. } 3
  642. test pack-11.13.1 {info option} {
  643.     pack4 -pady {3 11}
  644. } {3 11}
  645. test pack-11.14 {info option} {
  646.     pack4 -side top
  647. } top
  648. test pack-11.15 {info option} {
  649.     pack4 -side bottom
  650. } bottom
  651. test pack-11.16 {info option} {
  652.     pack4 -side left
  653. } left
  654. test pack-11.17 {info option} {
  655.     pack4 -side right
  656. } right
  657. test pack-12.1 {command options and errors} {
  658.     list [catch {pack} msg] $msg
  659. } {1 {wrong # args: should be "pack option arg ?arg ...?"}}
  660. test pack-12.2 {command options and errors} {
  661.     list [catch {pack foo} msg] $msg
  662. } {1 {wrong # args: should be "pack option arg ?arg ...?"}}
  663. test pack-12.3 {command options and errors} {
  664.     list [catch {pack configure x} msg] $msg
  665. } {1 {bad argument "x": must be name of window}}
  666. test pack-12.4 {command options and errors} {
  667.     pack forget .pack.a .pack.b .pack.c .pack.d
  668.     pack configure .pack.b .pack.c
  669.     pack slaves .pack
  670. } {.pack.b .pack.c}
  671. test pack-12.5 {command options and errors} {
  672.     pack forget .pack.a .pack.b .pack.c .pack.d
  673.     list [catch {pack .foo} msg] $msg
  674. } {1 {bad window path name ".foo"}}
  675. test pack-12.6 {command options and errors} {
  676.     pack forget .pack.a .pack.b .pack.c .pack.d
  677.     list [catch {pack .pack} msg] $msg
  678. } {1 {can't pack ".pack": it's a top-level window}}
  679. test pack-12.7 {command options and errors} {
  680.     pack forget .pack.a .pack.b .pack.c .pack.d
  681.     list [catch {pack .pack.a -after .foo} msg] $msg
  682. } {1 {bad window path name ".foo"}}
  683. test pack-12.8 {command options and errors} {
  684.     pack forget .pack.a .pack.b .pack.c .pack.d
  685.     list [catch {pack .pack.a -after .pack.b} msg] $msg
  686. } {1 {window ".pack.b" isn't packed}}
  687. test pack-12.9 {command options and errors} {
  688.     pack forget .pack.a .pack.b .pack.c .pack.d
  689.     list [catch {pack .pack.a -anchor gorp} msg] $msg
  690. } {1 {bad anchor "gorp": must be n, ne, e, se, s, sw, w, nw, or center}}
  691. test pack-12.10 {command options and errors} {
  692.     pack forget .pack.a .pack.b .pack.c .pack.d
  693.     list [catch {pack .pack.a -before gorp} msg] $msg
  694. } {1 {bad window path name "gorp"}}
  695. test pack-12.11 {command options and errors} {
  696.     pack forget .pack.a .pack.b .pack.c .pack.d
  697.     list [catch {pack .pack.a -before .pack.b} msg] $msg
  698. } {1 {window ".pack.b" isn't packed}}
  699. test pack-12.12 {command options and errors} {
  700.     pack forget .pack.a .pack.b .pack.c .pack.d
  701.     list [catch {pack .pack.a -expand "who cares?"} msg] $msg
  702. } {1 {expected boolean value but got "who cares?"}}
  703. test pack-12.13 {command options and errors} {
  704.     pack forget .pack.a .pack.b .pack.c .pack.d
  705.     list [catch {pack .pack.a -fill z} msg] $msg
  706. } {1 {bad fill style "z": must be none, x, y, or both}}
  707. test pack-12.14 {command options and errors} {
  708.     pack forget .pack.a .pack.b .pack.c .pack.d
  709.     list [catch {pack .pack.a -in z} msg] $msg
  710. } {1 {bad window path name "z"}}
  711. set pad [winfo pixels .pack 1c]
  712. test pack-12.15 {command options and errors} {
  713.     pack forget .pack.a .pack.b .pack.c .pack.d
  714.     list [catch {pack .pack.a -padx abc} msg] $msg
  715. } {1 {bad pad value "abc": must be positive screen distance}}
  716. test pack-12.15.1 {command options and errors} {
  717.     pack forget .pack.a .pack.b .pack.c .pack.d
  718.     list [catch {pack .pack.a -padx {5 abc}} msg] $msg
  719. } {1 {bad 2nd pad value "abc": must be positive screen distance}}
  720. test pack-12.16 {command options and errors} {
  721.     pack forget .pack.a .pack.b .pack.c .pack.d
  722.     list [catch {pack .pack.a -padx -1} msg] $msg
  723. } {1 {bad pad value "-1": must be positive screen distance}}
  724. test pack-12.16.1 {command options and errors} {
  725.     pack forget .pack.a .pack.b .pack.c .pack.d
  726.     list [catch {pack .pack.a -padx {5 -1}} msg] $msg
  727. } {1 {bad 2nd pad value "-1": must be positive screen distance}}
  728. test pack-12.17 {command options and errors} {
  729.     pack forget .pack.a .pack.b .pack.c .pack.d
  730.     list [catch {pack .pack.a -pady abc} msg] $msg
  731. } {1 {bad pad value "abc": must be positive screen distance}}
  732. test pack-12.17.1 {command options and errors} {
  733.     pack forget .pack.a .pack.b .pack.c .pack.d
  734.     list [catch {pack .pack.a -pady {0 abc}} msg] $msg
  735. } {1 {bad 2nd pad value "abc": must be positive screen distance}}
  736. test pack-12.18 {command options and errors} {
  737.     pack forget .pack.a .pack.b .pack.c .pack.d
  738.     list [catch {pack .pack.a -pady -1} msg] $msg
  739. } {1 {bad pad value "-1": must be positive screen distance}}
  740. test pack-12.18.1 {command options and errors} {
  741.     pack forget .pack.a .pack.b .pack.c .pack.d
  742.     list [catch {pack .pack.a -pady {0 -1}} msg] $msg
  743. } {1 {bad 2nd pad value "-1": must be positive screen distance}}
  744. test pack-12.19 {command options and errors} {
  745.     pack forget .pack.a .pack.b .pack.c .pack.d
  746.     list [catch {pack .pack.a -ipadx abc} msg] $msg
  747. } {1 {bad ipadx value "abc": must be positive screen distance}}
  748. test pack-12.20 {command options and errors} {
  749.     pack forget .pack.a .pack.b .pack.c .pack.d
  750.     list [catch {pack .pack.a -ipadx -1} msg] $msg
  751. } {1 {bad ipadx value "-1": must be positive screen distance}}
  752. test pack-12.20.1 {command options and errors} {
  753.     pack forget .pack.a .pack.b .pack.c .pack.d
  754.     list [catch {pack .pack.a -ipadx {5 5}} msg] $msg
  755. } {1 {bad ipadx value "5 5": must be positive screen distance}}
  756. test pack-12.21 {command options and errors} {
  757.     pack forget .pack.a .pack.b .pack.c .pack.d
  758.     list [catch {pack .pack.a -ipady abc} msg] $msg
  759. } {1 {bad ipady value "abc": must be positive screen distance}}
  760. test pack-12.22 {command options and errors} {
  761.     pack forget .pack.a .pack.b .pack.c .pack.d
  762.     list [catch {pack .pack.a -ipady -1} msg] $msg
  763. } {1 {bad ipady value "-1": must be positive screen distance}}
  764. test pack-12.22.1 {command options and errors} {
  765.     pack forget .pack.a .pack.b .pack.c .pack.d
  766.     list [catch {pack .pack.a -ipady {5 5}} msg] $msg
  767. } {1 {bad ipady value "5 5": must be positive screen distance}}
  768. test pack-12.23 {command options and errors} {
  769.     pack forget .pack.a .pack.b .pack.c .pack.d
  770.     list [catch {pack .pack.a -side bac} msg] $msg
  771. } {1 {bad side "bac": must be top, bottom, left, or right}}
  772. test pack-12.24 {command options and errors} {
  773.     pack forget .pack.a .pack.b .pack.c .pack.d
  774.     list [catch {pack .pack.a -lousy bac} msg] $msg
  775. } {1 {bad option "-lousy": must be -after, -anchor, -before, -expand, -fill, -in, -ipadx, -ipady, -padx, -pady, or -side}}
  776. test pack-12.25 {command options and errors} {
  777.     pack forget .pack.a .pack.b .pack.c .pack.d
  778.     list [catch {pack .pack.a -padx} msg] $msg
  779. } {1 {extra option "-padx" (option with no value?)}}
  780. test pack-12.26 {command options and errors} {
  781.     pack forget .pack.a .pack.b .pack.c .pack.d
  782.     list [catch {pack .pack.a ? 22} msg] $msg
  783. } {1 {bad option "?": must be -after, -anchor, -before, -expand, -fill, -in, -ipadx, -ipady, -padx, -pady, or -side}}
  784. test pack-12.27 {command options and errors} {
  785.     pack forget .pack.a .pack.b .pack.c .pack.d
  786.     list [catch {pack .pack.a -in .} msg] $msg
  787. } {1 {can't pack .pack.a inside .}}
  788. test pack-12.28 {command options and errors} {
  789.     pack forget .pack.a .pack.b .pack.c .pack.d
  790.     frame .pack.a.a
  791.     list [catch {pack .pack.a.a -in .pack.b} msg] $msg
  792. } {1 {can't pack .pack.a.a inside .pack.b}}
  793. test pack-12.29 {command options and errors} {
  794.     pack forget .pack.a .pack.b .pack.c .pack.d
  795.     list [catch {pack .pack.a -in .pack.a} msg] $msg
  796. } {1 {can't pack .pack.a inside itself}}
  797. test pack-12.30 {command options and errors} {
  798.     pack forget .pack.a .pack.b .pack.c .pack.d
  799.     pack .pack.a .pack.b .pack.c .pack.d
  800.     pack forget .pack.a .pack.d
  801.     pack slaves .pack
  802. } {.pack.b .pack.c}
  803. test pack-12.31 {command options and errors} {
  804.     pack forget .pack.a .pack.b .pack.c .pack.d
  805.     .pack configure -width 300 -height 200
  806.     pack propagate .pack 0
  807.     pack .pack.a
  808.     update
  809.     set result [list [winfo reqwidth .pack] [winfo reqheight .pack]]
  810.     pack propagate .pack 1
  811.     update
  812.     lappend result [winfo reqwidth .pack] [winfo reqheight .pack]
  813.     set result
  814. } {300 200 20 40}
  815. test pack-12.32 {command options and errors} {
  816.     set result [pack propagate .pack.d]
  817.     pack propagate .pack.d 0
  818.     lappend result [pack propagate .pack.d]
  819.     pack propagate .pack.d 1
  820.     lappend result [pack propagate .pack.d]
  821.     set result
  822. } {1 0 1}
  823. test pack-12.33 {command options and errors} {
  824.     pack forget .pack.a .pack.b .pack.c .pack.d
  825.     list [catch {pack propagate .dum} msg] $msg
  826. } {1 {bad window path name ".dum"}}
  827. test pack-12.34 {command options and errors} {
  828.     pack forget .pack.a .pack.b .pack.c .pack.d
  829.     list [catch {pack propagate .pack foo} msg] $msg
  830. } {1 {expected boolean value but got "foo"}}
  831. test pack-12.35 {command options and errors} {
  832.     pack forget .pack.a .pack.b .pack.c .pack.d
  833.     list [catch {pack propagate .pack foo bar} msg] $msg
  834. } {1 {wrong # args: should be "pack propagate window ?boolean?"}}
  835. test pack-12.36 {command options and errors} {
  836.     pack forget .pack.a .pack.b .pack.c .pack.d
  837.     list [catch {pack slaves} msg] $msg
  838. } {1 {wrong # args: should be "pack option arg ?arg ...?"}}
  839. test pack-12.37 {command options and errors} {
  840.     pack forget .pack.a .pack.b .pack.c .pack.d
  841.     list [catch {pack slaves a b} msg] $msg
  842. } {1 {wrong # args: should be "pack slaves window"}}
  843. test pack-12.38 {command options and errors} {
  844.     pack forget .pack.a .pack.b .pack.c .pack.d
  845.     list [catch {pack slaves .x} msg] $msg
  846. } {1 {bad window path name ".x"}}
  847. test pack-12.39 {command options and errors} {
  848.     pack forget .pack.a .pack.b .pack.c .pack.d
  849.     list [catch {pack slaves .pack.a} msg] $msg
  850. } {0 {}}
  851. test pack-12.40 {command options and errors} {
  852.     pack forget .pack.a .pack.b .pack.c .pack.d
  853.     list [catch {pack lousy .pack} msg] $msg
  854. } {1 {bad option "lousy": must be configure, forget, info, propagate, or slaves}}
  855. pack .pack.right -side right
  856. pack .pack.bottom -side bottom
  857. test pack-13.1 {window deletion} {
  858.     pack forget .pack.a .pack.b .pack.c .pack.d
  859.     pack .pack.a .pack.d .pack.b .pack.c -side top
  860.     update
  861.     destroy .pack.d
  862.     update
  863.     set result [list [pack slaves .pack] [winfo geometry .pack.a] 
  864.     [winfo geometry .pack.b] [winfo geometry .pack.c]]
  865. } {{.pack.right .pack.bottom .pack.a .pack.b .pack.c} 20x40+30+0 50x30+15+40 80x80+0+70}
  866. test pack-14.1 {respond to changes in expansion} {
  867.     pack forget .pack.a .pack.b .pack.c .pack.d
  868.     wm geom .pack {}
  869.     pack .pack.a
  870.     update
  871.     set result [winfo geom .pack.a]
  872.     wm geom .pack 400x300
  873.     update
  874.     lappend result [winfo geom .pack.a]
  875.     pack .pack.a -expand true -fill both
  876.     update
  877.     lappend result [winfo geom .pack.a]
  878. } {20x40+0+0 20x40+90+0 200x150+0+0}
  879. wm geom .pack {}
  880. test pack-15.1 {managing geometry with -in option} {
  881.     pack forget .pack.a .pack.b .pack.c .pack.d
  882.     pack .pack.a -side top
  883.     frame .pack.f
  884.     lower .pack.f
  885.     pack .pack.f -side top
  886.     frame .pack.f.f2
  887.     lower .pack.f.f2
  888.     pack .pack.f.f2 -side top
  889.     pack .pack.b -in .pack.f.f2
  890.     update
  891.     set result [winfo geom .pack.b]
  892.     pack unpack .pack.a
  893.     update
  894.     lappend result [winfo geom .pack.b]
  895. } {50x30+0+40 50x30+0+0}
  896. catch {destroy .pack.f}
  897. test pack-15.2 {managing geometry with -in option} {
  898.     pack forget .pack.a .pack.b .pack.c .pack.d
  899.     frame .pack.f
  900.     lower .pack.f
  901.     pack .pack.a -in .pack.f -side top
  902.     update
  903.     set result [winfo ismapped .pack.a]
  904.     place .pack.f -x 30 -y 45
  905.     update
  906.     lappend result [winfo ismapped .pack.a] [winfo geometry .pack.a]
  907.     place forget .pack.f
  908.     update
  909.     lappend result [winfo ismapped .pack.a]
  910. } {0 1 20x40+30+45 0}
  911. catch {destroy .pack.f}
  912. test pack-15.3 {managing geometry with -in option} {
  913.     pack forget .pack.a .pack.b .pack.c .pack.d
  914.     pack .pack.a -side top
  915.     frame .pack.f
  916.     lower .pack.f
  917.     pack .pack.f -side top
  918.     frame .pack.f.f2
  919.     lower .pack.f.f2
  920.     pack .pack.f.f2 -side top
  921.     pack .pack.b -in .pack.f.f2
  922.     update
  923.     set result [winfo ismapped .pack.b]
  924.     pack unpack .pack.f
  925.     update
  926.     lappend result [winfo ismapped .pack.b]
  927. } {1 0}
  928. catch {destroy .pack.f}
  929. test pack-15.4 {managing geometry with -in option} {
  930.     pack forget .pack.a .pack.b .pack.c .pack.d
  931.     foreach i {1 2} {
  932. frame .pack.f$i -width 100 -height 40 -bd 2 -relief raised
  933. lower .pack.f$i
  934. pack propagate .pack.f$i 0
  935. pack .pack.f$i -side top
  936.     }
  937.     pack .pack.b -in .pack.f1 -side right
  938.     update
  939.     set result {}
  940.     lappend result [winfo geometry .pack.b] [winfo ismapped .pack.b]
  941.     pack .pack.b -in .pack.f2 -side bottom
  942.     update
  943.     lappend result [winfo geometry .pack.b] [winfo ismapped .pack.b]
  944.     .pack.f1 configure -width 50 -height 20
  945.     update
  946.     lappend result [winfo geometry .pack.b] [winfo ismapped .pack.b]
  947.     pack forget .pack.b
  948.     update
  949.     lappend result [winfo geometry .pack.b] [winfo ismapped .pack.b]
  950. } {50x30+48+5 1 50x30+25+48 1 50x30+25+28 1 50x30+25+28 0}
  951. catch {destroy .pack.f1 .pack.f2}
  952. test pack-15.5 {managing geometry with -in option} {
  953.     pack forget .pack.a .pack.b .pack.c .pack.d
  954.     foreach i {1 2} {
  955. frame .pack.f$i -width 100 -height 20 -bd 2 -relief raised
  956. lower .pack.f$i
  957. pack propagate .pack.f$i 0
  958. pack .pack.f$i -side top
  959.     }
  960.     pack .pack.b -in .pack.f2 -side top
  961.     update
  962.     set result {}
  963.     lappend result [winfo geometry .pack.b] [winfo ismapped .pack.b]
  964.     pack .pack.a -before .pack.b -side top
  965.     update
  966.     lappend result [winfo geometry .pack.b] [winfo ismapped .pack.b]
  967. } {50x16+25+22 1 50x16+25+22 0}
  968. catch {destroy .pack.f1 .pack.f2}
  969. test pack-16.1 {geometry manager name} {
  970.     pack forget .pack.a .pack.b .pack.c .pack.d
  971.     set result {}
  972.     lappend result [winfo manager .pack.a]
  973.     pack .pack.a
  974.     lappend result [winfo manager .pack.a]
  975.     pack forget .pack.a
  976.     lappend result [winfo manager .pack.a]
  977. } {{} pack {}}
  978. test pack-17.1 {PackLostSlaveProc procedure} {
  979.     pack forget .pack.a .pack.b .pack.c .pack.d
  980.     pack .pack.a
  981.     update
  982.     place .pack.a -x 40 -y 10
  983.     update
  984.     list [winfo manager .pack.a] [winfo geometry .pack.a] 
  985. [catch {pack info .pack.a} msg] $msg
  986. } {place 20x40+40+10 1 {window ".pack.a" isn't packed}}
  987. test pack-18.1 {unmap slaves when master unmapped} {tempNotPc} {
  988.     # adjust the position of .pack before test to avoid a screen switch
  989.     # that occurs with window managers that have desktops four times as big
  990.     # as the screen (screen switch causes scale and other tests to fail).
  991.     wm geometry .pack +100+100
  992.     # On the PC, when the width/height is configured while the window is 
  993.     # unmapped, the changes don't take effect until the window is remapped.
  994.     # Who knows why?
  995.     eval destroy [winfo child .pack]
  996.     frame .pack.a -width 100 -height 50 -relief raised -bd 2
  997.     pack .pack.a
  998.     update
  999.     set result [winfo ismapped .pack.a]
  1000.     wm iconify .pack
  1001.     update
  1002.     lappend result [winfo ismapped .pack.a]
  1003.     .pack.a configure -width 200 -height 75
  1004.     update
  1005.     lappend result [winfo width .pack.a ] [winfo height .pack.a] 
  1006. [winfo ismapped .pack.a]
  1007.     wm deiconify .pack
  1008.     update
  1009.     lappend result [winfo ismapped .pack.a]
  1010. } {1 0 200 75 0 1}
  1011. test pack-18.2 {unmap slaves when master unmapped} {
  1012.     # adjust the position of .pack before test to avoid a screen switch
  1013.     # that occurs with window managers that have desktops four times as big
  1014.     # as the screen (screen switch causes scale and other tests to fail).
  1015.     wm geometry .pack +100+100
  1016.     eval destroy [winfo child .pack]
  1017.     frame .pack.a -relief raised -bd 2
  1018.     frame .pack.b -width 70 -height 30 -relief sunken -bd 2
  1019.     pack .pack.a
  1020.     pack .pack.b -in .pack.a
  1021.     update
  1022.     set result [winfo ismapped .pack.b]
  1023.     wm iconify .pack
  1024.     update
  1025.     lappend result [winfo ismapped .pack.b]
  1026.     .pack.b configure -width 100 -height 30
  1027.     update
  1028.     lappend result [winfo width .pack.b ] [winfo height .pack.b] 
  1029. [winfo ismapped .pack.b]
  1030.     wm deiconify .pack
  1031.     update
  1032.     lappend result [winfo ismapped .pack.b]
  1033. } {1 0 100 30 0 1}
  1034. test pack-19.1 {test respect for internalborder} {
  1035.     catch {eval pack forget [pack slaves .pack]}
  1036.     destroy .pack.l .pack.lf
  1037.     wm geometry .pack 200x200
  1038.     frame .pack.l -width 15 -height 10
  1039.     labelframe .pack.lf -labelwidget .pack.l
  1040.     pack .pack.lf -fill both -expand 1
  1041.     frame .pack.lf.f
  1042.     pack .pack.lf.f -fill both -expand 1
  1043.     update
  1044.     set res [list [winfo geometry .pack.lf.f]]
  1045.     .pack.lf configure -labelanchor e -padx 3 -pady 5
  1046.     update
  1047.     lappend res [winfo geometry .pack.lf.f]
  1048.     destroy .pack.l .pack.lf
  1049.     set res
  1050. } {196x188+2+10 177x186+5+7}
  1051. test pack-19.2 {test support for minreqsize} {
  1052.     catch {eval pack forget [pack slaves .pack]}
  1053.     destroy .pack.l .pack.lf
  1054.     wm geometry .pack {}
  1055.     frame .pack.l -width 150 -height 100
  1056.     labelframe .pack.lf -labelwidget .pack.l
  1057.     pack .pack.lf -fill both -expand 1
  1058.     frame .pack.lf.f -width 20 -height 25
  1059.     pack .pack.lf.f
  1060.     update
  1061.     set res [list [winfo geometry .pack.lf]]
  1062.     .pack.lf configure -labelanchor ws
  1063.     update
  1064.     lappend res [winfo geometry .pack.lf]
  1065.     destroy .pack.l .pack.lf
  1066.     set res
  1067. } {162x127+0+0 172x112+0+0}
  1068. destroy .pack
  1069. foreach i {pack1 pack2 pack3 pack4} {
  1070.     rename $i {}
  1071. }
  1072. # cleanup
  1073. ::tcltest::cleanupTests
  1074. return