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
9package require tcltest 2.2
10eval tcltest::configure $argv
11tcltest::loadTestedCommands
12namespace import -force tcltest::test
13
14testConstraint failsOnUbuntu [expr {![info exists ::env(CI)] || ![string match Linux $::tcl_platform(os)]}]
15testConstraint failsOnXQuarz [expr {$tcl_platform(os) ne "Darwin" || [tk windowingsystem] ne "x11" }]
16
17# Create some test windows.
18
19destroy .pack
20toplevel .pack
21wm geom .pack 300x200+0+0
22wm minsize .pack 1 1
23update idletasks
24foreach i {a b c d} {
25    frame .pack.$i
26    label .pack.$i.label -text $i -relief raised
27    place .pack.$i.label -relwidth 1.0 -relheight 1.0
28}
29.pack.a config -width 20 -height 40
30.pack.b config -width 50 -height 30
31.pack.c config -width 80 -height 80
32.pack.d config -width 40 -height 30
33
34test pack-1.1 {-side option} -setup {
35    pack forget .pack.a .pack.b .pack.c .pack.d
36} -body {
37    pack .pack.a -side top
38    pack .pack.b -expand yes -fill both
39    update
40    list [winfo geometry .pack.a] [winfo geometry .pack.b]
41} -result {20x40+140+0 300x160+0+40}
42test pack-1.2 {-side option} -setup {
43    pack forget .pack.a .pack.b .pack.c .pack.d
44} -body {
45    pack .pack.a -side bottom
46    pack .pack.b -expand yes -fill both
47    update
48    list [winfo geometry .pack.a] [winfo geometry .pack.b]
49} -result {20x40+140+160 300x160+0+0}
50test pack-1.3 {-side option} -setup {
51    pack forget .pack.a .pack.b .pack.c .pack.d
52} -body {
53    pack .pack.a -side left
54    pack .pack.b -expand yes -fill both
55    update
56    list [winfo geometry .pack.a] [winfo geometry .pack.b]
57} -result {20x40+0+80 280x200+20+0}
58test pack-1.4 {-side option} -setup {
59    pack forget .pack.a .pack.b .pack.c .pack.d
60} -body {
61    pack .pack.a -side right
62    pack .pack.b -expand yes -fill both
63    update
64    list [winfo geometry .pack.a] [winfo geometry .pack.b]
65} -result {20x40+280+80 280x200+0+0}
66
67
68test pack-2.1 {x padding and filling} -setup {
69    pack forget .pack.a .pack.b .pack.c .pack.d
70} -body {
71    pack .pack.a -side right -padx 20
72    pack .pack.b -expand yes -fill both
73    update
74    list [winfo geometry .pack.a] [winfo geometry .pack.b]
75} -result {20x40+260+80 240x200+0+0}
76test pack-2.2 {x padding and filling} -setup {
77    pack forget .pack.a .pack.b .pack.c .pack.d
78} -body {
79    pack .pack.a -side right -padx {10 30}
80    pack .pack.b -expand yes -fill both
81    update
82    list [winfo geometry .pack.a] [winfo geometry .pack.b]
83} -result {20x40+250+80 240x200+0+0}
84test pack-2.3 {x padding and filling} -setup {
85    pack forget .pack.a .pack.b .pack.c .pack.d
86} -body {
87    pack .pack.a -side right -padx {35 5}
88    pack .pack.b -expand yes -fill both
89    update
90    list [winfo geometry .pack.a] [winfo geometry .pack.b]
91} -result {20x40+275+80 240x200+0+0}
92test pack-2.4 {x padding and filling} -setup {
93    pack forget .pack.a .pack.b .pack.c .pack.d
94} -body {
95    pack .pack.a -side right -ipadx 20
96    pack .pack.b -expand yes -fill both
97    update
98    list [winfo geometry .pack.a] [winfo geometry .pack.b]
99} -result {60x40+240+80 240x200+0+0}
100test pack-2.5 {x padding and filling} -setup {
101    pack forget .pack.a .pack.b .pack.c .pack.d
102} -body {
103    pack .pack.a -side right -ipadx 5 -padx 10
104    pack .pack.b -expand yes -fill both
105    update
106    list [winfo geometry .pack.a] [winfo geometry .pack.b]
107} -result {30x40+260+80 250x200+0+0}
108test pack-2.6 {x padding and filling} -setup {
109    pack forget .pack.a .pack.b .pack.c .pack.d
110} -body {
111    pack .pack.a -side right -padx 20 -fill x
112    pack .pack.b -expand yes -fill both
113    update
114    list [winfo geometry .pack.a] [winfo geometry .pack.b]
115} -result {20x40+260+80 240x200+0+0}
116test pack-2.7 {x padding and filling} -setup {
117    pack forget .pack.a .pack.b .pack.c .pack.d
118} -body {
119    pack .pack.a -side right -padx {9 31} -fill x
120    pack .pack.b -expand yes -fill both
121    update
122    list [winfo geometry .pack.a] [winfo geometry .pack.b]
123} -result {20x40+249+80 240x200+0+0}
124test pack-2.8 {x padding and filling} -setup {
125    pack forget .pack.a .pack.b .pack.c .pack.d
126} -body {
127    pack .pack.a -side right -ipadx 20 -fill x
128    pack .pack.b -expand yes -fill both
129    update
130    list [winfo geometry .pack.a] [winfo geometry .pack.b]
131} -result {60x40+240+80 240x200+0+0}
132test pack-2.9 {x padding and filling} -setup {
133    pack forget .pack.a .pack.b .pack.c .pack.d
134} -body {
135    pack .pack.a -side right -ipadx 5 -padx 10 -fill x
136    pack .pack.b -expand yes -fill both
137    update
138    list [winfo geometry .pack.a] [winfo geometry .pack.b]
139} -result {30x40+260+80 250x200+0+0}
140test pack-2.10 {x padding and filling} -setup {
141    pack forget .pack.a .pack.b .pack.c .pack.d
142} -body {
143    pack .pack.a -side right -ipadx 5 -padx {5 15} -fill x
144    pack .pack.b -expand yes -fill both
145    update
146    list [winfo geometry .pack.a] [winfo geometry .pack.b]
147} -result {30x40+255+80 250x200+0+0}
148test pack-2.11 {x padding and filling} -setup {
149    pack forget .pack.a .pack.b .pack.c .pack.d
150} -body {
151    pack .pack.a -side top -padx 20
152    pack .pack.b -expand yes -fill both
153    update
154    list [winfo geometry .pack.a] [winfo geometry .pack.b]
155} -result {20x40+140+0 300x160+0+40}
156test pack-2.12 {x padding and filling} -setup {
157    pack forget .pack.a .pack.b .pack.c .pack.d
158} -body {
159    pack .pack.a -side top -padx {0 40}
160    pack .pack.b -expand yes -fill both
161    update
162    list [winfo geometry .pack.a] [winfo geometry .pack.b]
163} -result {20x40+120+0 300x160+0+40}
164test pack-2.13 {x padding and filling} -setup {
165    pack forget .pack.a .pack.b .pack.c .pack.d
166} -body {
167    pack .pack.a -side top -padx {31 9}
168    pack .pack.b -expand yes -fill both
169    update
170    list [winfo geometry .pack.a] [winfo geometry .pack.b]
171} -result {20x40+151+0 300x160+0+40}
172test pack-2.14 {x padding and filling} -setup {
173    pack forget .pack.a .pack.b .pack.c .pack.d
174} -body {
175    pack .pack.a -side top -ipadx 20
176    pack .pack.b -expand yes -fill both
177    update
178    list [winfo geometry .pack.a] [winfo geometry .pack.b]
179} -result {60x40+120+0 300x160+0+40}
180test pack-2.15 {x padding and filling} -setup {
181    pack forget .pack.a .pack.b .pack.c .pack.d
182} -body {
183    pack .pack.a -side top -ipadx 5 -padx 10
184    pack .pack.b -expand yes -fill both
185    update
186    list [winfo geometry .pack.a] [winfo geometry .pack.b]
187} -result {30x40+135+0 300x160+0+40}
188test pack-2.16 {x padding and filling} -setup {
189    pack forget .pack.a .pack.b .pack.c .pack.d
190} -body {
191    pack .pack.a -side top -ipadx 5 -padx {5 15}
192    pack .pack.b -expand yes -fill both
193    update
194    list [winfo geometry .pack.a] [winfo geometry .pack.b]
195} -result {30x40+130+0 300x160+0+40}
196test pack-2.17 {x padding and filling} -setup {
197    pack forget .pack.a .pack.b .pack.c .pack.d
198} -body {
199    pack .pack.a -side top -padx 20 -fill x
200    pack .pack.b -expand yes -fill both
201    update
202    list [winfo geometry .pack.a] [winfo geometry .pack.b]
203} -result {260x40+20+0 300x160+0+40}
204test pack-2.18 {x padding and filling} -setup {
205    pack forget .pack.a .pack.b .pack.c .pack.d
206} -body {
207    pack .pack.a -side top -padx {25 15} -fill x
208    pack .pack.b -expand yes -fill both
209    update
210    list [winfo geometry .pack.a] [winfo geometry .pack.b]
211} -result {260x40+25+0 300x160+0+40}
212test pack-2.19 {x padding and filling} -setup {
213    pack forget .pack.a .pack.b .pack.c .pack.d
214} -body {
215    pack .pack.a -side top -ipadx 20 -fill x
216    pack .pack.b -expand yes -fill both
217    update
218    list [winfo geometry .pack.a] [winfo geometry .pack.b]
219} -result {300x40+0+0 300x160+0+40}
220test pack-2.20 {x padding and filling} -setup {
221    pack forget .pack.a .pack.b .pack.c .pack.d
222} -body {
223    pack .pack.a -side top -ipadx 5 -padx 10 -fill x
224    pack .pack.b -expand yes -fill both
225    update
226    list [winfo geometry .pack.a] [winfo geometry .pack.b]
227} -result {280x40+10+0 300x160+0+40}
228test pack-2.21 {x padding and filling} -setup {
229    pack forget .pack.a .pack.b .pack.c .pack.d
230} -body {
231    pack .pack.a -side top -ipadx 5 -padx {5 15} -fill x
232    pack .pack.b -expand yes -fill both
233    update
234    list [winfo geometry .pack.a] [winfo geometry .pack.b]
235} -result {280x40+5+0 300x160+0+40}
236
237test pack-2.22 {x padding and filling} -setup {
238    pack forget .pack.a .pack.b .pack.c .pack.d
239} -body {
240    pack .pack.a -padx 1c
241    set x [pack info .pack.a]
242    set res1 [lindex $x [expr [lsearch -exact $x -padx]+1]]
243    set res2 [winfo pixels .pack 1c]
244    expr {$res1 eq $res2}
245} -result 1
246test pack-2.23 {x padding and filling} -setup {
247    pack forget .pack.a .pack.b .pack.c .pack.d
248} -body {
249    pack .pack.a -ipadx 1c
250    set x [pack info .pack.a]
251    set res1 [lindex $x [expr [lsearch -exact $x -ipadx]+1]]
252    set res2 [winfo pixels .pack 1c]
253    expr {$res1 eq $res2}
254} -result 1
255
256
257test pack-3.1 {y padding and filling} -setup {
258    pack forget .pack.a .pack.b .pack.c .pack.d
259} -body {
260    pack .pack.a -side right -pady 20
261    pack .pack.b -expand yes -fill both
262    update
263    list [winfo geometry .pack.a] [winfo geometry .pack.b]
264} -result {20x40+280+80 280x200+0+0}
265test pack-3.2 {y padding and filling} -setup {
266    pack forget .pack.a .pack.b .pack.c .pack.d
267} -body {
268    pack .pack.a -side right -pady {5 35}
269    pack .pack.b -expand yes -fill both
270    update
271    list [winfo geometry .pack.a] [winfo geometry .pack.b]
272} -result {20x40+280+65 280x200+0+0}
273test pack-3.3 {y padding and filling} -setup {
274    pack forget .pack.a .pack.b .pack.c .pack.d
275} -body {
276    pack .pack.a -side right -pady {40 0}
277    pack .pack.b -expand yes -fill both
278    update
279    list [winfo geometry .pack.a] [winfo geometry .pack.b]
280} -result {20x40+280+100 280x200+0+0}
281test pack-3.4 {y padding and filling} -setup {
282    pack forget .pack.a .pack.b .pack.c .pack.d
283} -body {
284    pack .pack.a -side right -ipady 20
285    pack .pack.b -expand yes -fill both
286    update
287    list [winfo geometry .pack.a] [winfo geometry .pack.b]
288} -result {20x80+280+60 280x200+0+0}
289test pack-3.5 {y padding and filling} -setup {
290    pack forget .pack.a .pack.b .pack.c .pack.d
291} -body {
292    pack .pack.a -side right -ipady 5 -pady 10
293    pack .pack.b -expand yes -fill both
294    update
295    list [winfo geometry .pack.a] [winfo geometry .pack.b]
296} -result {20x50+280+75 280x200+0+0}
297test pack-3.6 {y padding and filling} -setup {
298    pack forget .pack.a .pack.b .pack.c .pack.d
299} -body {
300    pack .pack.a -side right -ipady 5 -pady {5 15}
301    pack .pack.b -expand yes -fill both
302    update
303    list [winfo geometry .pack.a] [winfo geometry .pack.b]
304} -result {20x50+280+70 280x200+0+0}
305test pack-3.7 {y padding and filling} -setup {
306    pack forget .pack.a .pack.b .pack.c .pack.d
307} -body {
308    pack .pack.a -side right -pady 20 -fill y
309    pack .pack.b -expand yes -fill both
310    update
311    list [winfo geometry .pack.a] [winfo geometry .pack.b]
312} -result {20x160+280+20 280x200+0+0}
313test pack-3.8 {y padding and filling} -setup {
314    pack forget .pack.a .pack.b .pack.c .pack.d
315} -body {
316    pack .pack.a -side right -pady {35 5} -fill y
317    pack .pack.b -expand yes -fill both
318    update
319    list [winfo geometry .pack.a] [winfo geometry .pack.b]
320} -result {20x160+280+35 280x200+0+0}
321test pack-3.9 {y padding and filling} -setup {
322    pack forget .pack.a .pack.b .pack.c .pack.d
323} -body {
324    pack .pack.a -side right -ipady 20 -fill y
325    pack .pack.b -expand yes -fill both
326    update
327    list [winfo geometry .pack.a] [winfo geometry .pack.b]
328} -result {20x200+280+0 280x200+0+0}
329test pack-3.10 {y padding and filling} -setup {
330    pack forget .pack.a .pack.b .pack.c .pack.d
331} -body {
332    pack .pack.a -side right -ipady 5 -pady 10 -fill y
333    pack .pack.b -expand yes -fill both
334    update
335    list [winfo geometry .pack.a] [winfo geometry .pack.b]
336} -result {20x180+280+10 280x200+0+0}
337test pack-3.11 {y padding and filling} -setup {
338    pack forget .pack.a .pack.b .pack.c .pack.d
339} -body {
340    pack .pack.a -side right -ipady 5 -pady {0 20} -fill y
341    pack .pack.b -expand yes -fill both
342    update
343    list [winfo geometry .pack.a] [winfo geometry .pack.b]
344} -result {20x180+280+0 280x200+0+0}
345test pack-3.12 {y padding and filling} -setup {
346    pack forget .pack.a .pack.b .pack.c .pack.d
347} -body {
348    pack .pack.a -side top -pady 20
349    pack .pack.b -expand yes -fill both
350    update
351    list [winfo geometry .pack.a] [winfo geometry .pack.b]
352} -result {20x40+140+20 300x120+0+80}
353test pack-3.13 {y padding and filling} -setup {
354    pack forget .pack.a .pack.b .pack.c .pack.d
355} -body {
356    pack .pack.a -side top -pady {40 0}
357    pack .pack.b -expand yes -fill both
358    update
359    list [winfo geometry .pack.a] [winfo geometry .pack.b]
360} -result {20x40+140+40 300x120+0+80}
361test pack-3.14 {y padding and filling} -setup {
362    pack forget .pack.a .pack.b .pack.c .pack.d
363} -body {
364    pack .pack.a -side top -ipady 20
365    pack .pack.b -expand yes -fill both
366    update
367    list [winfo geometry .pack.a] [winfo geometry .pack.b]
368} -result {20x80+140+0 300x120+0+80}
369test pack-3.15 {y padding and filling} -setup {
370    pack forget .pack.a .pack.b .pack.c .pack.d
371} -body {
372    pack .pack.a -side top -ipady 5 -pady 10
373    pack .pack.b -expand yes -fill both
374    update
375    list [winfo geometry .pack.a] [winfo geometry .pack.b]
376} -result {20x50+140+10 300x130+0+70}
377test pack-3.16 {y padding and filling} -setup {
378    pack forget .pack.a .pack.b .pack.c .pack.d
379} -body {
380    pack .pack.a -side top -ipady 5 -pady {3 17}
381    pack .pack.b -expand yes -fill both
382    update
383    list [winfo geometry .pack.a] [winfo geometry .pack.b]
384} -result {20x50+140+3 300x130+0+70}
385test pack-3.17 {y padding and filling} -setup {
386    pack forget .pack.a .pack.b .pack.c .pack.d
387} -body {
388    pack .pack.a -side top -pady 20 -fill y
389    pack .pack.b -expand yes -fill both
390    update
391    list [winfo geometry .pack.a] [winfo geometry .pack.b]
392} -result {20x40+140+20 300x120+0+80}
393test pack-3.18 {y padding and filling} -setup {
394    pack forget .pack.a .pack.b .pack.c .pack.d
395} -body {
396    pack .pack.a -side top -pady {39 1} -fill y
397    pack .pack.b -expand yes -fill both
398    update
399    list [winfo geometry .pack.a] [winfo geometry .pack.b]
400} -result {20x40+140+39 300x120+0+80}
401test pack-3.19 {y padding and filling} -setup {
402    pack forget .pack.a .pack.b .pack.c .pack.d
403} -body {
404    pack .pack.a -side top -ipady 20 -fill y
405    pack .pack.b -expand yes -fill both
406    update
407    list [winfo geometry .pack.a] [winfo geometry .pack.b]
408} -result {20x80+140+0 300x120+0+80}
409test pack-3.20 {y padding and filling} -setup {
410    pack forget .pack.a .pack.b .pack.c .pack.d
411} -body {
412    pack .pack.a -side top -ipady 5 -pady 10 -fill y
413    pack .pack.b -expand yes -fill both
414    update
415    list [winfo geometry .pack.a] [winfo geometry .pack.b]
416} -result {20x50+140+10 300x130+0+70}
417test pack-3.21 {y padding and filling} -setup {
418    pack forget .pack.a .pack.b .pack.c .pack.d
419} -body {
420    pack .pack.a -side top -ipady 5 -pady {1 19} -fill y
421    pack .pack.b -expand yes -fill both
422    update
423    list [winfo geometry .pack.a] [winfo geometry .pack.b]
424} -result {20x50+140+1 300x130+0+70}
425
426test pack-3.22 {y padding and filling} -setup {
427    pack forget .pack.a .pack.b .pack.c .pack.d
428} -body {
429    pack .pack.a -pady 1c
430    set x [pack info .pack.a]
431    set res1 [lindex $x [expr [lsearch -exact $x -pady]+1]]
432    set res2 [winfo pixels .pack 1c]
433    expr {$res1 eq $res2}
434} -result 1
435test pack-3.23 {y padding and filling} -setup {
436    pack forget .pack.a .pack.b .pack.c .pack.d
437} -body {
438    pack .pack.a -ipady 1c
439    set x [pack info .pack.a]
440    set res1 [lindex $x [expr [lsearch -exact $x -ipady]+1]]
441    set res2 [winfo pixels .pack 1c]
442    expr {$res1 eq $res2}
443} -result 1
444
445
446test pack-4.1 {anchors} -setup {
447    pack forget .pack.a .pack.b .pack.c .pack.d
448} -body {
449    pack .pack.a -side top -ipadx 5 -padx 10 -ipady 15 -pady 20 -expand y -anchor n
450    update
451    winfo geometry .pack.a
452} -result {30x70+135+20}
453test pack-4.2 {anchors} -setup {
454    pack forget .pack.a .pack.b .pack.c .pack.d
455} -body {
456    pack .pack.a -side top -ipadx 5 -padx 10 -ipady 15 -pady 20 -expand y -anchor ne
457    update
458    winfo geometry .pack.a
459} -result {30x70+260+20}
460test pack-4.3 {anchors} -setup {
461    pack forget .pack.a .pack.b .pack.c .pack.d
462} -body {
463    pack .pack.a -side top -ipadx 5 -padx 10 -ipady 15 -pady 20 -expand y -anchor e
464    update
465    winfo geometry .pack.a
466} -result {30x70+260+65}
467test pack-4.4 {anchors} -setup {
468    pack forget .pack.a .pack.b .pack.c .pack.d
469} -body {
470    pack .pack.a -side top -ipadx 5 -padx 10 -ipady 15 -pady 20 -expand y -anchor se
471    update
472    winfo geometry .pack.a
473} -result {30x70+260+110}
474test pack-4.5 {anchors} -setup {
475    pack forget .pack.a .pack.b .pack.c .pack.d
476} -body {
477    pack .pack.a -side top -ipadx 5 -padx 10 -ipady 15 -pady 20 -expand y -anchor s
478    update
479    winfo geometry .pack.a
480} -result {30x70+135+110}
481test pack-4.6 {anchors} -setup {
482    pack forget .pack.a .pack.b .pack.c .pack.d
483} -body {
484    pack .pack.a -side top -ipadx 5 -padx 10 -ipady 15 -pady 20 -expand y -anchor sw
485    update
486    winfo geometry .pack.a
487} -result {30x70+10+110}
488test pack-4.7 {anchors} -setup {
489    pack forget .pack.a .pack.b .pack.c .pack.d
490} -body {
491    pack .pack.a -side top -ipadx 5 -padx 10 -ipady 15 -pady 20 -expand y -anchor w
492    update
493    winfo geometry .pack.a
494} -result {30x70+10+65}
495test pack-4.8 {anchors} -setup {
496    pack forget .pack.a .pack.b .pack.c .pack.d
497} -body {
498    pack .pack.a -side top -ipadx 5 -padx 10 -ipady 15 -pady 20 -expand y -anchor nw
499    update
500    winfo geometry .pack.a
501} -result {30x70+10+20}
502test pack-4.9 {anchors} -setup {
503    pack forget .pack.a .pack.b .pack.c .pack.d
504} -body {
505    pack .pack.a -side top -ipadx 5 -padx 10 -ipady 15 -pady 20 -expand y -anchor center
506    update
507    winfo geometry .pack.a
508} -result {30x70+135+65}
509
510
511# Repeat above tests, but with a frame that isn't at (0,0), so that
512# we can be sure that the frame offset is being added in correctly.
513
514test pack-5.1 {more anchors} -setup {
515    pack forget .pack.a .pack.b .pack.c .pack.d
516} -body {
517    pack .pack.a -side  top
518    pack .pack.c -side left
519    pack .pack.b -side top -ipadx 5 -padx 10 -ipady 15 -pady 20 -expand y -anchor n
520    update
521    winfo geometry .pack.b
522} -result {60x60+160+60}
523test pack-5.2 {more anchors} -setup {
524    pack forget .pack.a .pack.b .pack.c .pack.d
525} -body {
526    pack .pack.a -side  top
527    pack .pack.c -side left
528    pack .pack.b -side top -ipadx 5 -padx 10 -ipady 15 -pady 20 -expand y -anchor ne
529    update
530    winfo geometry .pack.b
531} -result {60x60+230+60}
532test pack-5.3 {more anchors} -setup {
533    pack forget .pack.a .pack.b .pack.c .pack.d
534} -body {
535    pack .pack.a -side  top
536    pack .pack.c -side left
537    pack .pack.b -side top -ipadx 5 -padx 10 -ipady 15 -pady 20 -expand y -anchor e
538    update
539    winfo geometry .pack.b
540} -result {60x60+230+90}
541test pack-5.4 {more anchors} -setup {
542    pack forget .pack.a .pack.b .pack.c .pack.d
543} -body {
544    pack .pack.a -side  top
545    pack .pack.c -side left
546    pack .pack.b -side top -ipadx 5 -padx 10 -ipady 15 -pady 20 -expand y -anchor se
547    update
548    winfo geometry .pack.b
549} -result {60x60+230+120}
550test pack-5.5 {more anchors} -setup {
551    pack forget .pack.a .pack.b .pack.c .pack.d
552} -body {
553    pack .pack.a -side  top
554    pack .pack.c -side left
555    pack .pack.b -side top -ipadx 5 -padx 10 -ipady 15 -pady 20 -expand y -anchor s
556    update
557    winfo geometry .pack.b
558} -result {60x60+160+120}
559test pack-5.6 {more anchors} -setup {
560    pack forget .pack.a .pack.b .pack.c .pack.d
561} -body {
562    pack .pack.a -side  top
563    pack .pack.c -side left
564    pack .pack.b -side top -ipadx 5 -padx 10 -ipady 15 -pady 20 -expand y -anchor sw
565    update
566    winfo geometry .pack.b
567} -result {60x60+90+120}
568test pack-5.7 {more anchors} -setup {
569    pack forget .pack.a .pack.b .pack.c .pack.d
570} -body {
571    pack .pack.a -side  top
572    pack .pack.c -side left
573    pack .pack.b -side top -ipadx 5 -padx 10 -ipady 15 -pady 20 -expand y -anchor w
574    update
575    winfo geometry .pack.b
576} -result {60x60+90+90}
577test pack-5.8 {more anchors} -setup {
578    pack forget .pack.a .pack.b .pack.c .pack.d
579} -body {
580    pack .pack.a -side  top
581    pack .pack.c -side left
582    pack .pack.b -side top -ipadx 5 -padx 10 -ipady 15 -pady 20 -expand y -anchor nw
583    update
584    winfo geometry .pack.b
585} -result {60x60+90+60}
586test pack-5.9 {more anchors} -setup {
587    pack forget .pack.a .pack.b .pack.c .pack.d
588} -body {
589    pack .pack.a -side  top
590    pack .pack.c -side left
591    pack .pack.b -side top -ipadx 5 -padx 10 -ipady 15 -pady 20 -expand y -anchor center
592    update
593    winfo geometry .pack.b
594} -result {60x60+160+90}
595
596
597test pack-6.1 {-expand option} -setup {
598    pack forget .pack.a .pack.b .pack.c .pack.d
599} -body {
600    pack .pack.a .pack.b .pack.c .pack.d -side left
601    update
602    list [winfo geometry .pack.a] [winfo geometry .pack.b] \
603        [winfo geometry .pack.c] [winfo geometry .pack.d]
604} -result {20x40+0+80 50x30+20+85 80x80+70+60 40x30+150+85}
605test pack-6.2 {-expand option} -setup {
606    pack forget .pack.a .pack.b .pack.c .pack.d
607} -body {
608    pack .pack.a -side left -expand yes
609    pack .pack.b -side left
610    pack .pack.c .pack.d -side left -expand 1
611    update
612    list [winfo geometry .pack.a] [winfo geometry .pack.b] \
613        [winfo geometry .pack.c] [winfo geometry .pack.d]
614} -result {20x40+18+80 50x30+56+85 80x80+124+60 40x30+241+85}
615test pack-6.3 {-expand option} -setup {
616    pack forget .pack.a .pack.b .pack.c .pack.d
617} -body {
618    pack .pack.a .pack.b .pack.c .pack.d -side top
619    update
620    list [winfo geometry .pack.a] [winfo geometry .pack.b] \
621        [winfo geometry .pack.c] [winfo geometry .pack.d]
622} -result {20x40+140+0 50x30+125+40 80x80+110+70 40x30+130+150}
623test pack-6.4 {-expand option} -setup {
624    pack forget .pack.a .pack.b .pack.c .pack.d
625} -body {
626    pack .pack.a -side top -expand yes
627    pack .pack.b -side top
628    pack .pack.c .pack.d -side top -expand 1
629    update
630    list [winfo geometry .pack.a] [winfo geometry .pack.b] \
631        [winfo geometry .pack.c] [winfo geometry .pack.d]
632} -result {20x40+140+3 50x30+125+46 80x80+110+79 40x30+130+166}
633test pack-6.5 {-expand option} -setup {
634    pack forget .pack.a .pack.b .pack.c .pack.d
635} -body {
636    pack .pack.a .pack.b .pack.c .pack.d -side right
637    update
638    list [winfo geometry .pack.a] [winfo geometry .pack.b] \
639        [winfo geometry .pack.c] [winfo geometry .pack.d]
640} -result {20x40+280+80 50x30+230+85 80x80+150+60 40x30+110+85}
641test pack-6.6 {-expand option} -setup {
642    pack forget .pack.a .pack.b .pack.c .pack.d
643} -body {
644    pack .pack.a -side right -expand yes
645    pack .pack.b -side right
646    pack .pack.c .pack.d -side right -expand 1
647    update
648    list [winfo geometry .pack.a] [winfo geometry .pack.b] \
649        [winfo geometry .pack.c] [winfo geometry .pack.d]
650} -result {20x40+262+80 50x30+194+85 80x80+95+60 40x30+18+85}
651test pack-6.7 {-expand option} -setup {
652    pack forget .pack.a .pack.b .pack.c .pack.d
653} -body {
654    pack .pack.a .pack.b .pack.c .pack.d -side bottom
655    update
656    list [winfo geometry .pack.a] [winfo geometry .pack.b] \
657        [winfo geometry .pack.c] [winfo geometry .pack.d]
658} -result {20x40+140+160 50x30+125+130 80x80+110+50 40x30+130+20}
659test pack-6.8 {-expand option} -setup {
660    pack forget .pack.a .pack.b .pack.c .pack.d
661} -body {
662    pack .pack.a -side bottom -expand yes
663    pack .pack.b -side bottom
664    pack .pack.c .pack.d -side bottom -expand 1
665    update
666    list [winfo geometry .pack.a] [winfo geometry .pack.b] \
667        [winfo geometry .pack.c] [winfo geometry .pack.d]
668} -result {20x40+140+157 50x30+125+124 80x80+110+40 40x30+130+3}
669test pack-6.9 {-expand option} -setup {
670    pack forget .pack.a .pack.b .pack.c .pack.d
671} -body {
672    pack .pack.a -side bottom -expand yes -fill both
673    pack .pack.b -side right
674    pack .pack.c -side top -expand 1 -fill both
675    pack .pack.d -side left
676    update
677    list [winfo geometry .pack.a] [winfo geometry .pack.b] \
678        [winfo geometry .pack.c] [winfo geometry .pack.d]
679} -result {300x65+0+135 50x30+250+52 250x105+0+0 40x30+0+105}
680test pack-6.10 {-expand option} -setup {
681    pack forget .pack.a .pack.b .pack.c .pack.d
682} -body {
683    pack .pack.a -side left -expand yes -fill both
684    pack .pack.b -side top
685    pack .pack.c -side right -expand 1 -fill both
686    pack .pack.d -side bottom
687    update
688    list [winfo geometry .pack.a] [winfo geometry .pack.b] \
689        [winfo geometry .pack.c] [winfo geometry .pack.d]
690} -result {100x200+0+0 50x30+175+0 160x170+140+30 40x30+100+170}
691test pack-6.11 {-expand option} -setup {
692    pack forget .pack.a .pack.b .pack.c .pack.d
693} -body {
694    pack .pack.a -side left -expand yes -fill both
695    pack .pack.b -side top -expand yes -fill both
696    pack .pack.c -side right -expand 1 -fill both
697    pack .pack.d -side bottom -expand yes -fill both
698    update
699    list [winfo geometry .pack.a] [winfo geometry .pack.b] \
700        [winfo geometry .pack.c] [winfo geometry .pack.d]
701} -result {100x200+0+0 200x100+100+0 160x100+140+100 40x100+100+100}
702
703test pack-6.12 {-expand option} -setup {
704    toplevel .pack2 -height 400 -width 400
705    wm geometry .pack2 +0+0
706    pack propagate .pack2 0
707    foreach i {w1 w2 w3} {
708        frame .pack2.$i -width 30 -height 30 -bd 2 -relief raised
709        label .pack2.$i.l -text $i
710        place .pack2.$i.l -relwidth 1.0 -relheight 1.0
711    }
712} -body {
713    pack .pack2.w1 .pack2.w2 .pack2.w3 -padx 5 -ipadx 4 -pady 2 -ipady 6 -expand 1 -side left
714    update
715    list [winfo geometry .pack2.w1] [winfo geometry .pack2.w2] [winfo geometry .pack2.w3]
716} -cleanup {
717    destroy .pack2
718} -result {38x42+47+179 38x42+180+179 38x42+314+179}
719test pack-6.13 {-expand option} -setup {
720    toplevel .pack2 -height 400 -width 400
721    wm geometry .pack2 +0+0
722    pack propagate .pack2 0
723    foreach i {w1 w2 w3} {
724        frame .pack2.$i -width 30 -height 30 -bd 2 -relief raised
725        label .pack2.$i.l -text $i
726        place .pack2.$i.l -relwidth 1.0 -relheight 1.0
727    }
728} -body {
729    pack .pack2.w1 .pack2.w2 .pack2.w3 -padx 5 -ipadx 4 -pady 2 \
730        -ipady 6 -expand 1 -side top
731    update
732    list [winfo geometry .pack2.w1] [winfo geometry .pack2.w2] [winfo geometry .pack2.w3]
733} -cleanup {
734    destroy .pack2
735} -result {38x42+181+45 38x42+181+178 38x42+181+312}
736
737
738wm geometry .pack {}
739test pack-7.1 {requesting size for parent} -setup {
740    pack forget .pack.a .pack.b .pack.c .pack.d
741} -body {
742    pack .pack.a .pack.b .pack.c .pack.d -side left -padx 5 -pady 10
743    update
744    list [winfo reqwidth .pack] [winfo reqheight .pack]
745} -result {230 100}
746test pack-7.2 {requesting size for parent} -setup {
747    pack forget .pack.a .pack.b .pack.c .pack.d
748} -body {
749    pack .pack.a .pack.b .pack.c .pack.d -side top -padx 5 -pady 10
750    update
751    list [winfo reqwidth .pack] [winfo reqheight .pack]
752} -result {90 260}
753test pack-7.3 {requesting size for parent} -setup {
754    pack forget .pack.a .pack.b .pack.c .pack.d
755} -body {
756    pack .pack.a .pack.b .pack.c .pack.d -side right -padx 5 -pady 10
757    update
758    list [winfo reqwidth .pack] [winfo reqheight .pack]
759} -result {230 100}
760test pack-7.4 {requesting size for parent} -setup {
761    pack forget .pack.a .pack.b .pack.c .pack.d
762} -body {
763    pack .pack.a .pack.b .pack.c .pack.d -side bottom -padx 5 -pady 10
764    update
765    list [winfo reqwidth .pack] [winfo reqheight .pack]
766} -result {90 260}
767test pack-7.5 {requesting size for parent} -setup {
768    pack forget .pack.a .pack.b .pack.c .pack.d
769} -body {
770    pack .pack.a -side top -padx 5 -pady 10
771    pack .pack.b -side right -padx 5 -pady 10
772    pack .pack.c -side bottom -padx 5 -pady 10
773    pack .pack.d -side left -padx 5 -pady 10
774    update
775    list [winfo reqwidth .pack] [winfo reqheight .pack]
776} -result {150 210}
777test pack-7.6 {requesting size for parent} -setup {
778    pack forget .pack.a .pack.b .pack.c .pack.d
779} -body {
780    pack .pack.a -side top
781    pack .pack.c -side left
782    pack .pack.d -side bottom
783    update
784    list [winfo reqwidth .pack] [winfo reqheight .pack]
785} -result {120 120}
786test pack-7.7 {requesting size for parent} -setup {
787    pack forget .pack.a .pack.b .pack.c .pack.d
788} -body {
789    pack .pack.a -side right
790    pack .pack.c -side bottom
791    pack .pack.d -side top
792    update
793    list [winfo reqwidth .pack] [winfo reqheight .pack]
794} -result {100 110}
795
796
797# For the tests below, create a couple of "pad" windows to shrink
798# the available space for the remaining windows.  The tests have to
799# be done this way rather than shrinking the whole window, because
800# some window managers like mwm won't let a top-level window get
801# very small.
802
803pack forget .pack.a .pack.b .pack.c .pack.d
804frame .pack.right -width 200 -height 10 -bd 2 -relief raised
805frame .pack.bottom -width 10 -height 150 -bd 2 -relief raised
806pack .pack.right -side right
807pack .pack.bottom -side bottom
808pack .pack.a .pack.b .pack.c -side top
809update
810test pack-8.1 {insufficient space} -body {
811    list [winfo geometry .pack.a] [winfo ismapped .pack.a] \
812        [winfo geometry .pack.b] [winfo ismapped .pack.b] \
813        [winfo geometry .pack.c] [winfo ismapped .pack.c]
814} -result {20x40+30+0 1 50x30+15+40 1 80x80+0+70 1}
815wm geom .pack 270x250
816update
817test pack-8.2 {insufficient space} -body {
818    list [winfo geometry .pack.a] [winfo ismapped .pack.a] \
819        [winfo geometry .pack.b] [winfo ismapped .pack.b] \
820        [winfo geometry .pack.c] [winfo ismapped .pack.c]
821} -result {20x40+25+0 1 50x30+10+40 1 70x30+0+70 1}
822wm geom .pack 240x220
823update
824test pack-8.3 {insufficient space} -body {
825    list [winfo geometry .pack.a] [winfo ismapped .pack.a] \
826        [winfo geometry .pack.b] [winfo ismapped .pack.b] \
827        [winfo geometry .pack.c] [winfo ismapped .pack.c]
828} -result {20x40+10+0 1 40x30+0+40 1 70x30+0+70 0}
829wm geom .pack 350x350
830update
831test pack-8.4 {insufficient space} -body {
832    list [winfo geometry .pack.a] [winfo ismapped .pack.a] \
833        [winfo geometry .pack.b] [winfo ismapped .pack.b] \
834        [winfo geometry .pack.c] [winfo ismapped .pack.c]
835} -result {20x40+65+0 1 50x30+50+40 1 80x80+35+70 1}
836wm geom .pack {}
837pack .pack.a -side left
838pack .pack.b -side right
839pack .pack.c -side left
840update
841test pack-8.5 {insufficient space} -body {
842    list [winfo geometry .pack.a] [winfo ismapped .pack.a] \
843        [winfo geometry .pack.b] [winfo ismapped .pack.b] \
844        [winfo geometry .pack.c] [winfo ismapped .pack.c]
845} -result {20x40+0+20 1 50x30+100+25 1 80x80+20+0 1}
846wm geom .pack 320x180
847update
848test pack-8.6 {insufficient space} -body {
849    list [winfo geometry .pack.a] [winfo ismapped .pack.a] \
850        [winfo geometry .pack.b] [winfo ismapped .pack.b] \
851        [winfo geometry .pack.c] [winfo ismapped .pack.c]
852} -result {20x30+0+0 1 50x30+70+0 1 50x30+20+0 1}
853wm geom .pack 250x180
854update
855test pack-8.7 {insufficient space} -body {
856    list [winfo geometry .pack.a] [winfo ismapped .pack.a] \
857        [winfo geometry .pack.b] [winfo ismapped .pack.b] \
858        [winfo geometry .pack.c] [winfo ismapped .pack.c]
859} -result {20x30+0+0 1 30x30+20+0 1 50x30+20+0 0}
860pack forget .pack.b
861update
862test pack-8.8 {insufficient space} -body {
863    list [winfo geometry .pack.a] [winfo ismapped .pack.a] \
864        [winfo geometry .pack.b] [winfo ismapped .pack.b] \
865        [winfo geometry .pack.c] [winfo ismapped .pack.c]
866} -result {20x30+0+0 1 30x30+20+0 0 30x30+20+0 1}
867pack .pack.b -side right -after .pack.a
868wm geom .pack {}
869update
870test pack-8.9 {insufficient space} -body {
871    list [winfo geometry .pack.a] [winfo ismapped .pack.a] \
872        [winfo geometry .pack.b] [winfo ismapped .pack.b] \
873        [winfo geometry .pack.c] [winfo ismapped .pack.c]
874} -result {20x40+0+20 1 50x30+100+25 1 80x80+20+0 1}
875pack forget .pack.right .pack.bottom
876
877
878test pack-9.1 {window ordering} -setup {
879    pack forget .pack.a .pack.b .pack.c .pack.d
880} -body {
881    pack .pack.a .pack.b .pack.c .pack.d -side top
882    pack .pack.a -after .pack.b
883    pack content .pack
884} -result {.pack.b .pack.a .pack.c .pack.d}
885test pack-9.2 {window ordering} -setup {
886    pack forget .pack.a .pack.b .pack.c .pack.d
887} -body {
888    pack .pack.a .pack.b .pack.c .pack.d -side top
889    pack .pack.a -after .pack.a
890    pack content .pack
891} -result {.pack.a .pack.b .pack.c .pack.d}
892test pack-9.3 {window ordering} -setup {
893    pack forget .pack.a .pack.b .pack.c .pack.d
894} -body {
895    pack .pack.a .pack.b .pack.c .pack.d -side top
896    pack .pack.a -before .pack.d
897    pack content .pack
898} -result {.pack.b .pack.c .pack.a .pack.d}
899test pack-9.4 {window ordering} -setup {
900    pack forget .pack.a .pack.b .pack.c .pack.d
901} -body {
902    pack .pack.a .pack.b .pack.c .pack.d -side top
903    pack .pack.d -before .pack.a
904    pack content .pack
905} -result {.pack.d .pack.a .pack.b .pack.c}
906test pack-9.5 {window ordering} -setup {
907    pack forget .pack.a .pack.b .pack.c .pack.d
908} -body {
909    pack .pack.a .pack.b .pack.c .pack.d -side top
910    pack propagate .pack.c 0
911    pack .pack.a -in .pack.c
912    list [pack content .pack] [pack content .pack.c]
913} -result {{.pack.b .pack.c .pack.d} .pack.a}
914test pack-9.6 {window ordering} -setup {
915    pack forget .pack.a .pack.b .pack.c .pack.d
916} -body {
917    pack .pack.a .pack.b .pack.c .pack.d -side top
918    pack .pack.a -in .pack
919    pack content .pack
920} -result {.pack.b .pack.c .pack.d .pack.a}
921test pack-9.7 {window ordering} -setup {
922    pack forget .pack.a .pack.b .pack.c .pack.d
923} -body {
924    pack .pack.a .pack.b .pack.c .pack.d -side top
925    pack .pack.a -padx 0
926    pack content .pack
927} -result {.pack.a .pack.b .pack.c .pack.d}
928test pack-9.8 {window ordering} -setup {
929    pack forget .pack.a .pack.b .pack.c .pack.d
930} -body {
931    pack .pack.a .pack.b .pack.c
932    pack .pack.d
933    pack content .pack
934} -result {.pack.a .pack.b .pack.c .pack.d}
935test pack-9.9 {window ordering} -setup {
936    pack forget .pack.a .pack.b .pack.c .pack.d
937} -body {
938    pack .pack.a .pack.b .pack.c .pack.d
939    pack .pack.b .pack.d .pack.c -before .pack.a
940    pack content .pack
941} -result {.pack.b .pack.d .pack.c .pack.a}
942test pack-9.10 {window ordering} -setup {
943    pack forget .pack.a .pack.b .pack.c .pack.d
944} -body {
945    pack .pack.a .pack.b .pack.c .pack.d
946    pack .pack.a .pack.c .pack.d .pack.b -after .pack.a
947    pack content .pack
948} -result {.pack.a .pack.c .pack.d .pack.b}
949
950
951test pack-10.1 {retaining/clearing configuration state} -setup {
952    pack forget .pack.a .pack.b .pack.c .pack.d
953} -body {
954    pack .pack.a -side bottom -anchor n -padx 1 -pady 2 -ipadx 3 -ipady 4 \
955    -fill both -expand 1
956    pack forget .pack.a
957    pack .pack.a
958    pack info .pack.a
959} -result {-in .pack -anchor center -expand 0 -fill none -ipadx 0 -ipady 0 -padx 0 -pady 0 -side top}
960test pack-10.2 {retaining/clearing configuration state} -setup {
961    pack forget .pack.a .pack.b .pack.c .pack.d
962} -body {
963    pack .pack.a -side bottom -anchor n -padx 1 -pady 2 -ipadx 3 -ipady 4 \
964    -fill both -expand 1
965    pack .pack.a -pady 14
966    pack info .pack.a
967} -result {-in .pack -anchor n -expand 1 -fill both -ipadx 3 -ipady 4 -padx 1 -pady 14 -side bottom}
968test pack-10.3 {bad -in window does not change container window} -setup {
969    pack forget .pack.a .pack.b .pack.c .pack.d
970} -body {
971    set result [list [winfo manager .pack.a]]
972    catch {pack .pack.a -in .pack.a}
973    lappend result [winfo manager .pack.a]
974} -result {{} {}}
975test pack-10.4 {bad -in window does not change container window} -setup {
976    pack forget .pack.a .pack.b .pack.c .pack.d
977} -body {
978    winfo manager .pack.a
979    pack .pack.a -in .pack.a
980} -returnCodes error -result {can't pack .pack.a inside itself}
981test pack-10.5 {prevent management loops} -body {
982    frame .f1
983    frame .f2
984    pack .f1 -in .f2
985    pack .f2 -in .f1
986} -cleanup {
987    destroy .f1
988    destroy .f2
989} -returnCodes error -result {can't put .f2 inside .f1, would cause management loop}
990test pack-10.6 {prevent management loops} -body {
991    frame .f1
992    frame .f2
993    frame .f3
994    pack .f1 -in .f2
995    pack .f2 -in .f3
996    pack .f3 -in .f1
997} -cleanup {
998    destroy .f1
999    destroy .f2
1000    destroy .f3
1001} -returnCodes error -result {can't put .f3 inside .f1, would cause management loop}
1002
1003
1004test pack-11.1 {info option} -setup {
1005    pack forget .pack.a .pack.b .pack.c .pack.d
1006} -body {
1007    pack .pack.a -in .pack
1008    set i [pack info .pack.a]
1009    lindex $i [expr [lsearch -exact $i -in]+1]
1010} -result .pack
1011test pack-11.2 {info option} -setup {
1012    pack forget .pack.a .pack.b .pack.c .pack.d
1013} -body {
1014    pack .pack.a -anchor n
1015    set i [pack info .pack.a]
1016    lindex $i [expr [lsearch -exact $i -anchor]+1]
1017} -result n
1018test pack-11.3 {info option} -setup {
1019    pack forget .pack.a .pack.b .pack.c .pack.d
1020} -body {
1021    pack .pack.a -anchor sw
1022    set i [pack info .pack.a]
1023    lindex $i [expr [lsearch -exact $i -anchor]+1]
1024} -result sw
1025test pack-11.4 {info option} -setup {
1026    pack forget .pack.a .pack.b .pack.c .pack.d
1027} -body {
1028    pack .pack.a -expand yes
1029    set i [pack info .pack.a]
1030    lindex $i [expr [lsearch -exact $i -expand]+1]
1031} -result 1
1032test pack-11.5 {info option} -setup {
1033    pack forget .pack.a .pack.b .pack.c .pack.d
1034} -body {
1035    pack .pack.a -expand no
1036    set i [pack info .pack.a]
1037    lindex $i [expr [lsearch -exact $i -expand]+1]
1038} -result 0
1039test pack-11.6 {info option} -setup {
1040    pack forget .pack.a .pack.b .pack.c .pack.d
1041} -body {
1042    pack .pack.a -fill x
1043    set i [pack info .pack.a]
1044    lindex $i [expr [lsearch -exact $i -fill]+1]
1045} -result x
1046test pack-11.7 {info option} -setup {
1047    pack forget .pack.a .pack.b .pack.c .pack.d
1048} -body {
1049    pack .pack.a -fill y
1050    set i [pack info .pack.a]
1051    lindex $i [expr [lsearch -exact $i -fill]+1]
1052} -result y
1053test pack-11.8 {info option} -setup {
1054    pack forget .pack.a .pack.b .pack.c .pack.d
1055} -body {
1056    pack .pack.a -fill both
1057    set i [pack info .pack.a]
1058    lindex $i [expr [lsearch -exact $i -fill]+1]
1059} -result both
1060test pack-11.9 {info option} -setup {
1061    pack forget .pack.a .pack.b .pack.c .pack.d
1062} -body {
1063    pack .pack.a -fill none
1064    set i [pack info .pack.a]
1065    lindex $i [expr [lsearch -exact $i -fill]+1]
1066} -result none
1067test pack-11.10 {info option} -setup {
1068    pack forget .pack.a .pack.b .pack.c .pack.d
1069} -body {
1070    pack .pack.a -ipadx 14
1071    set i [pack info .pack.a]
1072    lindex $i [expr [lsearch -exact $i -ipadx]+1]
1073} -result 14
1074test pack-11.11 {info option} -setup {
1075    pack forget .pack.a .pack.b .pack.c .pack.d
1076} -body {
1077    pack .pack.a -ipady 22
1078    set i [pack info .pack.a]
1079    lindex $i [expr [lsearch -exact $i -ipady]+1]
1080} -result 22
1081test pack-11.12 {info option} -setup {
1082    pack forget .pack.a .pack.b .pack.c .pack.d
1083} -body {
1084    pack .pack.a -padx 2
1085    set i [pack info .pack.a]
1086    lindex $i [expr [lsearch -exact $i -padx]+1]
1087} -result 2
1088test pack-11.13 {info option} -setup {
1089    pack forget .pack.a .pack.b .pack.c .pack.d
1090} -body {
1091    pack .pack.a -padx {2 9}
1092    set i [pack info .pack.a]
1093    lindex $i [expr [lsearch -exact $i -padx]+1]
1094} -result {2 9}
1095test pack-11.14 {info option} -setup {
1096    pack forget .pack.a .pack.b .pack.c .pack.d
1097} -body {
1098    pack .pack.a -pady 3
1099    set i [pack info .pack.a]
1100    lindex $i [expr [lsearch -exact $i -pady]+1]
1101} -result 3
1102test pack-11.15 {info option} -setup {
1103    pack forget .pack.a .pack.b .pack.c .pack.d
1104} -body {
1105    pack .pack.a -pady {3 11}
1106    set i [pack info .pack.a]
1107    lindex $i [expr [lsearch -exact $i -pady]+1]
1108} -result {3 11}
1109test pack-11.16 {info option} -setup {
1110    pack forget .pack.a .pack.b .pack.c .pack.d
1111} -body {
1112    pack .pack.a -side top
1113    set i [pack info .pack.a]
1114    lindex $i [expr [lsearch -exact $i -side]+1]
1115} -result top
1116test pack-11.17 {info option} -setup {
1117    pack forget .pack.a .pack.b .pack.c .pack.d
1118} -body {
1119    pack .pack.a -side bottom
1120    set i [pack info .pack.a]
1121    lindex $i [expr [lsearch -exact $i -side]+1]
1122} -result bottom
1123test pack-11.18 {info option} -setup {
1124    pack forget .pack.a .pack.b .pack.c .pack.d
1125} -body {
1126    pack .pack.a -side left
1127    set i [pack info .pack.a]
1128    lindex $i [expr [lsearch -exact $i -side]+1]
1129} -result left
1130test pack-11.19 {info option} -setup {
1131    pack forget .pack.a .pack.b .pack.c .pack.d
1132} -body {
1133    pack .pack.a -side right
1134    set i [pack info .pack.a]
1135    lindex $i [expr [lsearch -exact $i -side]+1]
1136} -result right
1137
1138
1139test pack-12.1 {command options and errors} -body {
1140    pack
1141} -returnCodes error -result {wrong # args: should be "pack option arg ?arg ...?"}
1142test pack-12.2 {command options and errors} -body {
1143    pack foo
1144} -returnCodes error -result {wrong # args: should be "pack option arg ?arg ...?"}
1145test pack-12.3 {command options and errors} -body {
1146    pack configure x
1147} -returnCodes error -result {bad argument "x": must be name of window}
1148test pack-12.4 {command options and errors} -setup {
1149    pack forget .pack.a .pack.b .pack.c .pack.d
1150} -body {
1151    pack configure .pack.b .pack.c
1152    pack content .pack
1153} -result {.pack.b .pack.c}
1154test pack-12.5 {command options and errors} -setup {
1155    pack forget .pack.a .pack.b .pack.c .pack.d
1156} -body {
1157    pack .foo
1158} -returnCodes error -result {bad window path name ".foo"}
1159test pack-12.6 {command options and errors} -setup {
1160    pack forget .pack.a .pack.b .pack.c .pack.d
1161} -body {
1162    pack .pack
1163} -returnCodes error -result {can't pack ".pack": it's a top-level window}
1164test pack-12.7 {command options and errors} -setup {
1165    pack forget .pack.a .pack.b .pack.c .pack.d
1166} -body {
1167    pack .pack.a -after .foo
1168} -returnCodes error -result {bad window path name ".foo"}
1169test pack-12.8 {command options and errors} -setup {
1170    pack forget .pack.a .pack.b .pack.c .pack.d
1171} -body {
1172    pack .pack.a -after .pack.b
1173} -returnCodes error -result {window ".pack.b" isn't packed}
1174test pack-12.9 {command options and errors} -setup {
1175    pack forget .pack.a .pack.b .pack.c .pack.d
1176} -body {
1177    pack .pack.a -anchor gorp
1178} -returnCodes error -result {bad anchor "gorp": must be n, ne, e, se, s, sw, w, nw, or center}
1179test pack-12.10 {command options and errors} -setup {
1180    pack forget .pack.a .pack.b .pack.c .pack.d
1181} -body {
1182    pack .pack.a -before gorp
1183} -returnCodes error -result {bad window path name "gorp"}
1184test pack-12.11 {command options and errors} -setup {
1185    pack forget .pack.a .pack.b .pack.c .pack.d
1186} -body {
1187    pack .pack.a -before .pack.b
1188} -returnCodes error -result {window ".pack.b" isn't packed}
1189test pack-12.12 {command options and errors} -setup {
1190    pack forget .pack.a .pack.b .pack.c .pack.d
1191} -body {
1192    pack .pack.a -expand "who cares?"
1193} -returnCodes error -result {expected boolean value but got "who cares?"}
1194test pack-12.13 {command options and errors} -setup {
1195    pack forget .pack.a .pack.b .pack.c .pack.d
1196} -body {
1197    pack .pack.a -fill z
1198} -returnCodes error -result {bad fill style "z": must be none, x, y, or both}
1199test pack-12.14 {command options and errors} -setup {
1200    pack forget .pack.a .pack.b .pack.c .pack.d
1201} -body {
1202    pack .pack.a -in z
1203} -returnCodes error -result {bad window path name "z"}
1204set pad [winfo pixels .pack 1c]
1205test pack-12.15 {command options and errors} -setup {
1206    pack forget .pack.a .pack.b .pack.c .pack.d
1207} -body {
1208    pack .pack.a -padx abc
1209} -returnCodes error -result {bad pad value "abc": must be positive screen distance}
1210test pack-12.16 {command options and errors} -setup {
1211    pack forget .pack.a .pack.b .pack.c .pack.d
1212} -body {
1213    pack .pack.a -padx {5 abc}
1214} -returnCodes error -result {bad 2nd pad value "abc": must be positive screen distance}
1215test pack-12.17 {command options and errors} -setup {
1216    pack forget .pack.a .pack.b .pack.c .pack.d
1217} -body {
1218    pack .pack.a -padx -1
1219} -returnCodes error -result {bad pad value "-1": must be positive screen distance}
1220test pack-12.18 {command options and errors} -setup {
1221    pack forget .pack.a .pack.b .pack.c .pack.d
1222} -body {
1223    pack .pack.a -padx {5 -1}
1224} -returnCodes error -result {bad 2nd pad value "-1": must be positive screen distance}
1225test pack-12.19 {command options and errors} -setup {
1226    pack forget .pack.a .pack.b .pack.c .pack.d
1227} -body {
1228    pack .pack.a -pady abc
1229} -returnCodes error -result {bad pad value "abc": must be positive screen distance}
1230test pack-12.20 {command options and errors} -setup {
1231    pack forget .pack.a .pack.b .pack.c .pack.d
1232} -body {
1233    pack .pack.a -pady {0 abc}
1234} -returnCodes error -result {bad 2nd pad value "abc": must be positive screen distance}
1235test pack-12.21 {command options and errors} -setup {
1236    pack forget .pack.a .pack.b .pack.c .pack.d
1237} -body {
1238    pack .pack.a -pady -1
1239} -returnCodes error -result {bad pad value "-1": must be positive screen distance}
1240test pack-12.22 {command options and errors} -setup {
1241    pack forget .pack.a .pack.b .pack.c .pack.d
1242} -body {
1243    pack .pack.a -pady {0 -1}
1244} -returnCodes error -result {bad 2nd pad value "-1": must be positive screen distance}
1245test pack-12.23 {command options and errors} -setup {
1246    pack forget .pack.a .pack.b .pack.c .pack.d
1247} -body {
1248    pack .pack.a -ipadx abc
1249} -returnCodes error -result {bad ipadx value "abc": must be positive screen distance}
1250test pack-12.24 {command options and errors} -setup {
1251    pack forget .pack.a .pack.b .pack.c .pack.d
1252} -body {
1253    pack .pack.a -ipadx -1
1254} -returnCodes error -result {bad ipadx value "-1": must be positive screen distance}
1255test pack-12.25 {command options and errors} -setup {
1256    pack forget .pack.a .pack.b .pack.c .pack.d
1257} -body {
1258    pack .pack.a -ipadx {5 5}
1259} -returnCodes error -result {bad ipadx value "5 5": must be positive screen distance}
1260test pack-12.26 {command options and errors} -setup {
1261    pack forget .pack.a .pack.b .pack.c .pack.d
1262} -body {
1263    pack .pack.a -ipady abc
1264} -returnCodes error -result {bad ipady value "abc": must be positive screen distance}
1265test pack-12.27 {command options and errors} -setup {
1266    pack forget .pack.a .pack.b .pack.c .pack.d
1267} -body {
1268    pack .pack.a -ipady -1
1269} -returnCodes error -result {bad ipady value "-1": must be positive screen distance}
1270test pack-12.28 {command options and errors} -setup {
1271    pack forget .pack.a .pack.b .pack.c .pack.d
1272} -body {
1273    pack .pack.a -ipady {5 5}
1274} -returnCodes error -result {bad ipady value "5 5": must be positive screen distance}
1275test pack-12.29 {command options and errors} -setup {
1276    pack forget .pack.a .pack.b .pack.c .pack.d
1277} -body {
1278    pack .pack.a -side bac
1279} -returnCodes error -result {bad side "bac": must be top, bottom, left, or right}
1280test pack-12.30 {command options and errors} -setup {
1281    pack forget .pack.a .pack.b .pack.c .pack.d
1282} -body {
1283    pack .pack.a -lousy bac
1284} -returnCodes error -result {bad option "-lousy": must be -after, -anchor, -before, -expand, -fill, -in, -ipadx, -ipady, -padx, -pady, or -side}
1285test pack-12.31 {command options and errors} -setup {
1286    pack forget .pack.a .pack.b .pack.c .pack.d
1287} -body {
1288    pack .pack.a -padx
1289} -returnCodes error -result {extra option "-padx" (option with no value?)}
1290test pack-12.32 {command options and errors} -setup {
1291    pack forget .pack.a .pack.b .pack.c .pack.d
1292} -body {
1293    pack .pack.a ? 22
1294} -returnCodes error -result {bad option "?": must be -after, -anchor, -before, -expand, -fill, -in, -ipadx, -ipady, -padx, -pady, or -side}
1295test pack-12.33 {command options and errors} -setup {
1296    pack forget .pack.a .pack.b .pack.c .pack.d
1297} -body {
1298    pack .pack.a -in .
1299} -returnCodes error -result {can't pack .pack.a inside .}
1300test pack-12.34 {command options and errors} -setup {
1301    pack forget .pack.a .pack.b .pack.c .pack.d
1302} -body {
1303    frame .pack.a.a
1304    pack .pack.a.a -in .pack.b
1305} -returnCodes error -result {can't pack .pack.a.a inside .pack.b}
1306test pack-12.35 {command options and errors} -setup {
1307    pack forget .pack.a .pack.b .pack.c .pack.d
1308} -body {
1309    pack .pack.a -in .pack.a
1310} -returnCodes error -result {can't pack .pack.a inside itself}
1311test pack-12.36 {command options and errors} -setup {
1312    pack forget .pack.a .pack.b .pack.c .pack.d
1313} -body {
1314    pack .pack.a .pack.b .pack.c .pack.d
1315    pack forget .pack.a .pack.d
1316    pack content .pack
1317} -result {.pack.b .pack.c}
1318test pack-12.37 {command options and errors} -setup {
1319    pack forget .pack.a .pack.b .pack.c .pack.d
1320} -body {
1321    .pack configure -width 300 -height 200
1322    pack propagate .pack 0
1323    pack .pack.a
1324    update
1325    set result [list [winfo reqwidth .pack] [winfo reqheight .pack]]
1326    pack propagate .pack 1
1327    update
1328    lappend result [winfo reqwidth .pack] [winfo reqheight .pack]
1329    return $result
1330} -result {300 200 20 40}
1331test pack-12.38 {command options and errors} -body {
1332    set result [pack propagate .pack.d]
1333    pack propagate .pack.d 0
1334    lappend result [pack propagate .pack.d]
1335    pack propagate .pack.d 1
1336    lappend result [pack propagate .pack.d]
1337    return $result
1338} -result {1 0 1}
1339test pack-12.39 {command options and errors} -setup {
1340    pack forget .pack.a .pack.b .pack.c .pack.d
1341} -body {
1342    pack propagate .dum
1343} -returnCodes error -result {bad window path name ".dum"}
1344test pack-12.40 {command options and errors} -setup {
1345    pack forget .pack.a .pack.b .pack.c .pack.d
1346} -body {
1347    pack propagate .pack foo
1348} -returnCodes error -result {expected boolean value but got "foo"}
1349test pack-12.41 {command options and errors} -setup {
1350    pack forget .pack.a .pack.b .pack.c .pack.d
1351} -body {
1352    pack propagate .pack foo bar
1353} -returnCodes error -result {wrong # args: should be "pack propagate window ?boolean?"}
1354test pack-12.42 {command options and errors} -setup {
1355    pack forget .pack.a .pack.b .pack.c .pack.d
1356} -body {
1357    pack content
1358} -returnCodes error -result {wrong # args: should be "pack option arg ?arg ...?"}
1359test pack-12.43 {command options and errors} -setup {
1360    pack forget .pack.a .pack.b .pack.c .pack.d
1361} -body {
1362    pack content a b
1363} -returnCodes error -result {wrong # args: should be "pack content window"}
1364test pack-12.44 {command options and errors} -setup {
1365    pack forget .pack.a .pack.b .pack.c .pack.d
1366} -body {
1367    pack content .x
1368} -returnCodes error -result {bad window path name ".x"}
1369test pack-12.45 {command options and errors} -setup {
1370    pack forget .pack.a .pack.b .pack.c .pack.d
1371} -body {
1372    pack content .pack.a
1373} -returnCodes ok -result {}
1374test pack-12.46 {command options and errors} -setup {
1375    pack forget .pack.a .pack.b .pack.c .pack.d
1376} -body {
1377    pack lousy .pack
1378} -returnCodes error -result {bad option "lousy": must be configure, content, forget, info, propagate, or slaves}
1379
1380
1381test pack-13.1 {window deletion} -setup {
1382    pack forget .pack.a .pack.b .pack.c .pack.d .pack.right .pack.bottom
1383} -body {
1384    pack .pack.right -side right
1385    pack .pack.bottom -side bottom
1386    pack .pack.a .pack.d .pack.b .pack.c -side top
1387    update
1388    destroy .pack.d
1389    update
1390    set result [list [pack content .pack] [winfo geometry .pack.a] \
1391        [winfo geometry .pack.b] [winfo geometry .pack.c]]
1392} -result {{.pack.right .pack.bottom .pack.a .pack.b .pack.c} 20x40+30+0 50x30+15+40 80x80+0+70}
1393
1394
1395test pack-14.1 {respond to changes in expansion} -setup {
1396    pack forget .pack.a .pack.b .pack.c .pack.d .pack.right .pack.bottom
1397} -body {
1398    pack .pack.right -side right
1399    pack .pack.bottom -side bottom
1400    wm geom .pack {}
1401    pack .pack.a
1402    update
1403    set result [winfo geom .pack.a]
1404    wm geom .pack 400x300
1405    update
1406    lappend result [winfo geom .pack.a]
1407    pack .pack.a -expand true -fill both
1408    update
1409    lappend result [winfo geom .pack.a]
1410} -cleanup {
1411    wm geom .pack {}
1412} -result {20x40+0+0 20x40+90+0 200x150+0+0}
1413
1414
1415test pack-15.1 {managing geometry with -in option} -setup {
1416    pack forget .pack.a .pack.b .pack.c .pack.d
1417    destroy .pack.f
1418} -body {
1419    pack .pack.a -side top
1420    frame .pack.f
1421    lower .pack.f
1422    pack .pack.f -side top
1423    frame .pack.f.f2
1424    lower .pack.f.f2
1425    pack .pack.f.f2 -side top
1426    pack .pack.b -in .pack.f.f2
1427    update
1428    set result [winfo geom .pack.b]
1429    pack forget .pack.a
1430    update
1431    lappend result [winfo geom .pack.b]
1432} -cleanup {
1433    destroy .pack.f
1434} -result {50x30+0+40 50x30+0+0}
1435test pack-15.2 {managing geometry with -in option} -setup {
1436    pack forget .pack.a .pack.b .pack.c .pack.d
1437    destroy .pack.f
1438} -body {
1439    frame .pack.f
1440    lower .pack.f
1441    pack .pack.a -in .pack.f -side top
1442    update
1443    set result [winfo ismapped .pack.a]
1444    place .pack.f -x 30 -y 45
1445    update
1446    lappend result [winfo ismapped .pack.a] [winfo geometry .pack.a]
1447    place forget .pack.f
1448    update
1449    lappend result [winfo ismapped .pack.a]
1450} -cleanup {
1451    destroy .pack.f
1452} -result {0 1 20x40+30+45 0}
1453test pack-15.3 {managing geometry with -in option} -setup {
1454    pack forget .pack.a .pack.b .pack.c .pack.d
1455    destroy .pack.f
1456} -body {
1457    pack .pack.a -side top
1458    frame .pack.f
1459    lower .pack.f
1460    pack .pack.f -side top
1461    frame .pack.f.f2
1462    lower .pack.f.f2
1463    pack .pack.f.f2 -side top
1464    pack .pack.b -in .pack.f.f2
1465    update
1466    set result [winfo ismapped .pack.b]
1467    pack forget .pack.f
1468    update
1469    lappend result [winfo ismapped .pack.b]
1470} -cleanup {
1471    destroy .pack.f
1472} -result {1 0}
1473test pack-15.4 {managing geometry with -in option} -setup {
1474    pack forget .pack.a .pack.b .pack.c .pack.d
1475    destroy .pack.f1 .pack.f2
1476} -body {
1477    foreach i {1 2} {
1478        frame .pack.f$i -width 100 -height 40 -bd 2 -relief raised
1479        lower .pack.f$i
1480        pack propagate .pack.f$i 0
1481        pack .pack.f$i -side top
1482    }
1483    pack .pack.b -in .pack.f1 -side right
1484    update
1485    set result {}
1486    lappend result [winfo geometry .pack.b] [winfo ismapped .pack.b]
1487    pack .pack.b -in .pack.f2 -side bottom
1488    update
1489    lappend result [winfo geometry .pack.b] [winfo ismapped .pack.b]
1490    .pack.f1 configure -width 50 -height 20
1491    update
1492    lappend result [winfo geometry .pack.b] [winfo ismapped .pack.b]
1493    pack forget .pack.b
1494    update
1495    lappend result [winfo geometry .pack.b] [winfo ismapped .pack.b]
1496} -cleanup {
1497    destroy .pack.f1 .pack.f2
1498} -result {50x30+48+5 1 50x30+25+48 1 50x30+25+28 1 50x30+25+28 0}
1499test pack-15.5 {managing geometry with -in option} -setup {
1500    pack forget .pack.a .pack.b .pack.c .pack.d
1501    destroy .pack.f1 .pack.f2
1502} -body {
1503    foreach i {1 2} {
1504        frame .pack.f$i -width 100 -height 20 -bd 2 -relief raised
1505        lower .pack.f$i
1506        pack propagate .pack.f$i 0
1507        pack .pack.f$i -side top
1508    }
1509    pack .pack.b -in .pack.f2 -side top
1510    update
1511    set result {}
1512    lappend result [winfo geometry .pack.b] [winfo ismapped .pack.b]
1513    pack .pack.a -before .pack.b -side top
1514    update
1515    lappend result [winfo geometry .pack.b] [winfo ismapped .pack.b]
1516} -cleanup {
1517    destroy .pack.f1 .pack.f2
1518} -result {50x16+25+22 1 50x16+25+22 0}
1519
1520
1521test pack-16.1 {geometry manager name} -setup {
1522    pack forget .pack.a .pack.b .pack.c .pack.d
1523    set result {}
1524} -body {
1525    lappend result [winfo manager .pack.a]
1526    pack .pack.a
1527    lappend result [winfo manager .pack.a]
1528    pack forget .pack.a
1529    lappend result [winfo manager .pack.a]
1530} -result {{} pack {}}
1531
1532
1533test pack-17.1 {PackLostContentProc procedure} -setup {
1534    pack forget .pack.a .pack.b .pack.c .pack.d
1535} -body {
1536    pack .pack.a
1537    update
1538    place .pack.a -x 40 -y 10
1539    update
1540    list [winfo manager .pack.a] [winfo geometry .pack.a]
1541} -result {place 20x40+40+10}
1542test pack-17.2 {PackLostContentProc procedure} -setup {
1543    pack forget .pack.a .pack.b .pack.c .pack.d
1544} -body {
1545    pack .pack.a
1546    update
1547    place .pack.a -x 40 -y 10
1548    update
1549    winfo manager .pack.a
1550    winfo geometry .pack.a
1551    pack info .pack.a
1552} -returnCodes error -result {window ".pack.a" isn't packed}
1553
1554if {[tk windowingsystem] ne "aqua"} {
1555    proc packUpdate {} {
1556	update
1557    }
1558} else {
1559    proc packUpdate {} {
1560    }
1561}
1562
1563test pack-18.1 {unmap content when container unmapped} -constraints {
1564    tempNotPc failsOnUbuntu failsOnXQuarz
1565} -setup {
1566    eval destroy [winfo child .pack]
1567} -body {
1568
1569    # adjust the position of .pack before test to avoid a screen switch
1570    # that occurs with window managers that have desktops four times as big
1571    # as the screen (screen switch causes scale and other tests to fail).
1572
1573    wm geometry .pack +100+100
1574
1575    # On the PC, when the width/height is configured while the window is
1576    # unmapped, the changes don't take effect until the window is remapped.
1577    # Who knows why?
1578
1579    eval destroy [winfo child .pack]
1580    frame .pack.a -width 100 -height 50 -relief raised -bd 2
1581    pack .pack.a
1582    update idletasks
1583    set result [winfo ismapped .pack.a]
1584    wm iconify .pack
1585    lappend result [winfo ismapped .pack.a]
1586    .pack.a configure -width 200 -height 75
1587    update idletasks
1588    lappend result [winfo width .pack.a ] [winfo height .pack.a] \
1589    [winfo ismapped .pack.a]
1590    wm deiconify .pack
1591    packUpdate
1592    lappend result [winfo ismapped .pack.a]
1593} -result {1 0 200 75 0 1}
1594
1595test pack-18.2 {unmap content when container unmapped} -constraints {failsOnUbuntu failsOnXQuarz} -setup {
1596    eval destroy [winfo child .pack]
1597} -body {
1598
1599    # adjust the position of .pack before test to avoid a screen switch
1600    # that occurs with window managers that have desktops four times as big
1601    # as the screen (screen switch causes scale and other tests to fail).
1602
1603    wm geometry .pack +100+100
1604    frame .pack.a -relief raised -bd 2
1605    frame .pack.b -width 70 -height 30 -relief sunken -bd 2
1606    pack .pack.a
1607    pack .pack.b -in .pack.a
1608    update idletasks
1609    set result [winfo ismapped .pack.b]
1610    wm iconify .pack
1611    lappend result [winfo ismapped .pack.b]
1612    .pack.b configure -width 100 -height 30
1613    update idletasks
1614    lappend result [winfo width .pack.b ] [winfo height .pack.b] \
1615    [winfo ismapped .pack.b]
1616    wm deiconify .pack
1617    packUpdate
1618    lappend result [winfo ismapped .pack.b]
1619} -result {1 0 100 30 0 1}
1620
1621
1622test pack-19.1 {test respect for internalborder} -setup {
1623    catch {eval pack forget [pack content .pack]}
1624    destroy .pack.l .pack.lf
1625} -body {
1626    wm geometry .pack 200x200
1627    frame .pack.l -width 15 -height 10
1628    labelframe .pack.lf -labelwidget .pack.l
1629    pack .pack.lf -fill both -expand 1
1630    frame .pack.lf.f
1631    pack .pack.lf.f -fill both -expand 1
1632    update
1633    set res [list [winfo geometry .pack.lf.f]]
1634    .pack.lf configure -labelanchor e -padx 3 -pady 5
1635    update
1636    lappend res [winfo geometry .pack.lf.f]
1637} -cleanup {
1638    destroy .pack.l .pack.lf
1639} -result {196x188+2+10 177x186+5+7}
1640test pack-19.2 {test support for minreqsize} -setup {
1641    catch {eval pack forget [pack content .pack]}
1642    destroy .pack.l .pack.lf
1643} -body {
1644    wm geometry .pack {}
1645    frame .pack.l -width 150 -height 100
1646    labelframe .pack.lf -labelwidget .pack.l
1647    pack .pack.lf -fill both -expand 1
1648    frame .pack.lf.f -width 20 -height 25
1649    pack .pack.lf.f
1650    update
1651    set res [list [winfo geometry .pack.lf]]
1652    .pack.lf configure -labelanchor ws
1653    update
1654    lappend res [winfo geometry .pack.lf]
1655} -cleanup {
1656    destroy .pack.l .pack.lf
1657} -result {162x127+0+0 172x112+0+0}
1658
1659
1660# cleanup
1661cleanupTests
1662return
1663
1664
1665
1666