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

通讯编程

开发平台:

Visual C++

  1. # This file is a Tcl script to test out Tk's "tk_getOpenFile" and
  2. # "tk_getSaveFile" commands. It is organized in the standard fashion
  3. # for Tcl tests.
  4. #
  5. # Copyright (c) 1996 Sun Microsystems, Inc.
  6. # Copyright (c) 1998-1999 by Scriptics Corporation.
  7. # All rights reserved.
  8. #
  9. # RCS: @(#) $Id: filebox.test,v 1.13 2002/07/14 05:48:46 dgp Exp $
  10. #
  11. package require tcltest 2.1
  12. namespace import -force tcltest::configure
  13. namespace import -force tcltest::testsDirectory
  14. configure -testdir [file join [pwd] [file dirname [info script]]]
  15. configure -loadfile [file join [testsDirectory] constraints.tcl]
  16. tcltest::loadTestedCommands
  17. namespace import -force tcltest::makeFile
  18. namespace import -force tcltest::removeFile
  19. set tk_strictMotif_old $tk_strictMotif
  20. #----------------------------------------------------------------------
  21. #
  22. # Procedures needed by this test file
  23. #
  24. #----------------------------------------------------------------------
  25. proc ToPressButton {parent btn} {
  26.     global isNative
  27.     if {!$isNative} {
  28. after 100 SendButtonPress $parent $btn mouse
  29.     }
  30. }
  31. proc ToEnterFileByKey {parent fileName fileDir} {
  32.     global isNative
  33.     if {!$isNative} {
  34. after 100 EnterFileByKey $parent [list $fileName] [list $fileDir]
  35.     }
  36. }
  37. proc PressButton {btn} {
  38.     event generate $btn <Enter>
  39.     event generate $btn <1> -x 5 -y 5
  40.     event generate $btn <ButtonRelease-1> -x 5 -y 5
  41. }
  42. proc EnterFileByKey {parent fileName fileDir} {
  43.     global tk_strictMotif
  44.     if {$parent == "."} {
  45. set w .__tk_filedialog
  46.     } else {
  47. set w $parent.__tk_filedialog
  48.     }
  49.     upvar ::tk::dialog::file::__tk_filedialog data
  50.     if {$tk_strictMotif} {
  51. $data(sEnt) delete 0 end
  52. $data(sEnt) insert 0 [file join $fileDir $fileName]
  53.     } else {
  54. $data(ent) delete 0 end
  55. $data(ent) insert 0 $fileName
  56.     }
  57.     update
  58.     SendButtonPress $parent ok mouse
  59. }
  60. proc SendButtonPress {parent btn type} {
  61.     global tk_strictMotif
  62.     if {$parent == "."} {
  63. set w .__tk_filedialog
  64.     } else {
  65. set w $parent.__tk_filedialog
  66.     }
  67.     upvar ::tk::dialog::file::__tk_filedialog data
  68.     set button $data($btnBtn)
  69.     if ![winfo ismapped $button] {
  70. update
  71.     }
  72.     if {$type == "mouse"} {
  73. PressButton $button
  74.     } else {
  75. event generate $w <Enter>
  76. focus $w
  77. event generate $button <Enter>
  78. event generate $w <KeyPress> -keysym Return
  79.     }
  80. }
  81. #----------------------------------------------------------------------
  82. #
  83. # The test suite proper
  84. #
  85. #----------------------------------------------------------------------
  86. if {$tcl_platform(platform) == "unix"} {
  87.     set modes "0 1"
  88. } else {
  89.     set modes 1
  90. }
  91. set unknownOptionsMsg(tk_getOpenFile) {1 {bad option "-foo": must be -defaultextension, -filetypes, -initialdir, -initialfile, -multiple, -parent, or -title}}
  92. set unknownOptionsMsg(tk_getSaveFile) {1 {bad option "-foo": must be -defaultextension, -filetypes, -initialdir, -initialfile, -parent, or -title}}
  93. set tmpFile "filebox.tmp"
  94. makeFile {
  95.     # this file can be empty!
  96. } $tmpFile
  97. array set filters {
  98.     1 {}
  99.     2 {
  100. {"Text files" {.txt .doc} }
  101. {"Text files" {} TEXT}
  102. {"Tcl Scripts" {.tcl} TEXT}
  103. {"C Source Files" {.c .h} }
  104. {"All Source Files" {.tcl .c .h} }
  105. {"Image Files" {.gif} }
  106. {"Image Files" {.jpeg .jpg} }
  107. {"Image Files" "" {GIFF JPEG}}
  108. {"All files" *}
  109.     }
  110.     3 {
  111. {"Text files" {.txt .doc} TEXT}
  112. {"Foo" {""} TEXT}
  113.     }
  114. }
  115. foreach mode $modes {
  116.     #
  117.     # Test both the motif version and the "tk" version of the file dialog
  118.     # box on Unix.
  119.     #
  120.     # Note that this can use the same test number twice!
  121.     #
  122.     set addedExtensions {}
  123.     if {$tcl_platform(platform) == "unix"} {
  124. set tk_strictMotif $mode
  125. # Extension adding is only done when using the non-motif file
  126. # box with an extension-less filename
  127. if {!$mode} {
  128.     set addedExtensions {NONE {} .txt .txt}
  129. }
  130.     }
  131.     test filebox-1.1 "tk_getOpenFile command" {
  132. list [catch {tk_getOpenFile -foo} msg] $msg
  133.     } $unknownOptionsMsg(tk_getOpenFile)
  134.     catch {tk_getOpenFile -foo 1} msg
  135.     regsub -all ,      $msg "" options
  136.     regsub "-foo" $options "" options
  137.     
  138.     foreach option $options {
  139.         if {[string index $option 0] == "-"} {
  140.      test filebox-1.2 "tk_getOpenFile command" {
  141.          list [catch {tk_getOpenFile $option} msg] $msg
  142.      } [list 1 "value for "$option" missing"]
  143.         }
  144.     }
  145.     
  146.     test filebox-1.3 "tk_getOpenFile command" {
  147.         list [catch {tk_getOpenFile -foo bar} msg] $msg
  148.     } $unknownOptionsMsg(tk_getOpenFile)
  149.     
  150.     test filebox-1.4 "tk_getOpenFile command" {
  151.         list [catch {tk_getOpenFile -initialdir} msg] $msg
  152.     } {1 {value for "-initialdir" missing}}
  153.     
  154.     test filebox-1.5 "tk_getOpenFile command" {
  155.         list [catch {tk_getOpenFile -parent foo.bar} msg] $msg
  156.     } {1 {bad window path name "foo.bar"}}
  157.     
  158.     test filebox-1.6 "tk_getOpenFile command" {
  159.         list [catch {tk_getOpenFile -filetypes {Foo}} msg] $msg
  160.     } {1 {bad file type "Foo", should be "typeName {extension ?extensions ...?} ?{macType ?macTypes ...?}?"}}
  161.     
  162.     if {[info commands tk::MotifFDialog] == "" && [info commands ::tk::dialog::file::] == ""} {
  163.         set isNative 1
  164.     } else {
  165.         set isNative 0
  166.     }
  167.     
  168.     set parent .
  169.     
  170.     set verylongstring longstring:
  171.     set verylongstring $verylongstring$verylongstring
  172.     set verylongstring $verylongstring$verylongstring
  173.     set verylongstring $verylongstring$verylongstring
  174.     set verylongstring $verylongstring$verylongstring
  175.     # set verylongstring $verylongstring$verylongstring
  176.     # set verylongstring $verylongstring$verylongstring
  177.     # set verylongstring $verylongstring$verylongstring
  178.     # set verylongstring $verylongstring$verylongstring
  179.     # set verylongstring $verylongstring$verylongstring
  180.     set color #404040
  181.     test filebox-2.1 "tk_getOpenFile command" {nonUnixUserInteraction} {
  182.         ToPressButton $parent cancel
  183.         tk_getOpenFile -title "Press Cancel ($verylongstring)" -parent $parent
  184.     } ""
  185.     
  186.     set fileName $tmpFile
  187.     set fileDir [pwd]
  188.     set pathName [file join $fileDir $fileName]
  189.     
  190.     test filebox-2.2 "tk_getOpenFile command" {nonUnixUserInteraction} {
  191.         ToPressButton $parent ok
  192.         set choice [tk_getOpenFile -title "Press Ok" 
  193.          -parent $parent -initialfile $fileName -initialdir $fileDir]
  194.     } $pathName
  195.     
  196.     test filebox-2.3 "tk_getOpenFile command" {nonUnixUserInteraction} {
  197.         ToEnterFileByKey $parent $fileName $fileDir
  198.         set choice [tk_getOpenFile -title "Enter "$fileName" and press Ok" 
  199.          -parent $parent -initialdir $fileDir]
  200.     } $pathName
  201.     
  202.     test filebox-2.4 "tk_getOpenFile command" {nonUnixUserInteraction} {
  203.         ToPressButton $parent ok
  204.         set choice [tk_getOpenFile -title "Enter "$fileName" and press Ok" 
  205.          -parent $parent -initialdir . 
  206.          -initialfile $fileName]
  207.     } $pathName
  208.     
  209.     test filebox-2.5 "tk_getOpenFile command" {nonUnixUserInteraction} {
  210.         ToPressButton $parent ok
  211.         set choice [tk_getOpenFile -title "Enter "$fileName" and press Ok" 
  212.          -parent $parent -initialdir /badpath 
  213.          -initialfile $fileName]
  214.     } $pathName
  215.     
  216.     test filebox-2.6 "tk_getOpenFile command" {nonUnixUserInteraction} {
  217.         toplevel .t1; toplevel .t2
  218.         wm geometry .t1 +0+0
  219.         wm geometry .t2 +0+0
  220.         ToPressButton .t1 ok
  221.         set choice {}
  222.         lappend choice [tk_getOpenFile 
  223.          -title "Enter "$fileName" and press Ok" 
  224.          -parent .t1 -initialdir $fileDir 
  225.          -initialfile $fileName]
  226.         ToPressButton .t2 ok
  227.         lappend choice [tk_getOpenFile 
  228.          -title "Enter "$fileName" and press Ok" 
  229.          -parent .t2 -initialdir $fileDir 
  230.          -initialfile $fileName]
  231.         ToPressButton .t1 ok
  232.         lappend choice [tk_getOpenFile 
  233.          -title "Enter "$fileName" and press Ok" 
  234.          -parent .t1 -initialdir $fileDir 
  235.          -initialfile $fileName]
  236.         destroy .t1
  237.         destroy .t2
  238.         set choice
  239.     } [list $pathName $pathName $pathName]
  240.     foreach x [lsort -integer [array names filters]] {
  241.         test filebox-3.$x "tk_getOpenFile command" {nonUnixUserInteraction} {
  242.      ToPressButton $parent ok
  243.      set choice [tk_getOpenFile -title "Press Ok" -filetypes $filters($x)
  244.      -parent $parent -initialfile $fileName -initialdir $fileDir]
  245.         } $pathName
  246.     }
  247.     test filebox-4.1 "tk_getSaveFile command" {
  248. list [catch {tk_getSaveFile -foo} msg] $msg
  249.     } $unknownOptionsMsg(tk_getSaveFile)
  250.     catch {tk_getSaveFile -foo 1} msg
  251.     regsub -all ,      $msg "" options
  252.     regsub "-foo" $options "" options
  253.     foreach option $options {
  254. if {[string index $option 0] == "-"} {
  255.     test filebox-4.2 "tk_getSaveFile command" {
  256. list [catch {tk_getSaveFile $option} msg] $msg
  257.     } [list 1 "value for "$option" missing"]
  258. }
  259.     }
  260.     test filebox-4.3 "tk_getSaveFile command" {
  261. list [catch {tk_getSaveFile -foo bar} msg] $msg
  262.     } $unknownOptionsMsg(tk_getSaveFile)
  263.     test filebox-4.4 "tk_getSaveFile command" {
  264. list [catch {tk_getSaveFile -initialdir} msg] $msg
  265.     } {1 {value for "-initialdir" missing}}
  266.     test filebox-4.5 "tk_getSaveFile command" {
  267. list [catch {tk_getSaveFile -parent foo.bar} msg] $msg
  268.     } {1 {bad window path name "foo.bar"}}
  269.     test filebox-4.6 "tk_getSaveFile command" {
  270. list [catch {tk_getSaveFile -filetypes {Foo}} msg] $msg
  271.     } {1 {bad file type "Foo", should be "typeName {extension ?extensions ...?} ?{macType ?macTypes ...?}?"}}
  272.     if {[info commands tk::MotifFDialog] == "" && [info commands ::tk::dialog::file::] == ""} {
  273. set isNative 1
  274.     } else {
  275. set isNative 0
  276.     }
  277.     set parent .
  278.     set verylongstring longstring:
  279.     set verylongstring $verylongstring$verylongstring
  280.     set verylongstring $verylongstring$verylongstring
  281.     set verylongstring $verylongstring$verylongstring
  282.     set verylongstring $verylongstring$verylongstring
  283.     # set verylongstring $verylongstring$verylongstring
  284.     # set verylongstring $verylongstring$verylongstring
  285.     # set verylongstring $verylongstring$verylongstring
  286.     # set verylongstring $verylongstring$verylongstring
  287.     # set verylongstring $verylongstring$verylongstring
  288.     set color #404040
  289.     test filebox-5.1 "tk_getSaveFile command" {nonUnixUserInteraction} {
  290. ToPressButton $parent cancel
  291. tk_getSaveFile -title "Press Cancel ($verylongstring)" -parent $parent
  292.     } ""
  293.     set fileName "12x 455"
  294.     set fileDir [pwd]
  295.     set pathName [file join [pwd] $fileName]
  296.     test filebox-5.2 "tk_getSaveFile command" {nonUnixUserInteraction} {
  297. ToPressButton $parent ok
  298. set choice [tk_getSaveFile -title "Press Ok" 
  299. -parent $parent -initialfile $fileName -initialdir $fileDir]
  300.     } $pathName
  301.     test filebox-5.3 "tk_getSaveFile command" {nonUnixUserInteraction} {
  302. ToEnterFileByKey $parent $fileName $fileDir
  303. set choice [tk_getSaveFile -title "Enter "$fileName" and press Ok" 
  304. -parent $parent -initialdir $fileDir]
  305.     } $pathName
  306.     test filebox-5.4 "tk_getSaveFile command" {nonUnixUserInteraction} {
  307. ToPressButton $parent ok
  308. set choice [tk_getSaveFile -title "Enter "$fileName" and press Ok" 
  309. -parent $parent -initialdir . 
  310. -initialfile $fileName]
  311.     } $pathName
  312.     test filebox-5.5 "tk_getSaveFile command" {nonUnixUserInteraction} {
  313. ToPressButton $parent ok
  314. set choice [tk_getSaveFile -title "Enter "$fileName" and press Ok" 
  315. -parent $parent -initialdir /badpath 
  316. -initialfile $fileName]
  317.     } $pathName
  318.     test filebox-5.6 "tk_getSaveFile command" {nonUnixUserInteraction} {
  319. toplevel .t1; toplevel .t2
  320. wm geometry .t1 +0+0
  321. wm geometry .t2 +0+0
  322. ToPressButton .t1 ok
  323. set choice {}
  324. lappend choice [tk_getSaveFile 
  325. -title "Enter "$fileName" and press Ok" 
  326. -parent .t1 -initialdir $fileDir 
  327. -initialfile $fileName]
  328. ToPressButton .t2 ok
  329. lappend choice [tk_getSaveFile 
  330. -title "Enter "$fileName" and press Ok" 
  331. -parent .t2 -initialdir $fileDir 
  332. -initialfile $fileName]
  333. ToPressButton .t1 ok
  334. lappend choice [tk_getSaveFile 
  335. -title "Enter "$fileName" and press Ok" 
  336. -parent .t1 -initialdir $fileDir 
  337. -initialfile $fileName]
  338. destroy .t1
  339. destroy .t2
  340. set choice
  341.     } [list $pathName $pathName $pathName]
  342.     foreach x [lsort -integer [array names filters]] {
  343. test filebox-6.$x "tk_getSaveFile command" {nonUnixUserInteraction} {
  344.     ToPressButton $parent ok
  345.     set choice [tk_getSaveFile -title "Press Ok" -filetypes $filters($x)
  346.     -parent $parent -initialfile $fileName -initialdir $fileDir]
  347. } $pathName[lindex $addedExtensions $x]
  348.     }
  349.     # The rest of the tests need to be executed on Unix only.
  350.     # The test whether the dialog box widgets were implemented correctly.
  351.     # These tests are not
  352.     # needed on the other platforms because they use native file dialogs.
  353. }
  354. set tk_strictMotif $tk_strictMotif_old
  355. # cleanup
  356. ::tcltest::cleanupTests
  357. return