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

通讯编程

开发平台:

Visual C++

  1. # This file is a Tcl script to test out the "scale" command
  2. # of Tk.  It is organized in the standard fashion for Tcl tests.
  3. #
  4. # Copyright (c) 1994 The Regents of the University of California.
  5. # Copyright (c) 1994-1996 Sun Microsystems, Inc.
  6. # Copyright (c) 1998-1999 by Scriptics Corporation.
  7. # All rights reserved.
  8. #
  9. # RCS: @(#) $Id: scale.test,v 1.12.2.1 2003/08/13 10:59:33 patthoyts 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. # Create entries in the option database to be sure that geometry options
  17. # like border width have predictable values.
  18. option add *Scale.borderWidth 2
  19. option add *Scale.highlightThickness 2
  20. option add *Scale.font {Helvetica -12 bold}
  21. scale .s -from 100 -to 300
  22. pack .s
  23. update
  24. set i 1
  25. foreach test {
  26.     {-activebackground #ff0000 #ff0000 non-existent
  27.     {unknown color name "non-existent"}}
  28.     {-background #ff0000 #ff0000 non-existent
  29.     {unknown color name "non-existent"}}
  30.     {-bd 4 4 badValue {bad screen distance "badValue"}}
  31.     {-bigincrement 12.5 12.5 badValue
  32.     {expected floating-point number but got "badValue"}}
  33.     {-bg #ff0000 #ff0000 non-existent
  34.     {unknown color name "non-existent"}}
  35.     {-borderwidth 1.3 1 badValue {bad screen distance "badValue"}}
  36.     {-command "set x" {set x} {} {}}
  37.     {-cursor arrow arrow badValue {bad cursor spec "badValue"}}
  38.     {-digits 5 5 badValue {expected integer but got "badValue"}}
  39.     {-fg #00ff00 #00ff00 badValue {unknown color name "badValue"}}
  40.     {-font fixed fixed {} {font "" doesn't exist}}
  41.     {-foreground green green badValue {unknown color name "badValue"}}
  42.     {-from -15.0 -15.0 badValue
  43.     {expected floating-point number but got "badValue"}}
  44.     {-highlightbackground #112233 #112233 ugly {unknown color name "ugly"}}
  45.     {-highlightcolor #123456 #123456 non-existent
  46.     {unknown color name "non-existent"}}
  47.     {-highlightthickness 2 2 badValue {bad screen distance "badValue"}}
  48.     {-label "Some text" {Some text} {} {}}
  49.     {-length 130 130 badValue {bad screen distance "badValue"}}
  50.     {-orient horizontal horizontal badValue
  51.     {bad orient "badValue": must be horizontal or vertical}}
  52.     {-orient horizontal horizontal {} {}}
  53.     {-relief ridge ridge badValue {bad relief "badValue": must be flat, groove, raised, ridge, solid, or sunken}}
  54.     {-repeatdelay 14 14 bogus {expected integer but got "bogus"}}
  55.     {-repeatinterval 14 14 bogus {expected integer but got "bogus"}}
  56.     {-resolution 2.0 2.0 badValue
  57.     {expected floating-point number but got "badValue"}}
  58.     {-showvalue 0 0 badValue {expected boolean value but got "badValue"}}
  59.     {-sliderlength 86 86 badValue {bad screen distance "badValue"}}
  60.     {-sliderrelief raised raised badValue {bad relief "badValue": must be flat, groove, raised, ridge, solid, or sunken}}
  61.     {-state d disabled badValue
  62.     {bad state "badValue": must be active, disabled, or normal}}
  63.     {-state n normal {} {}}
  64.     {-takefocus "any string" "any string" {} {}}
  65.     {-tickinterval 4.3 4.0 badValue
  66.     {expected floating-point number but got "badValue"}}
  67.     {-to 14.9 15.0 badValue
  68.     {expected floating-point number but got "badValue"}}
  69.     {-troughcolor #ff0000 #ff0000 non-existent
  70.     {unknown color name "non-existent"}}
  71.     {-variable x x {} {}}
  72.     {-width 32 32 badValue {bad screen distance "badValue"}}
  73. } {
  74.     set name [lindex $test 0]
  75.     test scale-1.$i {configuration options} {
  76. .s configure $name [lindex $test 1]
  77. lindex [.s configure $name] 4
  78.     } [lindex $test 2]
  79.     incr i
  80.     if {[lindex $test 3] != ""} {
  81. test scale-1.$i {configuration options} {
  82.     list [catch {.s configure $name [lindex $test 3]} msg] $msg
  83. } [list 1 [lindex $test 4]]
  84.     }
  85.     .s configure $name [lindex [.s configure $name] 3]
  86.     incr i
  87. }
  88. destroy .s
  89. test scale-2.1 {Tk_ScaleCmd procedure} {
  90.     list [catch {scale} msg] $msg
  91. } {1 {wrong # args: should be "scale pathName ?options?"}}
  92. test scale-2.2 {Tk_ScaleCmd procedure} {
  93.     list [catch {scale foo} msg] $msg [winfo child .]
  94. } {1 {bad window path name "foo"} {}}
  95. test scale-2.3 {Tk_ScaleCmd procedure} {
  96.     list [catch {scale .s -gorp dumb} msg] $msg [winfo child .]
  97. } {1 {unknown option "-gorp"} {}}
  98. scale .s -from 100 -to 200
  99. pack .s
  100. update idletasks
  101. test scale-3.1 {ScaleWidgetCmd procedure} {
  102.     list [catch {.s} msg] $msg
  103. } {1 {wrong # args: should be ".s option ?arg arg ...?"}}
  104. test scale-3.2 {ScaleWidgetCmd procedure, cget option} {
  105.     list [catch {.s cget} msg] $msg
  106. } {1 {wrong # args: should be ".s cget option"}}
  107. test scale-3.3 {ScaleWidgetCmd procedure, cget option} {
  108.     list [catch {.s cget a b} msg] $msg
  109. } {1 {wrong # args: should be ".s cget option"}}
  110. test scale-3.4 {ScaleWidgetCmd procedure, cget option} {
  111.     list [catch {.s cget -gorp} msg] $msg
  112. } {1 {unknown option "-gorp"}}
  113. test scale-3.5 {ScaleWidgetCmd procedure, cget option} {
  114.     .s cget -highlightthickness
  115. } {2}
  116. test scale-3.6 {ScaleWidgetCmd procedure, configure option} {
  117.     list [llength [.s configure]] [lindex [.s configure] 6]
  118. } {33 {-command command Command {} {}}}
  119. test scale-3.7 {ScaleWidgetCmd procedure, configure option} {
  120.     list [catch {.s configure -foo} msg] $msg
  121. } {1 {unknown option "-foo"}}
  122. test scale-3.8 {ScaleWidgetCmd procedure, configure option} {
  123.     list [catch {.s configure -borderwidth 2 -bg} msg] $msg
  124. } {1 {value for "-bg" missing}}
  125. test scale-3.9 {ScaleWidgetCmd procedure, coords option} {
  126.     list [catch {.s coords a b} msg] $msg
  127. } {1 {wrong # args: should be ".s coords ?value?"}}
  128. test scale-3.10 {ScaleWidgetCmd procedure, coords option} {
  129.     list [catch {.s coords bad} msg] $msg
  130. } {1 {expected floating-point number but got "bad"}}
  131. test scale-3.11 {ScaleWidgetCmd procedure} {fonts} {
  132.     .s set 120
  133.     .s coords
  134. } {38 34}
  135. test scale-3.12 {ScaleWidgetCmd procedure, coords option} {fonts} {
  136.     .s configure -orient horizontal
  137.     update
  138.     .s set 120
  139.     .s coords
  140. } {34 31}
  141. .s configure -orient vertical
  142. update
  143. test scale-3.13 {ScaleWidgetCmd procedure, get option} {
  144.     list [catch {.s get a} msg] $msg
  145. } {1 {wrong # args: should be ".s get ?x y?"}}
  146. test scale-3.14 {ScaleWidgetCmd procedure, get option} {
  147.     list [catch {.s get a b c} msg] $msg
  148. } {1 {wrong # args: should be ".s get ?x y?"}}
  149. test scale-3.15 {ScaleWidgetCmd procedure, get option} {
  150.     list [catch {.s get a 11} msg] $msg
  151. } {1 {expected integer but got "a"}}
  152. test scale-3.16 {ScaleWidgetCmd procedure, get option} {
  153.     list [catch {.s get 12 b} msg] $msg
  154. } {1 {expected integer but got "b"}}
  155. test scale-3.17 {ScaleWidgetCmd procedure, get option} {
  156.     .s set 133
  157.     .s get
  158. } 133
  159. test scale-3.18 {ScaleWidgetCmd procedure, get option} {
  160.     .s configure -resolution 0.5
  161.     .s set 150
  162.     .s get 37 34
  163. } 119.5
  164. .s configure -resolution 1
  165. test scale-3.19 {ScaleWidgetCmd procedure, identify option} {
  166.     list [catch {.s identify} msg] $msg
  167. } {1 {wrong # args: should be ".s identify x y"}}
  168. test scale-3.20 {ScaleWidgetCmd procedure, identify option} {
  169.     list [catch {.s identify 1 2 3} msg] $msg
  170. } {1 {wrong # args: should be ".s identify x y"}}
  171. test scale-3.21 {ScaleWidgetCmd procedure, identify option} {
  172.     list [catch {.s identify boo 16} msg] $msg
  173. } {1 {expected integer but got "boo"}}
  174. test scale-3.22 {ScaleWidgetCmd procedure, identify option} {
  175.     list [catch {.s identify 17 bad} msg] $msg
  176. } {1 {expected integer but got "bad"}}
  177. test scale-3.23 {ScaleWidgetCmd procedure, identify option} {fonts} {
  178.     .s set 120
  179.     list [.s identify 35 10] [.s identify 35 30] [.s identify 35 80] [.s identify 5 80]
  180. } {trough1 slider trough2 {}}
  181. test scale-3.24 {ScaleWidgetCmd procedure, set option} {
  182.     list [catch {.s set} msg] $msg
  183. } {1 {wrong # args: should be ".s set value"}}
  184. test scale-3.25 {ScaleWidgetCmd procedure, set option} {
  185.     list [catch {.s set a b} msg] $msg
  186. } {1 {wrong # args: should be ".s set value"}}
  187. test scale-3.26 {ScaleWidgetCmd procedure, set option} {
  188.     list [catch {.s set bad} msg] $msg
  189. } {1 {expected floating-point number but got "bad"}}
  190. test scale-3.27 {ScaleWidgetCmd procedure, set option} {
  191.     .s set 142
  192. } {}
  193. test scale-3.28 {ScaleWidgetCmd procedure, set option} {
  194.     .s set 118
  195.     .s configure -state disabled
  196.     .s set 181
  197.     .s configure -state normal
  198.     .s get
  199. } {118}
  200. test scale-3.29 {ScaleWidgetCmd procedure} {
  201.     list [catch {.s dumb} msg] $msg
  202. } {1 {bad option "dumb": must be cget, configure, coords, get, identify, or set}}
  203. test scale-3.30 {ScaleWidgetCmd procedure} {
  204.     list [catch {.s c} msg] $msg
  205. } {1 {ambiguous option "c": must be cget, configure, coords, get, identify, or set}}
  206. test scale-3.31 {ScaleWidgetCmd procedure} {
  207.     list [catch {.s co} msg] $msg
  208. } {1 {ambiguous option "co": must be cget, configure, coords, get, identify, or set}}
  209. test scale-3.32 {ScaleWidgetCmd procedure, Tk_Preserve} {
  210.     proc kill args {
  211. destroy .s
  212.     }
  213.     catch {destroy .s}
  214.     scale .s -variable x -from 0 -to 100 -orient horizontal
  215.     pack .s
  216.     update
  217.     .s configure -command kill
  218.     .s set 55
  219. } {}
  220. test scale-4.1 {DestroyScale procedure} {
  221.     catch {destroy .s}
  222.     set x 50
  223.     scale .s -variable x -from 0 -to 100 -orient horizontal
  224.     pack .s
  225.     update
  226.     destroy .s
  227.     list [catch {set x foo} msg] $msg $x
  228. } {0 foo foo}
  229. test scale-5.1 {ConfigureScale procedure} {
  230.     catch {destroy .s}
  231.     set x 66
  232.     set y 77
  233.     scale .s -variable x -from 0 -to 100
  234.     pack .s
  235.     update
  236.     .s configure -variable y
  237.     list [catch {set x foo} msg] $msg $x [.s get]
  238. } {0 foo foo 77}
  239. test scale-5.2 {ConfigureScale procedure} {
  240.     catch {destroy .s}
  241.     scale .s -from 0 -to 100
  242.     list [catch {.s configure -foo bar} msg] $msg
  243. } {1 {unknown option "-foo"}}
  244. test scale-5.3 {ConfigureScale procedure} {
  245.     catch {destroy .s}
  246.     catch {unset x}
  247.     scale .s -from 0 -to 100 -variable x
  248.     set result $x
  249.     lappend result [.s get]
  250.     set x 92
  251.     lappend result [.s get]
  252.     .s set 3
  253.     lappend result $x
  254.     unset x
  255.     lappend result [catch {set x} msg] $msg
  256. } {0 0 92 3 0 3}
  257. test scale-5.4 {ConfigureScale procedure} {
  258.     catch {destroy .s}
  259.     scale .s -from 0 -to 100
  260.     list [catch {.s configure -orient dumb} msg] $msg
  261. } {1 {bad orient "dumb": must be horizontal or vertical}}
  262. test scale-5.5 {ConfigureScale procedure} {
  263.     catch {destroy .s}
  264.     scale .s -from 1.11 -to 1.89 -resolution .1 -tickinterval .76
  265.     list [format %.1f [.s cget -from]] [format %.1f [.s cget -to]] 
  266.     [format %.1f [.s cget -tickinterval]]
  267. } {1.1 1.9 0.8}
  268. test scale-5.6 {ConfigureScale procedure} {
  269.     catch {destroy .s}
  270.     scale .s -from 1 -to 10 -tickinterval -2
  271.     pack .s
  272.     set result [lindex [.s configure -tickinterval] 4]
  273.     .s configure -from 10 -to 1 -tickinterval 2
  274.     lappend result [lindex [.s configure -tickinterval] 4]
  275. } {2.0 -2.0}
  276. test scale-5.7 {ConfigureScale procedure} {
  277.     catch {destroy .s}
  278.     list [catch {scale .s -from 0 -to 100 -state bogus} msg] $msg
  279. } {1 {bad state "bogus": must be active, disabled, or normal}}
  280. catch {destroy .s}
  281. scale .s -orient horizontal -length 200
  282. pack .s
  283. test scale-6.1 {ComputeFormat procedure} {
  284.     .s configure -from 10 -to 100 -resolution 10
  285.     .s set 49.3
  286.     .s get
  287. } {50}
  288. test scale-6.2 {ComputeFormat procedure} {
  289.     .s configure -from 100 -to 1000 -resolution 100
  290.     .s set 493
  291.     .s get
  292. } {500}
  293. test scale-6.3 {ComputeFormat procedure} {
  294.     .s configure -from 1000 -to 10000 -resolution 1000
  295.     .s set 4930
  296.     .s get
  297. } {5000}
  298. test scale-6.4 {ComputeFormat procedure} {
  299.     .s configure -from 10000 -to 100000 -resolution 10000
  300.     .s set 49000
  301.     .s get
  302. } {50000}
  303. test scale-6.5 {ComputeFormat procedure} {
  304.     .s configure -from 100000 -to 1000000 -resolution 100000
  305.     .s set 493000
  306.     .s get
  307. } {500000}
  308. test scale-6.6 {ComputeFormat procedure} {nonPortable} {
  309.     # This test is non-portable because some platforms format the
  310.     # result as 5e+06.
  311.     .s configure -from 1000000 -to 10000000 -resolution 1000000
  312.     .s set 4930000
  313.     .s get
  314. } {5000000}
  315. test scale-6.7 {ComputeFormat procedure} {
  316.     .s configure -from 1000000000 -to 10000000000 -resolution 1000000000
  317.     .s set 4930000000
  318.     expr {[.s get] == 5.0e+09}
  319. } 1
  320. test scale-6.8 {ComputeFormat procedure} {
  321.     .s configure -from .1 -to 1 -resolution .1
  322.     .s set .6
  323.     .s get
  324. } {0.6}
  325. test scale-6.9 {ComputeFormat procedure} {
  326.     .s configure -from .01 -to .1 -resolution .01
  327.     .s set .06
  328.     .s get
  329. } {0.06}
  330. test scale-6.10 {ComputeFormat procedure} {
  331.     .s configure -from .001 -to .01 -resolution .001
  332.     .s set .006
  333.     .s get
  334. } {0.006}
  335. test scale-6.11 {ComputeFormat procedure} {
  336.     .s configure -from .0001 -to .001 -resolution .0001
  337.     .s set .0006
  338.     .s get
  339. } {0.0006}
  340. test scale-6.12 {ComputeFormat procedure} {
  341.     .s configure -from .00001 -to .0001 -resolution .00001
  342.     .s set .00006
  343.     .s get
  344. } {0.00006}
  345. test scale-6.13 {ComputeFormat procedure} {
  346.     .s configure -from .000001 -to .00001 -resolution .000001
  347.     .s set .000006
  348.     expr {[.s get] == 6.0e-06}
  349. } {1}
  350. test scale-6.14 {ComputeFormat procedure} {
  351.     .s configure -to .00001 -from .0001 -resolution .00001
  352.     .s set .00006
  353.     .s get
  354. } {0.00006}
  355. test scale-6.15 {ComputeFormat procedure} {
  356.     .s configure -to .000001 -from .00001 -resolution .000001
  357.     .s set .000006
  358.     expr {[.s get] == 6.0e-06}
  359. } {1}
  360. test scale-6.16 {ComputeFormat procedure} {
  361.     .s configure -from .00001 -to .0001 -resolution .00001 -digits 1
  362.     .s set .00006
  363.     expr {[.s get] == 6e-05}
  364. } {1}
  365. test scale-6.17 {ComputeFormat procedure} {
  366.     .s configure -from 10000000 -to 100000000 -resolution 10000000 -digits 3
  367.     .s set 49300000
  368.     .s get
  369. } {50000000}
  370. test scale-6.18 {ComputeFormat procedure} {
  371.     .s configure -length 200 -from 0 -to 10 -resolution 0 -digits 0
  372.     .s set .111111111
  373.     .s get
  374. } {0.11}
  375. test scale-6.19 {ComputeFormat procedure} {
  376.     .s configure -length 200 -from 1000 -to 1002 -resolution 0 -digits 0
  377.     .s set 1001.23456789
  378.     .s get
  379. } {1001.23}
  380. test scale-6.20 {ComputeFormat procedure} {
  381.     .s configure -length 200 -from 1000 -to 1001.8 -resolution 0 -digits 0
  382.     .s set 1001.23456789
  383.     .s get
  384. } {1001.235}
  385. test scale-7.1 {ComputeScaleGeometry procedure} {nonPortable fonts} {
  386.     catch {destroy .s}
  387.     scale .s -from 0 -to 10 -label "Short" -orient vertical -length 5i
  388.     pack .s
  389.     update
  390.     list [winfo reqwidth .s] [winfo reqheight .s]
  391. } {88 458}
  392. test scale-7.2 {ComputeScaleGeometry procedure} {fonts} {
  393.     catch {destroy .s}
  394.     scale .s -from 0 -to 1000 -label "Long string" -orient vertical -tick 200
  395.     pack .s
  396.     update
  397.     list [winfo reqwidth .s] [winfo reqheight .s]
  398. } {168 108}
  399. test scale-7.3 {ComputeScaleGeometry procedure} {fonts} {
  400.     catch {destroy .s}
  401.     scale .s -from 0 -to 1000 -orient vertical -showvalue 0 -width 10 
  402.     -sliderlength 10
  403.     pack .s
  404.     update
  405.     list [winfo reqwidth .s] [winfo reqheight .s]
  406. } {22 108}
  407. test scale-7.4 {ComputeScaleGeometry procedure} {fonts} {
  408.     catch {destroy .s}
  409.     scale .s -from 0 -to 1000 -orient vertical -showvalue 0 -bd 5 
  410.     -relief sunken
  411.     pack .s
  412.     update
  413.     list [winfo reqwidth .s] [winfo reqheight .s]
  414. } {39 114}
  415. test scale-7.5 {ComputeScaleGeometry procedure} {nonPortable fonts} {
  416.     catch {destroy .s}
  417.     scale .s -from 0 -to 10 -label "Short" -orient horizontal -length 5i
  418.     pack .s
  419.     update
  420.     list [winfo reqwidth .s] [winfo reqheight .s]
  421. } {458 61}
  422. test scale-7.6 {ComputeScaleGeometry procedure} {fonts} {
  423.     catch {destroy .s}
  424.     scale .s -from 0 -to 1000 -label "Long string" -orient horizontal 
  425.     -tick 500
  426.     pack .s
  427.     update
  428.     list [winfo reqwidth .s] [winfo reqheight .s]
  429. } {108 79}
  430. test scale-7.7 {ComputeScaleGeometry procedure} {fonts} {
  431.     catch {destroy .s}
  432.     scale .s -from 0 -to 1000 -orient horizontal -showvalue 0
  433.     pack .s
  434.     update
  435.     list [winfo reqwidth .s] [winfo reqheight .s]
  436. } {108 27}
  437. test scale-7.8 {ComputeScaleGeometry procedure} {
  438.     catch {destroy .s}
  439.     scale .s -from 0 -to 1000 -orient horizontal -showvalue 0 -bd 5 
  440.     -relief raised -highlightthickness 2
  441.     pack .s
  442.     update
  443.     list [winfo reqwidth .s] [winfo reqheight .s]
  444. } {114 39}
  445. test scale-8.1 {ScaleElement procedure} {fonts} {
  446.     catch {destroy .s}
  447.     scale .s -from 0 -to 100 -orient vertical -bd 1 -tick 20 -length 300
  448.     pack .s
  449.     .s set 30
  450.     update
  451.     list [.s identify 53 52] [.s identify 54 52] [.s identify 70 52] 
  452.     [.s identify 71 52]
  453. } {{} trough1 trough1 {}}
  454. test scale-8.2 {ScaleElement procedure} {fonts} {
  455.     catch {destroy .s}
  456.     scale .s -from 0 -to 100 -orient vertical -bd 1 -tick 20 -length 300
  457.     pack .s
  458.     .s set 30
  459.     update
  460.     list [.s identify 60 2] [.s identify 60 3] [.s identify 60 302] 
  461.     [.s identify 60 303]
  462. } {{} trough1 trough2 {}}
  463. test scale-8.3 {ScaleElement procedure} {fonts} {
  464.     catch {destroy .s}
  465.     scale .s -from 0 -to 100 -orient vertical -bd 1 -tick 20 -length 300
  466.     pack .s
  467.     .s set 30
  468.     update
  469.     list [.s identify 60 83] [.s identify 60 84] [.s identify 60 113] 
  470.     [.s identify 60 114] 
  471. } {trough1 slider slider trough2}
  472. test scale-8.4 {ScaleElement procedure} {
  473.     catch {destroy .s}
  474.     scale .s -from 0 -to 100 -orient vertical -bd 4 -width 10 
  475.     -highlightthickness 1 -length 300 -showvalue 0
  476.     pack .s
  477.     .s set 30
  478.     update
  479.     list [.s identify 4 40] [.s identify 5 40] [.s identify 22 40] 
  480.     [.s identify 23 40] 
  481. } {{} trough1 trough1 {}}
  482. test scale-8.5 {ScaleElement procedure} {fonts} {
  483.     catch {destroy .s}
  484.     scale .s -from 0 -to 100 -orient horizontal -bd 1 
  485.     -highlightthickness 2 -tick 20 -sliderlength 20 
  486.     -length 200 -label Test
  487.     pack .s
  488.     .s set 30
  489.     update
  490.     list [.s identify 150 36] [.s identify 150 37] [.s identify 150 53] 
  491.     [.s identify 150 54]
  492. } {{} trough2 trough2 {}}
  493. test scale-8.6 {ScaleElement procedure} {fonts} {
  494.     catch {destroy .s}
  495.     scale .s -from 0 -to 100 -orient horizontal -bd 2 
  496.     -highlightthickness 1 -tick 20 -length 200
  497.     pack .s
  498.     .s set 30
  499.     update
  500.     list [.s identify 150 20] [.s identify 150 21] [.s identify 150 39] 
  501.     [.s identify 150 40]
  502. } {{} trough2 trough2 {}}
  503. test scale-8.7 {ScaleElement procedure} {
  504.     catch {destroy .s}
  505.     scale .s -from 0 -to 100 -orient horizontal -bd 4 -highlightthickness 2 
  506.     -length 200 -width 10 -showvalue 0
  507.     pack .s
  508.     .s set 30
  509.     update
  510.     list [.s identify 30 5] [.s identify 30 6] [.s identify 30 23] 
  511.     [.s identify 30 24]
  512. } {{} trough1 trough1 {}}
  513. test scale-8.8 {ScaleElement procedure} {
  514.     catch {destroy .s}
  515.     scale .s -from 0 -to 100 -orient horizontal -bd 1 -highlightthickness 2 
  516.     -tick 20 -sliderlength 20 -length 200 -label Test -showvalue 0
  517.     pack .s
  518.     .s set 30
  519.     update
  520.     list [.s identify 2 28] [.s identify 3 28] [.s identify 202 28] 
  521.     [.s identify 203 28]
  522. } {{} trough1 trough2 {}}
  523. test scale-8.9 {ScaleElement procedure} {
  524.     catch {destroy .s}
  525.     scale .s -from 0 -to 100 -orient horizontal -bd 1 -highlightthickness 2 
  526.     -tick 20 -sliderlength 20 -length 200 -label Test -showvalue 0
  527.     pack .s
  528.     .s set 80
  529.     update
  530.     list [.s identify 145 28] [.s identify 146 28] [.s identify 165 28] 
  531.     [.s identify 166 28]
  532. } {trough1 slider slider trough2}
  533. catch {destroy .s}
  534. scale .s -from 0 -to 100 -sliderlength 10 -length 114 -bd 2
  535. pack .s
  536. update
  537. test scale-9.1 {PixelToValue procedure} {
  538.     .s get 46 0
  539. } 0
  540. test scale-9.2 {PixelToValue procedure} {
  541.     .s get -10 9
  542. } 0
  543. test scale-9.3 {PixelToValue procedure} {
  544.     .s get -10 12
  545. } 1
  546. test scale-9.4 {PixelToValue procedure} {
  547.     .s get -10 46
  548. } 35
  549. test scale-9.5 {PixelToValue procedure} {
  550.     .s get -10 110
  551. } 99
  552. test scale-9.6 {PixelToValue procedure} {
  553.     .s get -10 111
  554. } 100
  555. test scale-9.7 {PixelToValue procedure} {
  556.     .s get -10 112
  557. } 100
  558. test scale-9.8 {PixelToValue procedure} {
  559.     .s get -10 154
  560. } 100
  561. .s configure -orient horizontal
  562. update
  563. test scale-9.9 {PixelToValue procedure} {
  564.     .s get 76 152
  565. } 65
  566. test scale-10.1 {ValueToPixel procedure} {fonts} {
  567.     catch {destroy .s}
  568.     scale .s -from 0 -to 100 -sliderlength 20 -length 124 -bd 2 
  569.     -orient horizontal -label Test -tick 20
  570.     pack .s
  571.     update
  572.     list [.s coords -10] [.s coords 40] [.s coords 1000]
  573. } {{16 47} {56 47} {116 47}}
  574. test scale-10.2 {ValueToPixel procedure} {fonts} {
  575.     catch {destroy .s}
  576.     scale .s -from 100 -to 0 -sliderlength 20 -length 122 -bd 1 
  577.     -orient vertical -label Test -tick 20
  578.     pack .s
  579.     update
  580.     list [.s coords -10] [.s coords 40] [.s coords 1000]
  581. } {{62 114} {62 74} {62 14}}
  582. test scale-11.1 {ScaleEventProc procedure} {
  583.     proc killScale value {
  584. global x
  585. if {$value > 30} {
  586.     destroy .s1
  587.     lappend x [winfo exists .s1] [info commands .s1]
  588. }
  589.     }
  590.     catch {destroy .s1}
  591.     set x initial
  592.     scale .s1 -from 0 -to 100 -command killScale
  593.     .s1 set 20
  594.     pack .s1
  595.     update idletasks
  596.     lappend x [winfo exists .s1]
  597.     .s1 set 40
  598.     update idletasks
  599.     rename killScale {}
  600.     set x
  601. } {initial 1 0 {}}
  602. test scale-11.2 {ScaleEventProc procedure} {
  603.     deleteWindows
  604.     scale .s1 -bg #543210
  605.     rename .s1 .s2
  606.     set x {}
  607.     lappend x [winfo children .]
  608.     lappend x [.s2 cget -bg]
  609.     destroy .s1
  610.     lappend x [info command .s*] [winfo children .]
  611. } {.s1 #543210 {} {}}
  612. test scale-12.1 {ScaleCmdDeletedProc procedure} {
  613.     deleteWindows
  614.     scale .s1
  615.     rename .s1 {}
  616.     list [info command .s*] [winfo children .]
  617. } {{} {}}
  618. catch {destroy .s}
  619. scale .s -from 0 -to 100 -command {set x} -variable y
  620. pack .s
  621. update
  622. proc varTrace args {
  623.     global traceInfo
  624.     set traceInfo $args
  625. }
  626. test scale-13.1 {SetScaleValue procedure} {
  627.     set x xyzzy
  628.     .s set 44
  629.     set result [list $x $y]
  630.     update
  631.     lappend result $x $y
  632. } {xyzzy 44 44 44}
  633. test scale-13.2 {SetScaleValue procedure} {
  634.     .s set -3
  635.     .s get
  636. } 0
  637. test scale-13.3 {SetScaleValue procedure} {
  638.     .s set 105
  639.     .s get
  640. } 100
  641. .s configure -from 100 -to 0
  642. test scale-13.4 {SetScaleValue procedure} {
  643.     .s set -3
  644.     .s get
  645. } 0
  646. test scale-13.5 {SetScaleValue procedure} {
  647.     .s set 105
  648.     .s get
  649. } 100
  650. test scale-13.6 {SetScaleValue procedure} {
  651.     .s set 50
  652.     update
  653.     trace variable y w varTrace
  654.     set traceInfo empty
  655.     set x untouched
  656.     .s set 50
  657.     update
  658.     list $x $traceInfo
  659. } {untouched empty}
  660. catch {destroy .s}
  661. scale .s -from 0 -to 100 -sliderlength 10 -length 114 -bd 2 -orient horizontal
  662. pack .s
  663. update
  664. .s configure -resolution 4.0
  665. update
  666. test scale-14.1 {RoundToResolution procedure} {
  667.     .s get 84 152
  668. } 72
  669. test scale-14.2 {RoundToResolution procedure} {
  670.     .s get 86 152
  671. } 76
  672. .s configure -from 100 -to 0
  673. update
  674. test scale-14.3 {RoundToResolution procedure} {
  675.     .s get 84 152
  676. } 28
  677. test scale-14.4 {RoundToResolution procedure} {
  678.     .s get 86 152
  679. } 24
  680. .s configure -from -100 -to 0
  681. update
  682. test scale-14.5 {RoundToResolution procedure} {
  683.     .s get 84 152
  684. } -28
  685. test scale-14.6 {RoundToResolution procedure} {
  686.     .s get 86 152
  687. } -24
  688. .s configure -from 0 -to -100
  689. update
  690. test scale-14.7 {RoundToResolution procedure} {
  691.     .s get 84 152
  692. } -72
  693. test scale-14.8 {RoundToResolution procedure} {
  694.     .s get 86 152
  695. } -76
  696. .s configure -from 0 -to 2.25 -resolution 0
  697. update
  698. test scale-14.9 {RoundToResolution procedure} {
  699.     .s get 84 152
  700. } 1.64
  701. test scale-14.10 {RoundToResolution procedure} {
  702.     .s get 86 152
  703. } 1.69
  704. .s configure -from 0 -to 225 -resolution 0  -digits 5
  705. update
  706. test scale-14.11 {RoundToResolution procedure} {
  707.     .s get 84 152
  708. } 164.25
  709. test scale-14.12 {RoundToResolution procedure} {
  710.     .s get 86 152
  711. } 168.75
  712. test scale-15.1 {ScaleVarProc procedure} {
  713.     catch {destroy .s}
  714.     set y -130
  715.     scale .s -from 0 -to -200 -variable y -orient horizontal -length 150
  716.     pack .s
  717.     set y
  718. } -130
  719. test scale-15.2 {ScaleVarProc procedure} {
  720.     catch {destroy .s}
  721.     set y -130
  722.     scale .s -from -200 -to 0 -variable y -orient horizontal -length 150
  723.     pack .s
  724.     set y -87
  725.     .s get
  726. } -87
  727. test scale-15.3 {ScaleVarProc procedure} {
  728.     catch {destroy .s}
  729.     set y -130
  730.     scale .s -from -200 -to 0 -variable y -orient horizontal -length 150
  731.     pack .s
  732.     list [catch {set y 40q} msg] $msg [.s get]
  733. } {1 {can't set "y": can't assign non-numeric value to scale variable} -130}
  734. test scale-15.4 {ScaleVarProc procedure} {
  735.     catch {destroy .s}
  736.     set y 1
  737.     scale .s -from 1 -to 0 -variable y -orient horizontal -length 150
  738.     pack .s
  739.     list [catch {set y x} msg] $msg [.s get]
  740. } {1 {can't set "y": can't assign non-numeric value to scale variable} 1}
  741. test scale-15.5 {ScaleVarProc procedure, variable deleted} {
  742.     catch {destroy .s}
  743.     set y 6
  744.     scale .s -from 10 -to 0 -variable y -orient horizontal -length 150 
  745.     -command "set x"
  746.     pack .s
  747.     update
  748.     set x untouched
  749.     unset y
  750.     update
  751.     list [catch {set y} msg] $msg [.s get] $x
  752. } {0 6 6 untouched}
  753. test scale-15.6 {ScaleVarProc procedure, don't call -command} {
  754.     catch {destroy .s}
  755.     set y 6
  756.     scale .s -from 0 -to 100 -variable y -orient horizontal -length 150 
  757.     -command "set x"
  758.     pack .s
  759.     update
  760.     set x untouched
  761.     set y 60
  762.     update
  763.     list $x [.s get]
  764. } {untouched 60}
  765. set l [interp hidden]
  766. deleteWindows
  767. test scale-16.1 {scale widget vs hidden commands} {
  768.     catch {destroy .s}
  769.     scale .s
  770.     interp hide {} .s
  771.     destroy .s
  772.     list [winfo children .] [interp hidden]
  773. } [list {} $l]
  774. test scale-17.1 {bug fix 1786} {
  775.     # Perhaps x is set to {}, depending on what other tests have run.
  776.     # If x is unset, or set to something not convertable to a double,
  777.     # then the scale try to initialize its value with the contents
  778.     # of uninitialized memory.  Sometimes that causes an FPE.
  779.     set x {}
  780.     scale .s -from 100 -to 300
  781.     pack .s
  782.     update
  783.     .s configure -variable x   ;# CRASH! -> Floating point exception
  784.     # Bug 4833 changed the result to realize that x should pick up
  785.     # a value from the scale.  In an FPE occurs, it is due to the
  786.     # lack of errno being set to 0 by some libc's. (see bug 4942)
  787.     set x
  788. } {100}
  789. test scale-18.1 {DestroyScale, -cursor option [Bug: 3897]} {
  790.     catch {destroy .s}
  791.     scale .s -cursor trek
  792.     destroy .s
  793. } {}
  794. test scale-18.2 {Scale button 1 events [Bug 787065]} 
  795.     -setup {
  796.         catch {destroy .s}
  797.         set y 5
  798.         scale .s -from 0 -to 10 -variable y -orient horizontal -length 150
  799.         pack .s
  800.         tkwait visibility .s
  801.         set ::error {}
  802.         proc bgerror {args} {set ::error $args}
  803.     } 
  804.     -body {
  805.         list [catch {
  806.             event generate .s <1> -x 0 -y 0
  807.             event generate .s <ButtonRelease-1> -x 0 -y 0
  808.             update
  809.             set ::error
  810.         } msg] $msg
  811.     } 
  812.     -cleanup {
  813.         unset ::error
  814.         rename bgerror {}
  815.         catch {destroy .s}
  816.     } 
  817.     -result {0 {}}
  818. test scale-18.3 {Scale button 2 events [Bug 787065]} 
  819.     -setup {
  820.         catch {destroy .s}
  821.         set y 5
  822.         scale .s -from 0 -to 10 -variable y -orient horizontal -length 150
  823.         pack .s
  824.         tkwait visibility .s
  825.         set ::error {}
  826.         proc bgerror {args} {set ::error $args}
  827.     } 
  828.     -body {
  829.         list [catch {
  830.             event generate .s <2> -x 0 -y 0
  831.             event generate .s <ButtonRelease-2> -x 0 -y 0
  832.             update
  833.             set ::error
  834.         } msg] $msg
  835.     } 
  836.     -cleanup {
  837.         unset ::error
  838.         rename bgerror {}
  839.         catch {destroy .s}
  840.     } 
  841.     -result {0 {}}
  842. catch {destroy .s}
  843. option clear
  844. # cleanup
  845. ::tcltest::cleanupTests
  846. return