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

通讯编程

开发平台:

Visual C++

  1. # This file is a Tcl script to test out Tk's "tk_chooseDir" and
  2. # It is organized in the standard fashion for Tcl tests.
  3. #
  4. # Copyright (c) 1996 Sun Microsystems, Inc.
  5. # Copyright (c) 1998-1999 by Scriptics Corporation.
  6. # All rights reserved.
  7. #
  8. # RCS: @(#) $Id: choosedir.test,v 1.10 2002/07/14 05:48:46 dgp Exp $
  9. #
  10. package require tcltest 2.1
  11. namespace import -force tcltest::configure
  12. namespace import -force tcltest::testsDirectory
  13. configure -testdir [file join [pwd] [file dirname [info script]]]
  14. configure -loadfile [file join [testsDirectory] constraints.tcl]
  15. tcltest::loadTestedCommands
  16. namespace import -force tcltest::makeDirectory
  17. #----------------------------------------------------------------------
  18. #
  19. # Procedures needed by this test file
  20. #
  21. #----------------------------------------------------------------------
  22. proc ToPressButton {parent btn} {
  23.     after 100 SendButtonPress $parent $btn mouse
  24. }
  25. proc ToEnterDirsByKey {parent dirs} {
  26.     after 100 [list EnterDirsByKey $parent $dirs]
  27. }
  28. proc PressButton {btn} {
  29.     event generate $btn <Enter>
  30.     event generate $btn <1> -x 5 -y 5
  31.     event generate $btn <ButtonRelease-1> -x 5 -y 5
  32. }
  33. proc EnterDirsByKey {parent dirs} {
  34.     global tk_strictMotif
  35.     if {$parent == "."} {
  36. set w .__tk_choosedir
  37.     } else {
  38. set w $parent.__tk_choosedir
  39.     }
  40.     upvar ::tk::dialog::file::__tk_choosedir data
  41.     foreach dir $dirs {
  42. $data(ent) delete 0 end
  43. $data(ent) insert 0 $dir
  44. update
  45. SendButtonPress $parent ok mouse
  46. after 50
  47.     }
  48. }
  49. proc SendButtonPress {parent btn type} {
  50.     global tk_strictMotif
  51.     if {$parent == "."} {
  52. set w .__tk_choosedir
  53.     } else {
  54. set w $parent.__tk_choosedir
  55.     }
  56.     upvar ::tk::dialog::file::__tk_choosedir data
  57.     set button $data($btnBtn)
  58.     if ![winfo ismapped $button] {
  59. update
  60.     }
  61.     if {$type == "mouse"} {
  62. PressButton $button
  63.     } else {
  64. event generate $w <Enter>
  65. focus $w
  66. event generate $button <Enter>
  67. event generate $w <KeyPress> -keysym Return
  68.     }
  69. }
  70. #----------------------------------------------------------------------
  71. #
  72. # The test suite proper
  73. #
  74. #----------------------------------------------------------------------
  75. # Make a dir for us to rely on for tests
  76. makeDirectory choosedirTest
  77. set dir [pwd]
  78. set fake [file join $dir non-existant]
  79. set real [file join $dir choosedirTest]
  80. set parent .
  81. foreach opt {-initialdir -mustexist -parent -title} {
  82.     test choosedir-1.1 "tk_chooseDirectory command" unixOnly {
  83. list [catch {tk_chooseDirectory $opt} msg] $msg
  84.     } [list 1 "value for "$opt" missing"]
  85. }
  86. test choosedir-1.2 "tk_chooseDirectory command" unixOnly {
  87.     list [catch {tk_chooseDirectory -foo bar} msg] $msg
  88. } [list 1 "bad option "-foo": must be -initialdir, -mustexist, -parent, or -title"]
  89. test choosedir-1.3 "tk_chooseDirectory command" unixOnly {
  90.     list [catch {tk_chooseDirectory -parent foo.bar} msg] $msg
  91. } {1 {bad window path name "foo.bar"}}
  92. test choosedir-2.1 "tk_chooseDirectory command, cancel gives null" {unixOnly} {
  93.     ToPressButton $parent cancel
  94.     tk_chooseDirectory -title "Press Cancel" -parent $parent
  95. } ""
  96. test choosedir-3.1 "tk_chooseDirectory -mustexist 1" {unixOnly} {
  97.     # first enter a bogus dirname, then enter a real one.
  98.     ToEnterDirsByKey $parent [list $fake $real $real]
  99.     set result [tk_chooseDirectory 
  100.     -title "Enter "$fake", press OK, enter "$real", press OK" 
  101.     -parent $parent -mustexist 1]
  102.     set result
  103. } $real
  104. test choosedir-3.2 "tk_chooseDirectory -mustexist 0" {unixOnly} {
  105.     ToEnterDirsByKey $parent [list $fake $fake]
  106.     tk_chooseDirectory -title "Enter "$fake", press OK" 
  107.     -parent $parent -mustexist 0
  108. } $fake
  109. test choosedir-4.1 "tk_chooseDirectory command, initialdir" {unixOnly} {
  110.     ToPressButton $parent ok
  111.     tk_chooseDirectory -title "Press Ok" -parent $parent -initialdir $real
  112. } $real
  113. test choosedir-4.2 "tk_chooseDirectory command, initialdir" {unixOnly} {
  114.     ToEnterDirsByKey $parent [list $fake $fake]
  115.     tk_chooseDirectory 
  116.     -title "Enter "$fake" and press Ok" 
  117.     -parent $parent -initialdir $real
  118. } $fake
  119. test choosedir-4.3 "tk_chooseDirectory, -initialdir {}" {unixOnly} {
  120.     catch {unset ::tk::dialog::file::__tk_choosedir}
  121.     ToPressButton $parent ok
  122.     tk_chooseDirectory 
  123.     -title "Press OK" 
  124.     -parent $parent -initialdir ""
  125. } [pwd]
  126. test choosedir-5.1 "tk_chooseDirectory, handles {} entry text" {unixOnly} {
  127.     ToEnterDirsByKey $parent [list "" $real $real]
  128.     tk_chooseDirectory -title "Clear entry, Press OK; Enter $real, press OK" 
  129.     -parent $parent
  130. } $real
  131. # cleanup
  132. ::tcltest::cleanupTests
  133. return