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

通讯编程

开发平台:

Visual C++

  1. # This file is a Tcl script to test the Windows specific behavior of
  2. # the common dialog boxes.  It is organized in the standard
  3. # fashion for Tcl tests.
  4. #
  5. # Copyright (c) 1997 Sun Microsystems, Inc.
  6. # Copyright (c) 1998-1999 by Scriptics Corporation.
  7. # Copyright (c) 1998-1999 ActiveState Corporation.
  8. #
  9. # RCS: @(#) $Id: winDialog.test,v 1.9 2002/07/13 20:28:36 dgp Exp $
  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. testConstraint testwinevent [llength [info commands testwinevent]]
  17. catch {testwinevent debug 1}
  18. proc start {arg} {
  19.     set ::tk_dialog 0
  20.     set ::iter_after 0
  21.     after 1 $arg
  22. }
  23. proc then {cmd} {
  24.     set ::command $cmd
  25.     set ::dialogresult {}
  26.     afterbody
  27.     vwait ::dialogresult
  28.     return $::dialogresult
  29. }
  30. proc afterbody {} {
  31.     if {$::tk_dialog == 0} {
  32. if {[incr ::iter_after] > 30} {
  33.     set ::dialogresult ">30 iterations waiting on tk_dialog"
  34.     return
  35. }
  36. after 150 {afterbody}
  37. return
  38.     }
  39.     uplevel #0 {set dialogresult [eval $command]}
  40. }
  41. proc Click {button} {
  42.     testwinevent $::tk_dialog $button WM_LBUTTONDOWN 1 0x000a000b
  43.     testwinevent $::tk_dialog $button WM_LBUTTONUP 0 0x000a000b
  44. }
  45. proc GetText {button} {
  46.     return [testwinevent $::tk_dialog $button WM_GETTEXT]
  47. }
  48. proc SetText {button text} {
  49.     return [testwinevent $::tk_dialog $button WM_SETTEXT $text]
  50. }
  51. test winDialog-1.1 {Tk_ChooseColorObjCmd} {nt} {
  52. } {}
  53. test winDialog-2.1 {ColorDlgHookProc} {nt} {
  54. } {}
  55. test winDialog-3.1 {Tk_GetOpenFileObjCmd} {nt testwinevent} {
  56.     start {tk_getOpenFile}
  57.     then {
  58. set x [GetText 2]
  59. Click 2
  60.     }
  61.     set x
  62. } {Cancel}
  63. test winDialog-4.1 {Tk_GetSaveFileObjCmd} {nt testwinevent} {
  64.     start {tk_getSaveFile}
  65.     then {
  66. set x [GetText 2]
  67. Click 2
  68.     }
  69.     set x
  70. } {Cancel}
  71. test winDialog-5.1 {GetFileName: no arguments} {nt testwinevent} {
  72.     start {tk_getOpenFile -title Open}
  73.     then {
  74. Click cancel
  75.     }
  76. } {0}
  77. test winDialog-5.2 {GetFileName: one argument} {nt} {
  78.     list [catch {tk_getOpenFile -foo} msg] $msg
  79. } {1 {bad option "-foo": must be -defaultextension, -filetypes, -initialdir, -initialfile, -multiple, -parent, or -title}}
  80. test winDialog-5.4 {GetFileName: many arguments} {nt testwinevent} {
  81.     start {tk_getOpenFile -initialdir c:/ -parent . -title test -initialfile foo}
  82.     then {
  83. Click cancel
  84.     }
  85. } {0}
  86. test winDialog-5.5 {GetFileName: Tcl_GetIndexFromObj() != TCL_OK} {nt} {
  87.     list [catch {tk_getOpenFile -foo bar -abc} msg] $msg
  88. } {1 {bad option "-foo": must be -defaultextension, -filetypes, -initialdir, -initialfile, -multiple, -parent, or -title}}
  89. test winDialog-5.6 {GetFileName: Tcl_GetIndexFromObj() == TCL_OK} {nt testwinevent} {
  90.     start {tk_getOpenFile -title bar}
  91.     then {
  92. Click cancel
  93.     }
  94. } {0}
  95. test winDialog-5.7 {GetFileName: valid option, but missing value} {nt} {
  96.     list [catch {tk_getOpenFile -initialdir bar -title} msg] $msg
  97. } {1 {value for "-title" missing}}
  98. test winDialog-5.8 {GetFileName: extension begins with .} {nt testwinevent} {
  99. #    if (string[0] == '.') {
  100. # string++;
  101. #    }
  102.     start {set x [tk_getSaveFile -defaultextension .foo -title Save]}
  103.     then {
  104. SetText 0x480 bar
  105. Click 1
  106.     }
  107.     string totitle $x
  108. } [string totitle [file join [pwd] bar.foo]]
  109. test winDialog-5.9 {GetFileName: extension doesn't begin with .} {nt testwinevent} {
  110.     start {set x [tk_getSaveFile -defaultextension foo -title Save]}
  111.     then {
  112. SetText 0x480 bar
  113. Click 1
  114.     }
  115.     string totitle $x
  116. } [string totitle [file join [pwd] bar.foo]]
  117. test winDialog-5.10 {GetFileName: file types} {nt testwinevent} {
  118. #     case FILE_TYPES: 
  119.     start {tk_getSaveFile -filetypes {{"foo files" .foo FOOF}} -title Foo}
  120.     then {
  121. set x [GetText 0x470]
  122. Click cancel
  123.     }
  124.     set x
  125. } {foo files (*.foo)}
  126. test winDialog-5.11 {GetFileName: file types: MakeFilter() fails} {nt} {
  127. # if (MakeFilter(interp, string, &utfFilterString) != TCL_OK) 
  128.     list [catch {tk_getSaveFile -filetypes {{"foo" .foo FOO}}} msg] $msg
  129. } {1 {bad Macintosh file type "FOO"}}
  130. test winDialog-5.12 {GetFileName: initial directory} {nt testwinevent} {
  131. #     case FILE_INITDIR: 
  132.     start {set x [tk_getSaveFile -initialdir c:/ -initialfile "12x 455" -title Foo]}
  133.     then {
  134. Click 1
  135.     }
  136.     set x
  137. } {C:/12x 455}
  138. test winDialog-5.13 {GetFileName: initial directory: Tcl_TranslateFilename()} 
  139. {nt} {
  140. # if (Tcl_TranslateFileName(interp, string, &ds) == NULL) 
  141.     
  142.     list [catch {tk_getOpenFile -initialdir ~12x/455} msg] $msg
  143. } {1 {user "12x" doesn't exist}}
  144. test winDialog-5.14 {GetFileName: initial file} {nt testwinevent} {
  145. #     case FILE_INITFILE: 
  146.     start {set x [tk_getSaveFile -initialfile "12x 456" -title Foo]}
  147.     then {
  148. Click 1
  149.     }
  150.     string totitle $x
  151. } [string totitle [file join [pwd] "12x 456"]]
  152. test winDialog-5.15 {GetFileName: initial file: Tcl_TranslateFileName()} {nt} {
  153. # if (Tcl_TranslateFileName(interp, string, &ds) == NULL) 
  154.     list [catch {tk_getOpenFile -initialfile ~12x/455} msg] $msg
  155. } {1 {user "12x" doesn't exist}}
  156. set a aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
  157. append a $a
  158. append a $a
  159. append a $a
  160. append a $a
  161. test winDialog-5.16 {GetFileName: initial file: long name} {nt testwinevent} {
  162.     start {set x [tk_getSaveFile -initialfile $a -title Long]}
  163.     then {
  164. Click 1
  165.     }
  166.     string totitle $x
  167. } [string totitle [string range [file join [pwd] $a] 0 257]]
  168. test winDialog-5.17 {GetFileName: parent} {nt} {
  169. #     case FILE_PARENT: 
  170.     toplevel .t
  171.     set x 0
  172.     start {tk_getOpenFile -parent .t -title Parent; set x 1}
  173.     then {
  174. destroy .t
  175.     }
  176.     set x
  177. } {1}
  178. test winDialog-5.18 {GetFileName: title} {nt testwinevent} {
  179. #     case FILE_TITLE: 
  180.     
  181.     start {tk_getOpenFile -title Narf}
  182.     then {
  183. Click 2
  184.     }
  185. } {0}
  186. test winDialog-5.19 {GetFileName: no filter specified} {nt testwinevent} {
  187. #    if (ofn.lpstrFilter == NULL) 
  188.     start {tk_getOpenFile -title Filter} 
  189.     then {
  190. set x [GetText 0x470]
  191. Click 2
  192.     }
  193.     set x
  194. } {All Files (*.*)}
  195. test winDialog-5.20 {GetFileName: parent HWND doesn't yet exist} {nt} {
  196. #    if (Tk_WindowId(parent) == None) 
  197.     toplevel .t
  198.     start {tk_getOpenFile -parent .t -title Open}
  199.     then {
  200. destroy .t
  201.     }
  202. } {}
  203. test winDialog-5.21 {GetFileName: parent HWND already exists} {nt} {
  204.     toplevel .t
  205.     update
  206.     start {tk_getOpenFile -parent .t -title Open}
  207.     then {
  208. destroy .t
  209.     }
  210. } {}
  211. test winDialog-5.22 {GetFileName: call GetOpenFileName} {nt testwinevent} {
  212. #     winCode = GetOpenFileName(&ofn);
  213.     
  214.     start {tk_getOpenFile -title Open}
  215.     then {
  216. set x [GetText 1]
  217. Click 2
  218.     }
  219.     set x
  220. } {&Open}
  221. test winDialog-5.23 {GetFileName: call GetSaveFileName} {nt testwinevent} {
  222. #     winCode = GetSaveFileName(&ofn);
  223.     start {tk_getSaveFile -title Save}
  224.     then {
  225. set x [GetText 1]
  226. Click 2
  227.     }
  228.     set x
  229. } {&Save}
  230. test winDialog-5.24 {GetFileName: convert  to /} {nt testwinevent} {
  231.     start {set x [tk_getSaveFile -title Back]}
  232.     then {
  233. SetText 0x480 "c:\12x 457"
  234. Click 1
  235.     }
  236.     set x
  237. } {c:/12x 457}
  238. test winDialog-6.1 {MakeFilter} {emptyTest nt} {} {}
  239. test winDialog-7.1 {Tk_MessageBoxObjCmd} {emptyTest nt} {} {}
  240. test winDialog-8.1 {OFNHookProc} {emptyTest nt} {} {}
  241. ## The Tk_ChooseDirectoryObjCmd hang on the static build of Windows
  242. ## because somehow the GetOpenFileName ends up a noop in the static
  243. ## build.
  244. ##
  245. test winDialog-9.1 {Tk_ChooseDirectoryObjCmd: no arguments} {nt testwinevent} {
  246.     start {tk_chooseDirectory}
  247.     then {
  248. Click cancel
  249.     }
  250. } {0}
  251. test winDialog-9.2 {Tk_ChooseDirectoryObjCmd: one argument} {nt} {
  252.     list [catch {tk_chooseDirectory -foo} msg] $msg
  253. } {1 {bad option "-foo": must be -initialdir, -mustexist, -parent, or -title}}
  254. test winDialog-9.3 {Tk_ChooseDirectoryObjCmd: many arguments} {nt testwinevent} {
  255.     start {
  256. tk_chooseDirectory -initialdir c:/ -mustexist 1 -parent . -title test
  257.     }
  258.     then {
  259. Click cancel
  260.     }
  261. } {0}
  262. test winDialog-9.4 {Tk_ChooseDirectoryObjCmd:
  263. Tcl_GetIndexFromObj() != TCL_OK} {nt} {
  264.     list [catch {tk_chooseDirectory -foo bar -abc} msg] $msg
  265. } {1 {bad option "-foo": must be -initialdir, -mustexist, -parent, or -title}}
  266. test winDialog-9.5 {Tk_ChooseDirectoryObjCmd:
  267. Tcl_GetIndexFromObj() == TCL_OK} {nt testwinevent} {
  268.     start {tk_chooseDirectory -title bar}
  269.     then {
  270. Click cancel
  271.     }
  272. } {0}
  273. test winDialog-9.6 {Tk_ChooseDirectoryObjCmd:
  274. valid option, but missing value} {nt} {
  275.     list [catch {tk_chooseDirectory -initialdir bar -title} msg] $msg
  276. } {1 {value for "-title" missing}}
  277. test winDialog-9.7 {Tk_ChooseDirectoryObjCmd: -initialdir} {nt testwinevent} {
  278. #     case DIR_INITIAL: 
  279.     start {set x [tk_chooseDirectory -initialdir c:/ -title Foo]}
  280.     then {
  281. Click 1
  282.     }
  283.     string tolower [set x]
  284. } {c:/}
  285. test winDialog-9.8 {Tk_ChooseDirectoryObjCmd:
  286. initial directory: Tcl_TranslateFilename()} {nt} {
  287. # if (Tcl_TranslateFileName(interp, string, 
  288. # &utfDirString) == NULL) 
  289.     
  290.     list [catch {tk_chooseDirectory -initialdir ~12x/455} msg] $msg
  291. } {1 {user "12x" doesn't exist}}
  292. catch {testwinevent debug 0}
  293. # cleanup
  294. ::tcltest::cleanupTests
  295. return