filebox.test
上传用户:rrhhcc
上传日期:2015-12-11
资源大小:54129k
文件大小:13k
- # This file is a Tcl script to test out Tk's "tk_getOpenFile" and
- # "tk_getSaveFile" commands. It is organized in the standard fashion
- # for Tcl tests.
- #
- # Copyright (c) 1996 Sun Microsystems, Inc.
- # Copyright (c) 1998-1999 by Scriptics Corporation.
- # All rights reserved.
- #
- # RCS: @(#) $Id: filebox.test,v 1.13 2002/07/14 05:48:46 dgp Exp $
- #
- package require tcltest 2.1
- namespace import -force tcltest::configure
- namespace import -force tcltest::testsDirectory
- configure -testdir [file join [pwd] [file dirname [info script]]]
- configure -loadfile [file join [testsDirectory] constraints.tcl]
- tcltest::loadTestedCommands
- namespace import -force tcltest::makeFile
- namespace import -force tcltest::removeFile
- set tk_strictMotif_old $tk_strictMotif
- #----------------------------------------------------------------------
- #
- # Procedures needed by this test file
- #
- #----------------------------------------------------------------------
- proc ToPressButton {parent btn} {
- global isNative
- if {!$isNative} {
- after 100 SendButtonPress $parent $btn mouse
- }
- }
- proc ToEnterFileByKey {parent fileName fileDir} {
- global isNative
- if {!$isNative} {
- after 100 EnterFileByKey $parent [list $fileName] [list $fileDir]
- }
- }
- proc PressButton {btn} {
- event generate $btn <Enter>
- event generate $btn <1> -x 5 -y 5
- event generate $btn <ButtonRelease-1> -x 5 -y 5
- }
- proc EnterFileByKey {parent fileName fileDir} {
- global tk_strictMotif
- if {$parent == "."} {
- set w .__tk_filedialog
- } else {
- set w $parent.__tk_filedialog
- }
- upvar ::tk::dialog::file::__tk_filedialog data
- if {$tk_strictMotif} {
- $data(sEnt) delete 0 end
- $data(sEnt) insert 0 [file join $fileDir $fileName]
- } else {
- $data(ent) delete 0 end
- $data(ent) insert 0 $fileName
- }
- update
- SendButtonPress $parent ok mouse
- }
- proc SendButtonPress {parent btn type} {
- global tk_strictMotif
- if {$parent == "."} {
- set w .__tk_filedialog
- } else {
- set w $parent.__tk_filedialog
- }
- upvar ::tk::dialog::file::__tk_filedialog data
- set button $data($btnBtn)
- if ![winfo ismapped $button] {
- update
- }
- if {$type == "mouse"} {
- PressButton $button
- } else {
- event generate $w <Enter>
- focus $w
- event generate $button <Enter>
- event generate $w <KeyPress> -keysym Return
- }
- }
- #----------------------------------------------------------------------
- #
- # The test suite proper
- #
- #----------------------------------------------------------------------
- if {$tcl_platform(platform) == "unix"} {
- set modes "0 1"
- } else {
- set modes 1
- }
- set unknownOptionsMsg(tk_getOpenFile) {1 {bad option "-foo": must be -defaultextension, -filetypes, -initialdir, -initialfile, -multiple, -parent, or -title}}
- set unknownOptionsMsg(tk_getSaveFile) {1 {bad option "-foo": must be -defaultextension, -filetypes, -initialdir, -initialfile, -parent, or -title}}
- set tmpFile "filebox.tmp"
- makeFile {
- # this file can be empty!
- } $tmpFile
- array set filters {
- 1 {}
- 2 {
- {"Text files" {.txt .doc} }
- {"Text files" {} TEXT}
- {"Tcl Scripts" {.tcl} TEXT}
- {"C Source Files" {.c .h} }
- {"All Source Files" {.tcl .c .h} }
- {"Image Files" {.gif} }
- {"Image Files" {.jpeg .jpg} }
- {"Image Files" "" {GIFF JPEG}}
- {"All files" *}
- }
- 3 {
- {"Text files" {.txt .doc} TEXT}
- {"Foo" {""} TEXT}
- }
- }
- foreach mode $modes {
- #
- # Test both the motif version and the "tk" version of the file dialog
- # box on Unix.
- #
- # Note that this can use the same test number twice!
- #
- set addedExtensions {}
- if {$tcl_platform(platform) == "unix"} {
- set tk_strictMotif $mode
- # Extension adding is only done when using the non-motif file
- # box with an extension-less filename
- if {!$mode} {
- set addedExtensions {NONE {} .txt .txt}
- }
- }
- test filebox-1.1 "tk_getOpenFile command" {
- list [catch {tk_getOpenFile -foo} msg] $msg
- } $unknownOptionsMsg(tk_getOpenFile)
- catch {tk_getOpenFile -foo 1} msg
- regsub -all , $msg "" options
- regsub "-foo" $options "" options
-
- foreach option $options {
- if {[string index $option 0] == "-"} {
- test filebox-1.2 "tk_getOpenFile command" {
- list [catch {tk_getOpenFile $option} msg] $msg
- } [list 1 "value for "$option" missing"]
- }
- }
-
- test filebox-1.3 "tk_getOpenFile command" {
- list [catch {tk_getOpenFile -foo bar} msg] $msg
- } $unknownOptionsMsg(tk_getOpenFile)
-
- test filebox-1.4 "tk_getOpenFile command" {
- list [catch {tk_getOpenFile -initialdir} msg] $msg
- } {1 {value for "-initialdir" missing}}
-
- test filebox-1.5 "tk_getOpenFile command" {
- list [catch {tk_getOpenFile -parent foo.bar} msg] $msg
- } {1 {bad window path name "foo.bar"}}
-
- test filebox-1.6 "tk_getOpenFile command" {
- list [catch {tk_getOpenFile -filetypes {Foo}} msg] $msg
- } {1 {bad file type "Foo", should be "typeName {extension ?extensions ...?} ?{macType ?macTypes ...?}?"}}
-
- if {[info commands tk::MotifFDialog] == "" && [info commands ::tk::dialog::file::] == ""} {
- set isNative 1
- } else {
- set isNative 0
- }
-
- set parent .
-
- set verylongstring longstring:
- set verylongstring $verylongstring$verylongstring
- set verylongstring $verylongstring$verylongstring
- set verylongstring $verylongstring$verylongstring
- set verylongstring $verylongstring$verylongstring
- # set verylongstring $verylongstring$verylongstring
- # set verylongstring $verylongstring$verylongstring
- # set verylongstring $verylongstring$verylongstring
- # set verylongstring $verylongstring$verylongstring
- # set verylongstring $verylongstring$verylongstring
- set color #404040
- test filebox-2.1 "tk_getOpenFile command" {nonUnixUserInteraction} {
- ToPressButton $parent cancel
- tk_getOpenFile -title "Press Cancel ($verylongstring)" -parent $parent
- } ""
-
- set fileName $tmpFile
- set fileDir [pwd]
- set pathName [file join $fileDir $fileName]
-
- test filebox-2.2 "tk_getOpenFile command" {nonUnixUserInteraction} {
- ToPressButton $parent ok
- set choice [tk_getOpenFile -title "Press Ok"
- -parent $parent -initialfile $fileName -initialdir $fileDir]
- } $pathName
-
- test filebox-2.3 "tk_getOpenFile command" {nonUnixUserInteraction} {
- ToEnterFileByKey $parent $fileName $fileDir
- set choice [tk_getOpenFile -title "Enter "$fileName" and press Ok"
- -parent $parent -initialdir $fileDir]
- } $pathName
-
- test filebox-2.4 "tk_getOpenFile command" {nonUnixUserInteraction} {
- ToPressButton $parent ok
- set choice [tk_getOpenFile -title "Enter "$fileName" and press Ok"
- -parent $parent -initialdir .
- -initialfile $fileName]
- } $pathName
-
- test filebox-2.5 "tk_getOpenFile command" {nonUnixUserInteraction} {
- ToPressButton $parent ok
- set choice [tk_getOpenFile -title "Enter "$fileName" and press Ok"
- -parent $parent -initialdir /badpath
- -initialfile $fileName]
- } $pathName
-
- test filebox-2.6 "tk_getOpenFile command" {nonUnixUserInteraction} {
- toplevel .t1; toplevel .t2
- wm geometry .t1 +0+0
- wm geometry .t2 +0+0
- ToPressButton .t1 ok
- set choice {}
- lappend choice [tk_getOpenFile
- -title "Enter "$fileName" and press Ok"
- -parent .t1 -initialdir $fileDir
- -initialfile $fileName]
- ToPressButton .t2 ok
- lappend choice [tk_getOpenFile
- -title "Enter "$fileName" and press Ok"
- -parent .t2 -initialdir $fileDir
- -initialfile $fileName]
- ToPressButton .t1 ok
- lappend choice [tk_getOpenFile
- -title "Enter "$fileName" and press Ok"
- -parent .t1 -initialdir $fileDir
- -initialfile $fileName]
- destroy .t1
- destroy .t2
- set choice
- } [list $pathName $pathName $pathName]
- foreach x [lsort -integer [array names filters]] {
- test filebox-3.$x "tk_getOpenFile command" {nonUnixUserInteraction} {
- ToPressButton $parent ok
- set choice [tk_getOpenFile -title "Press Ok" -filetypes $filters($x)
- -parent $parent -initialfile $fileName -initialdir $fileDir]
- } $pathName
- }
- test filebox-4.1 "tk_getSaveFile command" {
- list [catch {tk_getSaveFile -foo} msg] $msg
- } $unknownOptionsMsg(tk_getSaveFile)
- catch {tk_getSaveFile -foo 1} msg
- regsub -all , $msg "" options
- regsub "-foo" $options "" options
- foreach option $options {
- if {[string index $option 0] == "-"} {
- test filebox-4.2 "tk_getSaveFile command" {
- list [catch {tk_getSaveFile $option} msg] $msg
- } [list 1 "value for "$option" missing"]
- }
- }
- test filebox-4.3 "tk_getSaveFile command" {
- list [catch {tk_getSaveFile -foo bar} msg] $msg
- } $unknownOptionsMsg(tk_getSaveFile)
- test filebox-4.4 "tk_getSaveFile command" {
- list [catch {tk_getSaveFile -initialdir} msg] $msg
- } {1 {value for "-initialdir" missing}}
- test filebox-4.5 "tk_getSaveFile command" {
- list [catch {tk_getSaveFile -parent foo.bar} msg] $msg
- } {1 {bad window path name "foo.bar"}}
- test filebox-4.6 "tk_getSaveFile command" {
- list [catch {tk_getSaveFile -filetypes {Foo}} msg] $msg
- } {1 {bad file type "Foo", should be "typeName {extension ?extensions ...?} ?{macType ?macTypes ...?}?"}}
- if {[info commands tk::MotifFDialog] == "" && [info commands ::tk::dialog::file::] == ""} {
- set isNative 1
- } else {
- set isNative 0
- }
- set parent .
- set verylongstring longstring:
- set verylongstring $verylongstring$verylongstring
- set verylongstring $verylongstring$verylongstring
- set verylongstring $verylongstring$verylongstring
- set verylongstring $verylongstring$verylongstring
- # set verylongstring $verylongstring$verylongstring
- # set verylongstring $verylongstring$verylongstring
- # set verylongstring $verylongstring$verylongstring
- # set verylongstring $verylongstring$verylongstring
- # set verylongstring $verylongstring$verylongstring
- set color #404040
- test filebox-5.1 "tk_getSaveFile command" {nonUnixUserInteraction} {
- ToPressButton $parent cancel
- tk_getSaveFile -title "Press Cancel ($verylongstring)" -parent $parent
- } ""
- set fileName "12x 455"
- set fileDir [pwd]
- set pathName [file join [pwd] $fileName]
- test filebox-5.2 "tk_getSaveFile command" {nonUnixUserInteraction} {
- ToPressButton $parent ok
- set choice [tk_getSaveFile -title "Press Ok"
- -parent $parent -initialfile $fileName -initialdir $fileDir]
- } $pathName
- test filebox-5.3 "tk_getSaveFile command" {nonUnixUserInteraction} {
- ToEnterFileByKey $parent $fileName $fileDir
- set choice [tk_getSaveFile -title "Enter "$fileName" and press Ok"
- -parent $parent -initialdir $fileDir]
- } $pathName
- test filebox-5.4 "tk_getSaveFile command" {nonUnixUserInteraction} {
- ToPressButton $parent ok
- set choice [tk_getSaveFile -title "Enter "$fileName" and press Ok"
- -parent $parent -initialdir .
- -initialfile $fileName]
- } $pathName
- test filebox-5.5 "tk_getSaveFile command" {nonUnixUserInteraction} {
- ToPressButton $parent ok
- set choice [tk_getSaveFile -title "Enter "$fileName" and press Ok"
- -parent $parent -initialdir /badpath
- -initialfile $fileName]
- } $pathName
- test filebox-5.6 "tk_getSaveFile command" {nonUnixUserInteraction} {
- toplevel .t1; toplevel .t2
- wm geometry .t1 +0+0
- wm geometry .t2 +0+0
- ToPressButton .t1 ok
- set choice {}
- lappend choice [tk_getSaveFile
- -title "Enter "$fileName" and press Ok"
- -parent .t1 -initialdir $fileDir
- -initialfile $fileName]
- ToPressButton .t2 ok
- lappend choice [tk_getSaveFile
- -title "Enter "$fileName" and press Ok"
- -parent .t2 -initialdir $fileDir
- -initialfile $fileName]
- ToPressButton .t1 ok
- lappend choice [tk_getSaveFile
- -title "Enter "$fileName" and press Ok"
- -parent .t1 -initialdir $fileDir
- -initialfile $fileName]
- destroy .t1
- destroy .t2
- set choice
- } [list $pathName $pathName $pathName]
- foreach x [lsort -integer [array names filters]] {
- test filebox-6.$x "tk_getSaveFile command" {nonUnixUserInteraction} {
- ToPressButton $parent ok
- set choice [tk_getSaveFile -title "Press Ok" -filetypes $filters($x)
- -parent $parent -initialfile $fileName -initialdir $fileDir]
- } $pathName[lindex $addedExtensions $x]
- }
- # The rest of the tests need to be executed on Unix only.
- # The test whether the dialog box widgets were implemented correctly.
- # These tests are not
- # needed on the other platforms because they use native file dialogs.
- }
- set tk_strictMotif $tk_strictMotif_old
- # cleanup
- ::tcltest::cleanupTests
- return