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

通讯编程

开发平台:

Visual C++

  1. # This file is a Tcl script to test out scrollbar widgets and
  2. # the "scrollbar" command of Tk.  It is organized in the standard
  3. # fashion for Tcl tests.
  4. #
  5. # Copyright (c) 1994 The Regents of the University of California.
  6. # Copyright (c) 1994-1997 Sun Microsystems, Inc.
  7. # Copyright (c) 1998-1999 by Scriptics Corporation.
  8. # All rights reserved.
  9. #
  10. # RCS: @(#) $Id: scrollbar.test,v 1.9.2.2 2006/03/14 06:03:57 dgp Exp $
  11. package require tcltest 2.1
  12. namespace import -force tcltest::configure
  13. namespace import -force tcltest::testsDirectory
  14. configure -testdir [file join [pwd] [file dirname [info script]]]
  15. configure -loadfile [file join [testsDirectory] constraints.tcl]
  16. tcltest::loadTestedCommands
  17. ## testmetrics is a win/mac only test command
  18. ##
  19. testConstraint testmetrics [llength [info commands testmetrics]]
  20. update
  21. proc scroll args {
  22.     global scrollInfo
  23.     set scrollInfo $args
  24. }
  25. proc getTroughSize {w} {
  26.     if {[testConstraint testmetrics]} {
  27. if [string match v* [$w cget -orient]] {
  28.     return [expr [winfo height $w] - 2*[testmetrics cyvscroll $w]]
  29. } else {
  30.     return [expr [winfo width $w] - 2*[testmetrics cxhscroll $w]]
  31. }     
  32.     } else {
  33. if [string match v* [$w cget -orient]] {
  34.     return [expr [winfo height $w] 
  35.     - ([winfo width $w] 
  36. - [$w cget -highlightthickness] 
  37. - [$w cget -bd] + 1)*2]
  38. } else {
  39.     return [expr [winfo width $w] 
  40.     - ([winfo height $w] 
  41. - [$w cget -highlightthickness] 
  42. - [$w cget -bd] + 1)*2]
  43. }
  44.     }
  45. }
  46. # XXX Note: this test file is woefully incomplete.  Right now there are
  47. # only bits and pieces of tests.  Please make this file more complete
  48. # as you fix bugs and add features.
  49. foreach {width height} [wm minsize .] {
  50.     set height [expr ($height < 200) ? 200 : $height]
  51.     set width [expr ($width < 1) ? 1 : $width]
  52. frame .f -height $height -width $width
  53. pack .f -side left
  54. scrollbar .s
  55. pack .s -side right -fill y
  56. update
  57. set i 1
  58. foreach test {
  59.     {-activebackground #ff0000 #ff0000 non-existent
  60.     {unknown color name "non-existent"}}
  61.     {-activerelief sunken sunken non-existent
  62.     {bad relief type "non-existent": must be flat, groove, raised, ridge, solid, or sunken}}
  63.     {-background #ff0000 #ff0000 non-existent
  64.     {unknown color name "non-existent"}}
  65.     {-bd 4 4 badValue {bad screen distance "badValue"}}
  66.     {-bg #ff0000 #ff0000 non-existent
  67.     {unknown color name "non-existent"}}
  68.     {-borderwidth 1.3 1 badValue {bad screen distance "badValue"}}
  69.     {-command "set x" {set x} {} {}}
  70.     {-elementborderwidth 4 4 badValue {bad screen distance "badValue"}}
  71.     {-cursor arrow arrow badValue {bad cursor spec "badValue"}}
  72.     {-highlightbackground #112233 #112233 ugly {unknown color name "ugly"}}
  73.     {-highlightcolor #123456 #123456 bogus {unknown color name "bogus"}}
  74.     {-highlightthickness 6 6 bogus {bad screen distance "bogus"}}
  75.     {-highlightthickness -2 0 {} {}}
  76.     {-jump true 1 silly {expected boolean value but got "silly"}}
  77.     {-orient horizontal horizontal badValue
  78.     {bad orientation "badValue": must be vertical or horizontal}}
  79.     {-orient horizontal horizontal bogus {bad orientation "bogus": must be vertical or horizontal}}
  80.     {-relief ridge ridge badValue {bad relief type "badValue": must be flat, groove, raised, ridge, solid, or sunken}}
  81.     {-repeatdelay 140 140 129.3 {expected integer but got "129.3"}}
  82.     {-repeatinterval 140 140 129.3 {expected integer but got "129.3"}}
  83.     {-takefocus "any string" "any string" {} {}}
  84.     {-troughcolor #432 #432 lousy {unknown color name "lousy"}}
  85.     {-width 32 32 badValue {bad screen distance "badValue"}}
  86. } {
  87.     set name [lindex $test 0]
  88.     test scrollbar-1.1 {configuration options} {
  89. .s configure $name [lindex $test 1]
  90. lindex [.s configure $name] 4
  91.     } [lindex $test 2]
  92.     incr i
  93.     if {[lindex $test 3] != ""} {
  94. test scrollbar-1.2 {configuration options} {
  95.     list [catch {.s configure $name [lindex $test 3]} msg] $msg
  96. } [list 1 [lindex $test 4]]
  97.     }
  98.     .s configure $name [lindex [.s configure $name] 3]
  99.     incr i
  100. }
  101. destroy .s
  102. test scrollbar-2.1 {Tk_ScrollbarCmd procedure} {
  103.     list [catch {scrollbar} msg] $msg
  104. } {1 {wrong # args: should be "scrollbar pathName ?options?"}}
  105. test scrollbar-2.2 {Tk_ScrollbarCmd procedure} {
  106.     list [catch {scrollbar gorp} msg] $msg
  107. } {1 {bad window path name "gorp"}}
  108. test scrollbar-2.3 {Tk_ScrollbarCmd procedure} {
  109.     scrollbar .s
  110.     set x "[winfo class .s] [info command .s]"
  111.     destroy .s
  112.     set x
  113. } {Scrollbar .s}
  114. test scrollbar-2.4 {Tk_ScrollbarCmd procedure} {
  115.     list [catch {scrollbar .s -gorp blah} msg] $msg [winfo exists .s] 
  116.     [info command .s]
  117. } {1 {unknown option "-gorp"} 0 {}}
  118. test scrollbar-2.5 {Tk_ScrollbarCmd procedure} {
  119.     set x [scrollbar .s]
  120.     destroy .s
  121.     set x
  122. } {.s}
  123. scrollbar .s -orient vertical -command scroll -highlightthickness 2 -bd 2
  124. pack .s -side right -fill y
  125. update
  126. test scrollbar-3.1 {ScrollbarWidgetCmd procedure} {
  127.     list [catch {.s} msg] $msg
  128. } {1 {wrong # args: should be ".s option ?arg arg ...?"}}
  129. test scrollbar-3.2 {ScrollbarWidgetCmd procedure, "cget" option} {
  130.     list [catch {.s cget} msg] $msg
  131. } {1 {wrong # args: should be ".s cget option"}}
  132. test scrollbar-3.3 {ScrollbarWidgetCmd procedure, "cget" option} {
  133.     list [catch {.s cget -gorp} msg] $msg
  134. } {1 {unknown option "-gorp"}}
  135. test scrollbar-3.4 {ScrollbarWidgetCmd procedure, "activate" option} {
  136.     list [catch {.s activate a b} msg] $msg
  137. } {1 {wrong # args: should be ".s activate element"}}
  138. test scrollbar-3.5 {ScrollbarWidgetCmd procedure, "activate" option} {
  139.     .s activate arrow1
  140.     .s activate
  141. } {arrow1}
  142. test scrollbar-3.6 {ScrollbarWidgetCmd procedure, "activate" option} {
  143.     .s activate slider
  144.     .s activate
  145. } {slider}
  146. test scrollbar-3.7 {ScrollbarWidgetCmd procedure, "activate" option} {
  147.     .s activate arrow2
  148.     .s activate
  149. } {arrow2}
  150. test scrollbar-3.8 {ScrollbarWidgetCmd procedure, "activate" option} {
  151.     .s activate s
  152.     .s activate {}
  153.     .s activate
  154. } {}
  155. test scrollbar-3.9 {ScrollbarWidgetCmd procedure, "activate" option} {
  156.     list [catch {.s activate trough1} msg] $msg
  157. } {0 {}}
  158. test scrollbar-3.10 {ScrollbarWidgetCmd procedure, "cget" option} {
  159.     list [catch {.s cget -orient} msg] $msg
  160. } {0 vertical}
  161. scrollbar .s2
  162. test scrollbar-3.11 {ScrollbarWidgetCmd procedure, "cget" option} {pcOnly} {
  163.     list [catch {.s2 cget -bd} msg] $msg
  164. } {0 0}
  165. test scrollbar-3.12 {ScrollbarWidgetCmd procedure, "cget" option} {macOrUnix} {
  166.     list [catch {.s2 cget -bd} msg] $msg
  167. } {0 2}
  168. test scrollbar-3.13 {ScrollbarWidgetCmd procedure, "cget" option} {pcOnly} {
  169.     list [catch {.s2 cget -highlightthickness} msg] $msg
  170. } {0 0}
  171. test scrollbar-3.14 {ScrollbarWidgetCmd procedure, "cget" option} {macOrUnix} {
  172.     list [catch {.s2 cget -highlightthickness} msg] $msg
  173. } {0 1}
  174. destroy .s2
  175. test scrollbar-3.15 {ScrollbarWidgetCmd procedure, "configure" option} {
  176.     llength [.s configure]
  177. } {20}
  178. test scrollbar-3.16 {ScrollbarWidgetCmd procedure, "configure" option} {
  179.     list [catch {.s configure -bad} msg] $msg
  180. } {1 {unknown option "-bad"}}
  181. test scrollbar-3.17 {ScrollbarWidgetCmd procedure, "configure" option} {
  182.     .s configure -orient
  183. } {-orient orient Orient vertical vertical}
  184. test scrollbar-3.18 {ScrollbarWidgetCmd procedure, "configure" option} {
  185.     .s configure -orient horizontal
  186.     set x [.s cget -orient]
  187.     .s configure -orient vertical
  188.     set x
  189. } {horizontal}
  190. test scrollbar-3.19 {ScrollbarWidgetCmd procedure, "configure" option} {
  191.     list [catch {.s configure -bad worse} msg] $msg
  192. } {1 {unknown option "-bad"}}
  193. test scrollbar-3.20 {ScrollbarWidgetCmd procedure, "delta" option} {
  194.     list [catch {.s delta 24} msg] $msg
  195. } {1 {wrong # args: should be ".s delta xDelta yDelta"}}
  196. test scrollbar-3.21 {ScrollbarWidgetCmd procedure, "delta" option} {
  197.     list [catch {.s delta 24 35 42} msg] $msg
  198. } {1 {wrong # args: should be ".s delta xDelta yDelta"}}
  199. test scrollbar-3.22 {ScrollbarWidgetCmd procedure, "delta" option} {
  200.     list [catch {.s delta silly 24} msg] $msg
  201. } {1 {expected integer but got "silly"}}
  202. test scrollbar-3.23 {ScrollbarWidgetCmd procedure, "delta" option} {
  203.     list [catch {.s delta 18 xxyz} msg] $msg
  204. } {1 {expected integer but got "xxyz"}}
  205. test scrollbar-3.24 {ScrollbarWidgetCmd procedure, "delta" option} {
  206.     list [catch {.s delta 18 xxyz} msg] $msg
  207. } {1 {expected integer but got "xxyz"}}
  208. test scrollbar-3.25 {ScrollbarWidgetCmd procedure, "delta" option} {
  209.     .s delta 20 0
  210. } {0}
  211. test scrollbar-3.26 {ScrollbarWidgetCmd procedure, "delta" option} {
  212.     .s delta 0 20
  213. } [format %.6g [expr 20.0/([getTroughSize .s]-1)]]
  214. test scrollbar-3.27 {ScrollbarWidgetCmd procedure, "delta" option} {
  215.     .s delta 0 -20
  216. } [format %.6g [expr -20.0/([getTroughSize .s]-1)]]
  217. test scrollbar-3.28 {ScrollbarWidgetCmd procedure, "delta" option} {
  218.     toplevel .t -width 250 -height 100
  219.     wm geom .t +0+0
  220.     scrollbar .t.s -orient horizontal -borderwidth 2
  221.     place .t.s -width 201
  222.     update
  223.     set result [list [.t.s delta 0 20] 
  224.     [.t.s delta [expr [getTroughSize .t.s] - 1] 0]]
  225.     destroy .t
  226.     set result
  227. } {0 1}
  228. test scrollbar-3.29 {ScrollbarWidgetCmd procedure, "fraction" option} {
  229.     list [catch {.s fraction 24} msg] $msg
  230. } {1 {wrong # args: should be ".s fraction x y"}}
  231. test scrollbar-3.30 {ScrollbarWidgetCmd procedure, "fraction" option} {
  232.     list [catch {.s fraction 24 30 32} msg] $msg
  233. } {1 {wrong # args: should be ".s fraction x y"}}
  234. test scrollbar-3.31 {ScrollbarWidgetCmd procedure, "fraction" option} {
  235.     list [catch {.s fraction silly 24} msg] $msg
  236. } {1 {expected integer but got "silly"}}
  237. test scrollbar-3.32 {ScrollbarWidgetCmd procedure, "fraction" option} {
  238.     list [catch {.s fraction 24 bogus} msg] $msg
  239. } {1 {expected integer but got "bogus"}}
  240. test scrollbar-3.33 {ScrollbarWidgetCmd procedure, "fraction" option} {
  241.     .s fraction 0 0
  242. } {0}
  243. test scrollbar-3.34 {ScrollbarWidgetCmd procedure, "fraction" option} {
  244.     .s fraction 0 1000
  245. } {1}
  246. test scrollbar-3.35 {ScrollbarWidgetCmd procedure, "fraction" option} {
  247.     .s fraction 4 21
  248. } [format %.6g [expr (21.0 - ([winfo height .s] - [getTroughSize .s])/2.0) 
  249.        /([getTroughSize .s] - 1)]]
  250. test scrollbar-3.36 {ScrollbarWidgetCmd procedure, "fraction" option} {unixOnly} {
  251.     .s fraction 4 179
  252. } {1}
  253. test scrollbar-3.37 {ScrollbarWidgetCmd procedure, "fraction" option} {testmetrics} {
  254.     .s fraction 4 [expr 200 - [testmetrics cyvscroll .s]]
  255. } {1}
  256. test scrollbar-3.38 {ScrollbarWidgetCmd procedure, "fraction" option} {unixOnly} {
  257.     .s fraction 4 178
  258. } {0.993711}
  259. test scrollbar-3.39 {ScrollbarWidgetCmd procedure, "fraction" option} {testmetrics pcOnly} {
  260.     expr [.s fraction 4 [expr 200 - [testmetrics cyvscroll .s] - 2]] 
  261. == [format %g [expr (200.0 - [testmetrics cyvscroll .s]*2 - 2) 
  262.    / ($height - 1 - [testmetrics cyvscroll .s]*2)]]
  263. } 1
  264. test scrollbar-3.40 {ScrollbarWidgetCmd procedure, "fraction" option} {macOnly} {
  265.     .s fraction 4 178
  266. } {0.97006}
  267. toplevel .t -width 250 -height 100
  268. wm geom .t +0+0
  269. scrollbar .t.s -orient horizontal -borderwidth 2
  270. place .t.s -width 201
  271. update
  272. test scrollbar-3.41 {ScrollbarWidgetCmd procedure, "fraction" option} {
  273.     .t.s fraction 100 0
  274. } {0.5}
  275. if {[testConstraint testmetrics]} {
  276.     place configure .t.s -width [expr 2*[testmetrics cxhscroll .t.s]+1]
  277. } else {
  278.     place configure .t.s -width [expr [winfo reqwidth .t.s] - 4]
  279. }
  280. update
  281. test scrollbar-3.42 {ScrollbarWidgetCmd procedure, "fraction" option} {
  282.     .t.s fraction 100 0
  283. } {0}
  284. destroy .t
  285. test scrollbar-3.43 {ScrollbarWidgetCmd procedure, "get" option} {
  286.     list [catch {.s get a} msg] $msg
  287. } {1 {wrong # args: should be ".s get"}}
  288. test scrollbar-3.44 {ScrollbarWidgetCmd procedure, "get" option} {
  289.     .s set 100 10 13 14
  290.     .s get
  291. } {100 10 13 14}
  292. test scrollbar-3.45 {ScrollbarWidgetCmd procedure, "get" option} {
  293.     .s set 0.6 0.8
  294.     set result {}
  295.     foreach element [.s get] {
  296. lappend result [format %.1f $element]
  297.     }
  298.     set result
  299. } {0.6 0.8}
  300. test scrollbar-3.46 {ScrollbarWidgetCmd procedure, "identify" option} {
  301.     list [catch {.s identify 0} msg] $msg
  302. } {1 {wrong # args: should be ".s identify x y"}}
  303. test scrollbar-3.47 {ScrollbarWidgetCmd procedure, "identify" option} {
  304.     list [catch {.s identify 0 0 1} msg] $msg
  305. } {1 {wrong # args: should be ".s identify x y"}}
  306. test scrollbar-3.48 {ScrollbarWidgetCmd procedure, "identify" option} {
  307.     list [catch {.s identify bogus 2} msg] $msg
  308. } {1 {expected integer but got "bogus"}}
  309. test scrollbar-3.49 {ScrollbarWidgetCmd procedure, "identify" option} {
  310.     list [catch {.s identify -1 bogus} msg] $msg
  311. } {1 {expected integer but got "bogus"}}
  312. test scrollbar-3.50 {ScrollbarWidgetCmd procedure, "identify" option} {
  313.     .s identify 5 5
  314. } {arrow1}
  315. test scrollbar-3.51 {ScrollbarWidgetCmd procedure, "identify" option} {
  316.     .s identify 5 35
  317. } {trough1}
  318. test scrollbar-3.52 {ScrollbarWidgetCmd procedure, "identify" option} {
  319.     .s set .3 .6
  320.     .s identify 5 80
  321. } {slider}
  322. test scrollbar-3.53 {ScrollbarWidgetCmd procedure, "identify" option} {
  323.     .s identify 5 145
  324. } {trough2}
  325. test scrollbar-3.54 {ScrollbarWidgetCmd procedure, "identify" option} {unixOrPc} {
  326.     .s identify 5 195
  327. } {arrow2}
  328. test scrollbar-3.55 {ScrollbarWidgetCmd procedure, "identify" option} {macOnly} {
  329.     .s identify 5 195
  330. } {}
  331. test scrollbar-3.56 {ScrollbarWidgetCmd procedure, "identify" option} {unixOnly} {
  332.     .s identify 0 0
  333. } {}
  334. test scrollbar-3.57 {ScrollbarWidgetCmd procedure, "set" option} {
  335.     list [catch {.s set abc def} msg] $msg
  336. } {1 {expected floating-point number but got "abc"}}
  337. test scrollbar-3.58 {ScrollbarWidgetCmd procedure, "set" option} {
  338.     list [catch {.s set 0.6 def} msg] $msg
  339. } {1 {expected floating-point number but got "def"}}
  340. test scrollbar-3.59 {ScrollbarWidgetCmd procedure, "set" option} {
  341.     .s set -.2 .3
  342.     set result {}
  343.     foreach element [.s get] {
  344. lappend result [format %.1f $element]
  345.     }
  346.     set result
  347. } {0.0 0.3}
  348. test scrollbar-3.60 {ScrollbarWidgetCmd procedure, "set" option} {
  349.     .s set 1.1 .4 
  350.     .s get
  351. } {1.0 1.0}
  352. test scrollbar-3.61 {ScrollbarWidgetCmd procedure, "set" option} {
  353.     .s set .5 -.3 
  354.     .s get
  355. } {0.5 0.5}
  356. test scrollbar-3.62 {ScrollbarWidgetCmd procedure, "set" option} {
  357.     .s set .5 87 
  358.     .s get
  359. } {0.5 1.0}
  360. test scrollbar-3.63 {ScrollbarWidgetCmd procedure, "set" option} {
  361.     .s set .4 .3
  362.     set result {}
  363.     foreach element [.s get] {
  364. lappend result [format %.1f $element]
  365.     }
  366.     set result
  367. } {0.4 0.4}
  368. test scrollbar-3.64 {ScrollbarWidgetCmd procedure, "set" option} {
  369.     list [catch {.s set abc def ghi jkl} msg] $msg
  370. } {1 {expected integer but got "abc"}}
  371. test scrollbar-3.65 {ScrollbarWidgetCmd procedure, "set" option} {
  372.     list [catch {.s set 1 def ghi jkl} msg] $msg
  373. } {1 {expected integer but got "def"}}
  374. test scrollbar-3.66 {ScrollbarWidgetCmd procedure, "set" option} {
  375.     list [catch {.s set 1 2 ghi jkl} msg] $msg
  376. } {1 {expected integer but got "ghi"}}
  377. test scrollbar-3.67 {ScrollbarWidgetCmd procedure, "set" option} {
  378.     list [catch {.s set 1 2 3 jkl} msg] $msg
  379. } {1 {expected integer but got "jkl"}}
  380. test scrollbar-3.68 {ScrollbarWidgetCmd procedure, "set" option} {
  381.     .s set -10 50 20 30 
  382.     .s get
  383. } {0 50 0 0}
  384. test scrollbar-3.69 {ScrollbarWidgetCmd procedure, "set" option} {
  385.     .s set 100 -10 20 30 
  386.     .s get
  387. } {100 0 20 30}
  388. test scrollbar-3.70 {ScrollbarWidgetCmd procedure, "set" option} {
  389.     .s set 100 50 30 20 
  390.     .s get
  391. } {100 50 30 30}
  392. test scrollbar-3.71 {ScrollbarWidgetCmd procedure, "set" option} {
  393.     list [catch {.s set 1 2 3} msg] $msg
  394. } {1 {wrong # args: should be ".s set firstFraction lastFraction" or ".s set totalUnits windowUnits firstUnit lastUnit"}}
  395. test scrollbar-3.72 {ScrollbarWidgetCmd procedure, "set" option} {
  396.     list [catch {.s set 1 2 3 4 5} msg] $msg
  397. } {1 {wrong # args: should be ".s set firstFraction lastFraction" or ".s set totalUnits windowUnits firstUnit lastUnit"}}
  398. test scrollbar-3.73 {ScrollbarWidgetCmd procedure} {
  399.     list [catch {.s bogus} msg] $msg
  400. } {1 {bad option "bogus": must be activate, cget, configure, delta, fraction, get, identify, or set}}
  401. test scrollbar-3.74 {ScrollbarWidgetCmd procedure} {
  402.     list [catch {.s c} msg] $msg
  403. } {1 {bad option "c": must be activate, cget, configure, delta, fraction, get, identify, or set}}
  404. test scrollbar-4.1 {ScrollbarEventProc procedure} {
  405.     catch {destroy .s1}
  406.     scrollbar .s1 -bg #543210
  407.     rename .s1 .s2
  408.     set x {}
  409.     lappend x [winfo exists .s1]
  410.     lappend x [.s2 cget -bg]
  411.     destroy .s1
  412.     lappend x [info command .s?] [winfo exists .s1] [winfo exists .s2]
  413. } {1 #543210 {} 0 0}
  414. test scrollbar-5.1 {ScrollbarCmdDeletedProc procedure} {
  415.     catch {destroy .s1}
  416.     scrollbar .s1
  417.     rename .s1 {}
  418.     list [info command .s?] [winfo exists .s1]
  419. } {{} 0}
  420. catch {destroy .s}
  421. scrollbar .s -orient vertical -relief sunken -bd 2 -highlightthickness 2
  422. pack .s -side left -fill y
  423. .s set .2 .4
  424. update
  425. test scrollbar-6.1 {ScrollbarPosition procedure} {unixOnly} {
  426.     .s identify 8 3
  427. } {}
  428. test scrollbar-6.2 {ScrollbarPosition procedure} {macOnly} {
  429.     .s identify 8 3
  430. } {arrow1}
  431. test scrollbar-6.3 {ScrollbarPosition procedure} {macOrUnix} {
  432.     .s identify 8 196
  433. } {}
  434. test scrollbar-6.4 {ScrollbarPosition procedure} {unixOnly} {
  435.     .s identify 3 100
  436. } {}
  437. test scrollbar-6.5 {ScrollbarPosition procedure} {macOnly} {
  438.     .s identify 3 100
  439. } {trough2}
  440. test scrollbar-6.6 {ScrollbarPosition procedure} {macOrUnix} {
  441.     .s identify 19 100
  442. } {}
  443. test scrollbar-6.7 {ScrollbarPosition procedure} {
  444.     .s identify [expr [winfo width .s] / 2] -1
  445. } {}
  446. test scrollbar-6.8 {ScrollbarPosition procedure} {
  447.     .s identify [expr [winfo width .s] / 2] [expr [winfo height .s]]
  448. } {}
  449. test scrollbar-6.9 {ScrollbarPosition procedure} {
  450.     .s identify -1 [expr [winfo height .s] / 2]
  451. } {}
  452. test scrollbar-6.10 {ScrollbarPosition procedure} {
  453.     .s identify [winfo width .s] [expr [winfo height .s] / 2]
  454. } {}
  455. test scrollbar-6.11 {ScrollbarPosition procedure} {macOrUnix} {
  456.     .s identify 8 4
  457. } {arrow1}
  458. test scrollbar-6.12 {ScrollbarPosition procedure} {unixOnly} {
  459.     .s identify 8 19
  460. } {arrow1}
  461. test scrollbar-6.13 {ScrollbarPosition procedure} {macOnly} {
  462.     .s identify 8 19
  463. } {trough1}
  464. test scrollbar-6.14 {ScrollbarPosition procedure} {pcOnly} {
  465.     .s identify [expr [winfo width .s] / 2] 0 
  466. } {arrow1}
  467. test scrollbar-6.15 {ScrollbarPosition procedure} {testmetrics pcOnly} {
  468.     .s identify [expr [winfo width .s] / 2] [expr [testmetrics cyvscroll .s] - 1]
  469. } {arrow1}
  470. test scrollbar-6.16 {ScrollbarPosition procedure} {macOrUnix} {
  471.     .s identify 8 20
  472. } {trough1}
  473. test scrollbar-6.17 {ScrollbarPosition procedure} {macOrUnix nonPortable} {
  474.     # Don't know why this is non-portable, but it doesn't work on
  475.     # some platforms.
  476.     .s identify 8 51
  477. } {trough1}
  478. test scrollbar-6.18 {ScrollbarPosition procedure} {testmetrics pcOnly} {
  479.     .s identify [expr [winfo width .s] / 2] [testmetrics cyvscroll .s]
  480. } {trough1}
  481. test scrollbar-6.19 {ScrollbarPosition procedure} {testmetrics pcOnly} {
  482.     .s identify [expr [winfo width .s] / 2] [expr int(.2 / [.s delta 0 1]) 
  483. + [testmetrics cyvscroll .s] - 1]
  484. } {trough1}
  485. test scrollbar-6.20 {ScrollbarPosition procedure} {macOrUnix} {
  486.     .s identify 8 52
  487. } {slider}
  488. test scrollbar-6.21 {ScrollbarPosition procedure} {macOrUnix nonPortable} {
  489.     # Don't know why this is non-portable, but it doesn't work on
  490.     # some platforms.
  491.     .s identify 8 83
  492. } {slider}
  493. test scrollbar-6.22 {ScrollbarPosition procedure} {testmetrics pcOnly} {
  494.     .s identify [expr [winfo width .s] / 2] 
  495. [expr int(.2 / [.s delta 0 1] + 0.5) + [testmetrics cyvscroll .s]]
  496. } {slider}
  497. test scrollbar-6.23 {ScrollbarPosition procedure} {testmetrics pcOnly} {
  498.     .s identify [expr [winfo width .s] / 2] [expr int(.4 / [.s delta 0 1]) 
  499.  + [testmetrics cyvscroll -s] - 1]
  500. } {slider}
  501. test scrollbar-6.24 {ScrollbarPosition procedure} {macOrUnix} {
  502.     .s identify 8 84
  503. } {trough2}
  504. test scrollbar-6.25 {ScrollbarPosition procedure} {unixOnly} {
  505.     .s identify 8 179
  506. } {trough2}
  507. test scrollbar-6.26 {ScrollbarPosition procedure} {macOnly} {
  508.     .s identify 8 179
  509. } {arrow2}
  510. test scrollbar-6.27 {ScrollbarPosition procedure} {testmetrics pcOnly knownBug} {
  511.     # This asks for 8,21, which is actually the slider, but there is a
  512.     # bug in that GetSystemMetrics(SM_CYVTHUMB) actually returns a value
  513.     # that is larger than the thumb displayed, skewing the ability to
  514.     # calculate the trough2 area correctly (Win2k).  -- hobbs
  515.     .s identify [expr [winfo width .s] / 2] [expr int(.4 / [.s delta 0 1]) 
  516.  + [testmetrics cyvscroll .s]]
  517. } {trough2}
  518. test scrollbar-6.28 {ScrollbarPosition procedure} {testmetrics pcOnly} {
  519.     .s identify [expr [winfo width .s] / 2] [expr [winfo height .s] 
  520.  - [testmetrics cyvscroll .s] - 1]
  521. } {trough2}
  522. test scrollbar-6.29 {ScrollbarPosition procedure} {macOrUnix} {
  523.     .s identify 8 180
  524. } {arrow2}
  525. test scrollbar-6.30 {ScrollbarPosition procedure} {unixOnly} {
  526.     .s identify 8 195
  527. } {arrow2}
  528. test scrollbar-6.31 {ScrollbarPosition procedure} {macOnly} {
  529.     .s identify 8 195
  530. } {}
  531. test scrollbar-6.32 {ScrollbarPosition procedure} {testmetrics pcOnly} {
  532.     .s identify [expr [winfo width .s] / 2]  [expr [winfo height .s] 
  533.   - [testmetrics cyvscroll .s]]
  534. } {arrow2}
  535. test scrollbar-6.33 {ScrollbarPosition procedure} {pcOnly} {
  536.     .s identify [expr [winfo width .s] / 2] [expr [winfo height .s] - 1]
  537. } {arrow2}
  538. test scrollbar-6.34 {ScrollbarPosition procedure} {macOrUnix} {
  539.     .s identify 4 100
  540. } {trough2}
  541. test scrollbar-6.35 {ScrollbarPosition procedure} {unixOnly} {
  542.     .s identify 18 100
  543. } {trough2}
  544. test scrollbar-6.36 {ScrollbarPosition procedure} {macOnly} {
  545.     .s identify 18 100
  546. } {}
  547. test scrollbar-6.37 {ScrollbarPosition procedure} {pcOnly} {
  548.     .s identify 0 100
  549. } {trough2}
  550. test scrollbar-6.38 {ScrollbarPosition procedure} {pcOnly} {
  551.     .s identify [expr [winfo width .s] - 1] 100
  552. } {trough2}
  553. catch {destroy .t}
  554. toplevel .t -width 250 -height 150
  555. wm geometry .t +0+0
  556. scrollbar .t.s -orient horizontal -relief sunken -bd 2 -highlightthickness 2
  557. place .t.s -width 200
  558. .t.s set .2 .4
  559. update
  560. test scrollbar-6.39 {ScrollbarPosition procedure} {macOrUnix} {
  561.     .t.s identify 4 8
  562. } {arrow1}
  563. test scrollbar-6.40 {ScrollbarPosition procedure} {pcOnly} {
  564.     .t.s identify 0 [expr [winfo height .t.s] / 2]
  565. } {arrow1}
  566. test scrollbar-6.41 {ScrollbarPosition procedure} {unixOnly} {
  567.     .t.s identify 82 8
  568. } {slider}
  569. test scrollbar-6.42 {ScrollbarPosition procedure} {macOnly} {
  570.     .t.s identify 82 8
  571. } {}
  572. test scrollbar-6.43 {ScrollbarPosition procedure} {testmetrics pcOnly} {
  573.     .t.s identify [expr int(.4 / [.t.s delta 1 0]) + [testmetrics cxhscroll .t.s] 
  574.        - 1] [expr [winfo height .t.s] / 2] 
  575. } {slider}
  576. test scrollbar-6.44 {ScrollbarPosition procedure} {unixOnly} {
  577.     .t.s identify 100 18
  578. } {trough2}
  579. test scrollbar-6.45 {ScrollbarPosition procedure} {macOnly} {
  580.     .t.s identify 100 18
  581. } {}
  582. test scrollbar-6.46 {ScrollbarPosition procedure} {pcOnly} {
  583.     .t.s identify 100 [expr [winfo height .t.s] - 1]
  584. } {trough2}
  585. test scrollbar-7.1 {EventuallyRedraw} {
  586.     .s configure -orient horizontal
  587.     update
  588.     set result [.s cget -orient]
  589.     .s configure -orient vertical
  590.     update
  591.     lappend result [.s cget -orient]
  592. } {horizontal vertical}
  593. catch {destroy .t}
  594. toplevel .t
  595. wm geometry .t +0+0
  596. test scrollbar-8.1 {TkScrollbarEventProc: recursive deletion} {
  597.     proc doit {args} { destroy .t.f }
  598.     proc bgerror {args} {}
  599.     frame .t.f
  600.     scrollbar .t.f.s -command doit
  601.     pack .t.f -fill both -expand 1
  602.     pack .t.f.s -fill y -expand 1 -side right
  603.     wm geometry .t 100x100
  604.     .t.f.s set 0 .5
  605.     update
  606.     set result [winfo exists .t.f.s]
  607.     event generate .t.f.s <ButtonPress> -button 1 -x [expr [winfo width .t.f.s] / 2] -y 5
  608.     event generate .t <ButtonRelease> -button 1
  609.     update
  610.     lappend result [winfo exists .t.f.s] [winfo exists .t.f]
  611.     rename bgerror {}
  612.     set result
  613. } {1 0 0}
  614. test scrollbar-8.2 {TkScrollbarEventProc: recursive deletion} {
  615.     proc doit {args} { destroy .t.f.s }
  616.     proc bgerror {args} {}
  617.     frame .t.f
  618.     scrollbar .t.f.s -command doit
  619.     pack .t.f -fill both -expand 1
  620.     pack .t.f.s -fill y -expand 1 -side right
  621.     wm geometry .t 100x100
  622.     .t.f.s set 0 .5
  623.     update
  624.     set result [winfo exists .t.f.s]
  625.     event generate .t.f.s <ButtonPress> -button 1 -x [expr [winfo width .t.f.s] / 2] -y 5
  626.     event generate .t.f <ButtonRelease> -button 1
  627.     update
  628.     lappend result [winfo exists .t.f.s] [winfo exists .t.f]
  629.     rename bgerror {}
  630.     set result
  631. } {1 0 1}
  632. set l [interp hidden]
  633. deleteWindows
  634. test scrollbar-9.1 {scrollbar widget vs hidden commands} {
  635.     catch {destroy .s}
  636.     scrollbar .s
  637.     interp hide {} .s
  638.     destroy .s
  639.     list [winfo children .] [interp hidden]
  640. } [list {} $l]
  641. catch {destroy .s}
  642. catch {destroy .t}
  643. # cleanup
  644. ::tcltest::cleanupTests
  645. return