1# xmfbox.test -- 
2#
3#	This file is a Tcl script to test the file dialog that's used
4#	when the tk_strictMotif flag is set. Because the file dialog
5#	runs in a modal loop, the only way to test it sufficiently is
6#	to call the internal Tcl procedures in xmfbox.tcl directly.
7#
8# Copyright (c) 1997 Sun Microsystems, Inc.
9# Copyright (c) 1998-1999 by Scriptics Corporation.
10# Contributions from Don Porter, NIST, 2002.  (not subject to US copyright)
11# All rights reserved.
12#
13# RCS: @(#) $Id: xmfbox.test,v 1.7 2002/07/13 20:28:36 dgp Exp $
14
15package require tcltest 2.1
16namespace import -force tcltest::configure
17namespace import -force tcltest::testsDirectory
18configure -testdir [file join [pwd] [file dirname [info script]]]
19configure -loadfile [file join [testsDirectory] constraints.tcl]
20tcltest::loadTestedCommands
21
22set testPWD [pwd]
23catch {unset foo}
24
25catch {unset data foo}
26
27proc cleanup {} {
28    global testPWD
29
30    set err0 [catch {
31	cd $testPWD
32    } msg0]
33
34    set err1 [catch {
35	if [file exists ./~nosuchuser1] {
36	    file delete ./~nosuchuser1
37	}
38    } msg1]
39
40    set err2 [catch {
41	if [file exists ./~nosuchuser2] {
42	    file delete ./~nosuchuser2
43	}
44    } msg2]
45
46    set err3 [catch {
47	if [file exists ./~nosuchuser3] {
48	    file delete ./~nosuchuser3
49	}
50    } msg3]
51
52    set err4 [catch {
53	if [file exists ./~nosuchuser4] {
54	    file delete ./~nosuchuser4
55	}
56    } msg4]
57
58    if {$err0 || $err1 || $err2 || $err3 || $err4} {
59	error [list $msg0 $msg1 $msg2 $msg3 $msg4] 
60    }
61    catch {unset foo}
62    catch {destroy .foo}
63}
64
65test xmfbox-1.1 {tk::MotifFDialog_Create, -parent switch} {unixOnly} {
66    catch {unset foo}
67    set x [tk::MotifFDialog_Create foo open {-parent .}]
68    catch {destroy $x}
69    set x
70} .foo
71
72test xmfbox-1.2 {tk::MotifFDialog_Create, -parent switch} {unixOnly} {
73    catch {unset foo}
74    toplevel .bar
75    wm geometry .bar +0+0
76    set x [tk::MotifFDialog_Create foo open {-parent .bar}]
77    catch {destroy $x}
78    catch {destroy .bar}
79    set x
80} .bar.foo
81
82test xmfbox-2.1 {tk::MotifFDialog_InterpFilter, ~ in dir names} {unixOnly} {
83    cleanup
84    file mkdir ./~nosuchuser1
85    set x [tk::MotifFDialog_Create foo open {}]
86    $::tk::dialog::file::foo(fEnt) delete 0 end
87    $::tk::dialog::file::foo(fEnt) insert 0 [pwd]/~nosuchuser1
88    set kk [tk::MotifFDialog_InterpFilter $x]
89} [list $testPWD/~nosuchuser1 *]
90
91test xmfbox-2.2 {tk::MotifFDialog_InterpFilter, ~ in file names} {unixOnly} {
92    cleanup
93    close [open ./~nosuchuser1 {CREAT TRUNC WRONLY}]
94    set x [tk::MotifFDialog_Create foo open {}]
95    $::tk::dialog::file::foo(fEnt) delete 0 end
96    $::tk::dialog::file::foo(fEnt) insert 0 [pwd]/~nosuchuser1
97    set kk [tk::MotifFDialog_InterpFilter $x]
98} [list $testPWD ./~nosuchuser1]
99
100test xmfbox-2.3 {tk::MotifFDialog_Update, ~ in file names} {unixOnly} {
101    cleanup
102    close [open ./~nosuchuser1 {CREAT TRUNC WRONLY}]
103    set x [tk::MotifFDialog_Create foo open {}]
104    $::tk::dialog::file::foo(fEnt) delete 0 end
105    $::tk::dialog::file::foo(fEnt) insert 0 [pwd]/~nosuchuser1
106    tk::MotifFDialog_InterpFilter $x
107    tk::MotifFDialog_Update $x
108    $::tk::dialog::file::foo(fList) get end
109} ~nosuchuser1
110
111test xmfbox-2.4 {tk::MotifFDialog_LoadFile, ~ in file names} {unixOnly} {
112    cleanup
113    close [open ./~nosuchuser1 {CREAT TRUNC WRONLY}]
114    set x [tk::MotifFDialog_Create foo open {}]
115    set i [lsearch [$::tk::dialog::file::foo(fList) get 0 end] ~nosuchuser1]
116    expr {$i >= 0}
117} 1
118
119test xmfbox-2.5 {tk::MotifFDialog_BrowseFList, ~ in file names} {unixOnly} {
120    cleanup
121    close [open ./~nosuchuser1 {CREAT TRUNC WRONLY}]
122    set x [tk::MotifFDialog_Create foo open {}]
123    set i [lsearch [$::tk::dialog::file::foo(fList) get 0 end] ~nosuchuser1]
124    $::tk::dialog::file::foo(fList) selection clear 0 end
125    $::tk::dialog::file::foo(fList) selection set $i
126    tk::MotifFDialog_BrowseFList $x
127    $::tk::dialog::file::foo(sEnt) get
128} $testPWD/~nosuchuser1
129
130test xmfbox-2.6 {tk::MotifFDialog_ActivateFList, ~ in file names} {unixOnly} {
131    cleanup
132    close [open ./~nosuchuser1 {CREAT TRUNC WRONLY}]
133    set x [tk::MotifFDialog_Create foo open {}]
134    set i [lsearch [$::tk::dialog::file::foo(fList) get 0 end] ~nosuchuser1]
135    $::tk::dialog::file::foo(fList) selection clear 0 end
136    $::tk::dialog::file::foo(fList) selection set $i
137    tk::MotifFDialog_BrowseFList $x
138    tk::MotifFDialog_ActivateFList $x
139    list $::tk::dialog::file::foo(selectPath) \
140	    $::tk::dialog::file::foo(selectFile) $tk::Priv(selectFilePath)
141} [list $testPWD ~nosuchuser1 $testPWD/~nosuchuser1]
142
143# cleanup
144cleanup
145::tcltest::cleanupTests
146return
147
148
149
150
151
152
153
154
155
156
157
158
159