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

通讯编程

开发平台:

Visual C++

  1. # This file is a Tcl script to test out Tk's "tk_messageBox" command.
  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: msgbox.test,v 1.6 2002/07/13 20:28:35 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. test msgbox-1.1 {tk_messageBox command} {
  17.     list [catch {tk_messageBox -foo} msg] $msg
  18. } {1 {bad option "-foo": must be -default, -icon, -message, -parent, -title, or -type}}
  19. test msgbox-1.2 {tk_messageBox command} {
  20.     list [catch {tk_messageBox -foo bar} msg] $msg
  21. } {1 {bad option "-foo": must be -default, -icon, -message, -parent, -title, or -type}}
  22. catch {tk_messageBox -foo bar} msg
  23. regsub -all ,      $msg "" options
  24. regsub "-foo" $options "" options
  25. foreach option $options {
  26.     if {[string index $option 0] == "-"} {
  27. test msgbox-1.3 {tk_messageBox command} {
  28.     list [catch {tk_messageBox $option} msg] $msg
  29. } [list 1 "value for "$option" missing"]
  30.     }
  31. }
  32. test msgbox-1.4 {tk_messageBox command} {
  33.     list [catch {tk_messageBox -default} msg] $msg
  34. } {1 {value for "-default" missing}}
  35. test msgbox-1.5 {tk_messageBox command} {
  36.     list [catch {tk_messageBox -type foo} msg] $msg
  37. } {1 {bad -type value "foo": must be abortretryignore, ok, okcancel, retrycancel, yesno, or yesnocancel}}
  38. proc createPlatformMsg {val} {
  39.     global tcl_platform
  40.     if {$tcl_platform(platform) == "unix"} {
  41. return "invalid default button "$val""
  42.     }
  43.     return "bad -default value "$val": must be abort, retry, ignore, ok, cancel, no, or yes"
  44. }
  45. test msgbox-1.6 {tk_messageBox command} {
  46.     list [catch {tk_messageBox -default 1.1} msg] $msg
  47. } [list 1 [createPlatformMsg "1.1"]]
  48. test msgbox-1.7 {tk_messageBox command} {
  49.     list [catch {tk_messageBox -default foo} msg] $msg
  50. } [list 1 [createPlatformMsg "foo"]]
  51. test msgbox-1.8 {tk_messageBox command} {
  52.     list [catch {tk_messageBox -type yesno -default 3} msg] $msg
  53. } [list 1 [createPlatformMsg "3"]]
  54. test msgbox-1.9 {tk_messageBox command} {
  55.     list [catch {tk_messageBox -icon foo} msg] $msg
  56. } {1 {bad -icon value "foo": must be error, info, question, or warning}}
  57. test msgbox-1.10 {tk_messageBox command} {
  58.     list [catch {tk_messageBox -parent foo.bar} msg] $msg
  59. } {1 {bad window path name "foo.bar"}}
  60. if {[info commands tk::MessageBox] == ""} {
  61.     set isNative 1
  62. } else {
  63.     set isNative 0
  64. }
  65. proc ChooseMsg {parent btn} {
  66.     global isNative
  67.     if {!$isNative} {
  68. after 100 SendEventToMsg $parent $btn mouse
  69.     }
  70. }
  71. proc ChooseMsgByKey {parent btn} {
  72.     global isNative
  73.     if {!$isNative} {
  74. after 100 SendEventToMsg $parent $btn key
  75.     }
  76. }
  77. proc PressButton {btn} {
  78.     event generate $btn <Enter>
  79.     event generate $btn <ButtonPress-1> -x 5 -y 5
  80.     event generate $btn <ButtonRelease-1> -x 5 -y 5
  81. }
  82. proc SendEventToMsg {parent btn type} {
  83.     if {$parent != "."} {
  84. set w $parent.__tk__messagebox
  85.     } else {
  86. set w .__tk__messagebox
  87.     }
  88.     if ![winfo ismapped $w.$btn] {
  89. update
  90.     }
  91.     if {$type == "mouse"} {
  92. PressButton $w.$btn
  93.     } else {
  94. event generate $w <Enter>
  95. focus $w
  96. event generate $w.$btn <Enter>
  97. event generate $w <KeyPress> -keysym Return
  98.     }
  99. }
  100. set parent .
  101. set specs {
  102.     {"abortretryignore"  MB_ABORTRETRYIGNORE  3  {"abort"  "retry"  "ignore"}} 
  103.     {"ok"    MB_OK         1  {"ok"                      }} 
  104.     {"okcancel"   MB_OKCANCEL        2  {"ok"     "cancel"         }} 
  105.     {"retrycancel"   MB_RETRYCANCEL       2  {"retry"  "cancel"         }} 
  106.     {"yesno"   MB_YESNO        2  {"yes"    "no"             }} 
  107.     {"yesnocancel"   MB_YESNOCANCEL       3  {"yes"    "no"     "cancel"}}
  108. }
  109. #
  110. # Try out all combinations of (type) x (default button) and
  111. # (type) x (icon).
  112. #
  113. set count 1
  114. foreach spec $specs {
  115.     set type [lindex $spec 0]
  116.     set buttons [lindex $spec 3]
  117.     set button [lindex $buttons 0]
  118.     test msgbox-2.$count {tk_messageBox command} {nonUnixUserInteraction} {
  119. ChooseMsg $parent $button
  120. tk_messageBox -title Hi -message "Please press $button" 
  121.     -type $type
  122.     } $button
  123.     incr count
  124.     foreach icon {warning error info question} {
  125. test msgbox-2.$count {tk_messageBox command -icon option} 
  126. {nonUnixUserInteraction} {
  127.     ChooseMsg $parent $button
  128.     tk_messageBox -title Hi -message "Please press $button" 
  129. -type $type -icon $icon
  130. } $button
  131.         incr count
  132.     }
  133.     foreach button $buttons {
  134. test msgbox-2.$count {tk_messageBox command} {nonUnixUserInteraction} {
  135.     ChooseMsg $parent $button
  136.     tk_messageBox -title Hi -message "Please press $button" 
  137. -type $type -default $button
  138. } "$button"
  139.         incr count
  140.     }
  141. }
  142. # These tests will hang your test suite if they fail.
  143. test msgbox-3.1 {tk_messageBox handles withdrawn parent} {nonUnixUserInteraction} {
  144.     wm withdraw .
  145.     ChooseMsg . "ok"
  146.     tk_messageBox -title Hi -message "Please press ok" 
  147.     -type ok -default ok
  148. } "ok"
  149. wm deiconify .
  150. test msgbox-3.2 {tk_messageBox handles iconified parent} {nonUnixUserInteraction} {
  151.     wm iconify .
  152.     ChooseMsg . "ok"
  153.     tk_messageBox -title Hi -message "Please press ok" 
  154.     -type ok -default ok
  155. } "ok"
  156. wm deiconify .    
  157. # cleanup
  158. ::tcltest::cleanupTests
  159. return