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

通讯编程

开发平台:

Visual C++

  1. # This file is a Tcl script to test out Tk's "tk_chooseColor" 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: clrpick.test,v 1.7 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. test clrpick-1.1 {tk_chooseColor command} {
  17.     list [catch {tk_chooseColor -foo} msg] $msg
  18. } {1 {bad option "-foo": must be -initialcolor, -parent, or -title}}
  19. catch {tk_chooseColor -foo 1} msg
  20. regsub -all ,      $msg "" options
  21. regsub "-foo" $options "" options
  22. foreach option $options {
  23.     if {[string index $option 0] == "-"} {
  24. test clrpick-1.2 {tk_chooseColor command} {
  25.     list [catch {tk_chooseColor $option} msg] $msg
  26. } [list 1 "value for "$option" missing"]
  27.     }
  28. }
  29. test clrpick-1.3 {tk_chooseColor command} {
  30.     list [catch {tk_chooseColor -foo bar} msg] $msg
  31. } {1 {bad option "-foo": must be -initialcolor, -parent, or -title}}
  32. test clrpick-1.4 {tk_chooseColor command} {
  33.     list [catch {tk_chooseColor -initialcolor} msg] $msg
  34. } {1 {value for "-initialcolor" missing}}
  35. test clrpick-1.5 {tk_chooseColor command} {
  36.     list [catch {tk_chooseColor -parent foo.bar} msg] $msg
  37. } {1 {bad window path name "foo.bar"}}
  38. test clrpick-1.6 {tk_chooseColor command} {
  39.     list [catch {tk_chooseColor -initialcolor badbadbaadcolor} msg] $msg
  40. } {1 {unknown color name "badbadbaadcolor"}}
  41. test clrpick-1.7 {tk_chooseColor command} {
  42.     list [catch {tk_chooseColor -initialcolor ##badbadbaadcolor} msg] $msg
  43. } {1 {invalid color name "##badbadbaadcolor"}}
  44. if {[info commands tk::dialog::color::] == ""} {
  45.     set isNative 1
  46. } else {
  47.     set isNative 0
  48. }
  49. proc ToPressButton {parent btn} {
  50.     global isNative
  51.     if {!$isNative} {
  52. after 200 "SendButtonPress $parent $btn mouse"
  53.     }
  54. }
  55. proc ToChooseColorByKey {parent r g b} {
  56.     global isNative
  57.     if {!$isNative} {
  58. after 200 ChooseColorByKey $parent $r $g $b
  59.     }
  60. }
  61. proc PressButton {btn} {
  62.     event generate $btn <Enter>
  63.     event generate $btn <1> -x 5 -y 5
  64.     event generate $btn <ButtonRelease-1> -x 5 -y 5
  65. }
  66. proc ChooseColorByKey {parent r g b} {
  67.     set w .__tk__color
  68.     upvar ::tk::dialog::color::[winfo name $w] data
  69.     update
  70.     $data(red,entry)   delete 0 end
  71.     $data(green,entry) delete 0 end
  72.     $data(blue,entry)  delete 0 end
  73.     $data(red,entry)   insert 0 $r
  74.     $data(green,entry) insert 0 $g
  75.     $data(blue,entry)  insert 0 $b
  76.     # Manually force the refresh of the color values instead
  77.     # of counting on the timing of the event stream to change
  78.     # the values for us.
  79.     tk::dialog::color::HandleRGBEntry $w
  80.     SendButtonPress $parent ok mouse
  81. }
  82. proc SendButtonPress {parent btn type} {
  83.     set w .__tk__color
  84.     upvar ::tk::dialog::color::[winfo name $w] data
  85.     set button $data($btnBtn)
  86.     if ![winfo ismapped $button] {
  87. update
  88.     }
  89.     if {$type == "mouse"} {
  90. PressButton $button
  91.     } else {
  92. event generate $w <Enter>
  93. focus $w
  94. event generate $button <Enter>
  95. event generate $w <KeyPress> -keysym Return
  96.     }
  97. }
  98. set parent .
  99. set verylongstring longstring:
  100. set verylongstring $verylongstring$verylongstring
  101. set verylongstring $verylongstring$verylongstring
  102. set verylongstring $verylongstring$verylongstring
  103. set verylongstring $verylongstring$verylongstring
  104. #set verylongstring $verylongstring$verylongstring
  105. # Interesting thing...when this is too long, the
  106. # delay caused in processing it kills the automated testing,
  107. # and makes a lot of the test cases fail.
  108. #set verylongstring $verylongstring$verylongstring
  109. #set verylongstring $verylongstring$verylongstring
  110. #set verylongstring $verylongstring$verylongstring
  111. #set verylongstring $verylongstring$verylongstring
  112. # let's soak up a bunch of colors...so that
  113. # machines with small color palettes still fail.
  114. # some tests will be skipped if there are no more colors
  115. set numcolors 32
  116. testConstraint colorsLeftover 1
  117. set i 0
  118. canvas .c
  119. pack .c -expand 1 -fill both
  120. while {$i<$numcolors} {
  121.     set color #[format "%02x%02x%02x" $i [expr $i+1] [expr $i+3]]
  122.     .c create rectangle [expr 10+$i] [expr 10+$i] [expr 50+$i] [expr 50+$i] -fill $color -outline $color
  123.     incr i
  124. }
  125. set i 0
  126. while {$i<$numcolors} {
  127.     set color [.c itemcget $i -fill]
  128.     if {$color != ""} {
  129. foreach {r g b} [winfo rgb . $color] {}
  130. set r [expr $r/256]
  131. set g [expr $g/256]
  132. set b [expr $b/256]
  133. if {"$color" != "#[format %02x%02x%02x $r $g $b]"} {
  134.     testConstraint colorsLeftover 0
  135. }
  136.     }
  137.     .c delete $i
  138.     incr i
  139. }
  140. destroy .c
  141. set color #404040
  142. test clrpick-2.1 {tk_chooseColor command} 
  143. {nonUnixUserInteraction colorsLeftover} {
  144.     ToPressButton $parent ok
  145.     tk_chooseColor -title "Press Ok $verylongstring" -initialcolor $color 
  146.     -parent $parent
  147. } "$color"
  148. set color #808040
  149. test clrpick-2.2 {tk_chooseColor command} 
  150. {nonUnixUserInteraction colorsLeftover} {
  151.     if {$tcl_platform(platform) == "macintosh"} {
  152. set colors "32768 32768 16384"
  153.     } else {
  154. set colors "128 128 64"
  155.     }
  156.     ToChooseColorByKey $parent 128 128 64
  157.     tk_chooseColor -parent $parent -title "choose $colors"
  158. } "$color"
  159. test clrpick-2.3 {tk_chooseColor command} 
  160. {nonUnixUserInteraction colorsLeftover} {
  161.     ToPressButton $parent ok
  162.     tk_chooseColor -parent $parent -title "Press OK"
  163. } "$color"
  164. test clrpick-2.4 {tk_chooseColor command} {nonUnixUserInteraction} {
  165.     ToPressButton $parent cancel
  166.     tk_chooseColor -parent $parent -title "Press Cancel"
  167. } ""
  168. set color "#000000"
  169. test clrpick-3.1 {tk_chooseColor: background events} {nonUnixUserInteraction} {
  170.     after 1 {set x 53}
  171.     ToPressButton $parent ok
  172.     tk_chooseColor -parent $parent -title "Press OK" -initialcolor $color
  173. } "#000000"
  174. test clrpick-3.2 {tk_chooseColor: background events} {nonUnixUserInteraction} {
  175.     after 1 {set x 53}
  176.     ToPressButton $parent cancel
  177.     tk_chooseColor -parent $parent -title "Press Cancel"
  178. } ""
  179. test clrpick-4.1 {tk_chooseColor: screen is inherited from parent} unixOnly {
  180.     after 50 {set ::scr [winfo screen .__tk__color]}
  181.     ToPressButton $parent cancel
  182.     tk_chooseColor -parent $parent
  183.     set ::scr
  184. } [winfo screen $parent]
  185. # cleanup
  186. ::tcltest::cleanupTests
  187. return