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

通讯编程

开发平台:

Visual C++

  1. # This file tests  is a Tcl script to test the procedures in the file
  2. # tkWinWm.c.  It is organized in the standard fashion for Tcl tests.
  3. #
  4. # This file contains a collection of tests for one or more of the Tcl
  5. # built-in commands.  Sourcing this file into Tcl runs the tests and
  6. # generates output for errors.  No output means no errors were found.
  7. #
  8. # Copyright (c) 1996 by Sun Microsystems, Inc.
  9. # Copyright (c) 1998-1999 by Scriptics Corporation.
  10. # All rights reserved.
  11. #
  12. # RCS: @(#) $Id: winWm.test,v 1.9.2.4 2006/12/01 19:47:42 hobbs Exp $
  13. package require tcltest 2.1
  14. namespace import -force tcltest::configure
  15. namespace import -force tcltest::testsDirectory
  16. configure -testdir [file join [pwd] [file dirname [info script]]]
  17. configure -loadfile [file join [testsDirectory] constraints.tcl]
  18. tcltest::loadTestedCommands
  19. # Measure the height of a single menu line
  20. toplevel .t
  21. frame .t.f -width 100 -height 50
  22. pack .t.f
  23. menu .t.m
  24. .t.m add command -label "thisisreallylong"
  25. .t conf -menu .t.m
  26. wm geom .t -0-0
  27. update
  28. set menuheight [winfo y .t]
  29. .t.m add command -label "thisisreallylong"
  30. wm geom .t -0-0
  31. update
  32. set menuheight [expr $menuheight - [winfo y .t]]
  33. destroy .t
  34. test winWm-1.1 {TkWmMapWindow} {pcOnly} {
  35.     toplevel .t
  36.     wm override .t 1
  37.     wm geometry .t +0+0
  38.     update
  39.     set result [list [winfo rootx .t] [winfo rooty .t]]
  40.     destroy .t
  41.     set result
  42. } {0 0}
  43. test winWm-1.2 {TkWmMapWindow} {pcOnly} {
  44.     toplevel .t
  45.     wm transient .t .
  46.     update
  47.     wm iconify .
  48.     update
  49.     wm deiconify .
  50.     update
  51.     catch {wm iconify .t} msg
  52.     destroy .t
  53.     set msg
  54. } {can't iconify ".t": it is a transient}
  55. test winWm-1.3 {TkWmMapWindow} {pcOnly} {
  56.     toplevel .t
  57.     update
  58.     toplevel .t2
  59.     update
  60.     set result [expr [winfo x .t] != [winfo x .t2]]
  61.     destroy .t .t2
  62.     set result
  63. } 1
  64. test winWm-1.4 {TkWmMapWindow} {pcOnly} {
  65.     toplevel .t
  66.     wm geometry .t +10+10
  67.     update
  68.     toplevel .t2
  69.     wm geometry .t2 +40+10
  70.     update
  71.     set result [list [winfo x .t] [winfo x .t2]]
  72.     destroy .t .t2
  73.     set result
  74. } {10 40}
  75. test winWm-1.5 {TkWmMapWindow} {pcOnly} {
  76.     toplevel .t
  77.     wm iconify .t
  78.     update
  79.     set result [wm state .t]
  80.     destroy .t
  81.     set result
  82. } iconic
  83. test winWm-2.1 {TkpWmSetState} {pcOnly} {
  84.     toplevel .t
  85.     wm geometry .t 150x50+10+10
  86.     update
  87.     set result [wm state .t]
  88.     wm iconify .t
  89.     update
  90.     lappend result [wm state .t]
  91.     wm deiconify .t
  92.     update
  93.     lappend result [wm state .t]
  94.     destroy .t
  95.     set result
  96. } {normal iconic normal}
  97. test winWm-2.2 {TkpWmSetState} {pcOnly} {
  98.     toplevel .t
  99.     wm geometry .t 150x50+10+10
  100.     update
  101.     set result [wm state .t]
  102.     wm withdraw .t
  103.     update
  104.     lappend result [wm state .t]
  105.     wm iconify .t
  106.     update
  107.     lappend result [wm state .t]
  108.     wm deiconify .t
  109.     update 
  110.     lappend result [wm state .t]
  111.     destroy .t
  112.     set result
  113. } {normal withdrawn iconic normal}
  114. test winWm-2.2 {TkpWmSetState} {pcOnly} {
  115.     toplevel .t
  116.     wm geometry .t 150x50+10+10
  117.     update
  118.     set result [wm state .t]
  119.     wm state .t withdrawn
  120.     update
  121.     lappend result [wm state .t]
  122.     wm state .t iconic
  123.     update
  124.     lappend result [wm state .t]
  125.     wm state .t normal
  126.     update 
  127.     lappend result [wm state .t]
  128.     destroy .t
  129.     set result
  130. } {normal withdrawn iconic normal}
  131. test winWm-2.4 {TkpWmSetState} {pcOnly} {
  132.     set result {}
  133.     toplevel .t
  134.     wm geometry .t 150x50+10+10
  135.     update
  136.     lappend result [list [wm state .t] [wm geometry .t]]
  137.     wm iconify .t
  138.     update
  139.     lappend result [list [wm state .t] [wm geometry .t]]
  140.     wm geometry .t 200x50+10+10
  141.     update
  142.     lappend result [list [wm state .t] [wm geometry .t]]
  143.     wm deiconify .t
  144.     update
  145.     lappend result [list [wm state .t] [wm geometry .t]]
  146.     destroy .t
  147.     set result
  148. } {{normal 150x50+10+10} {iconic 150x50+10+10} {iconic 150x50+10+10} {normal 200x50+10+10}}
  149. test winWm-3.1 {ConfigureTopLevel: window geometry propagation} {pcOnly} {
  150.     toplevel .t
  151.     wm geometry .t +0+0
  152.     button .t.b
  153.     pack .t.b
  154.     update
  155.     set x [winfo x .t.b]
  156.     destroy .t
  157.     toplevel .t
  158.     wm geometry .t +0+0
  159.     button .t.b
  160.     update
  161.     pack .t.b
  162.     update
  163.     set x [expr $x == [winfo x .t.b]]
  164.     destroy .t
  165.     set x
  166. } 1
  167. test winWm-4.1 {ConfigureTopLevel: menu resizing} {pcOnly} {
  168.     set result {}
  169.     toplevel .t
  170.     frame .t.f -width 150 -height 50 -bg red
  171.     pack .t.f
  172.     wm geometry .t -0-0
  173.     update
  174.     set y [winfo y .t]
  175.     menu .t.m
  176.     .t.m add command -label foo
  177.     .t conf -menu .t.m
  178.     update
  179.     set result [expr $y - [winfo y .t]]
  180.     destroy .t
  181.     set result
  182. } [expr $menuheight + 1]
  183. test winWm-5.1 {UpdateGeometryInfo: menu resizing} {pcOnly} {
  184.     set result {}
  185.     toplevel .t
  186.     frame .t.f -width 150 -height 50 -bg red
  187.     pack .t.f
  188.     update
  189.     set result [winfo height .t]
  190.     menu .t.m
  191.     .t.m add command -label foo
  192.     .t conf -menu .t.m
  193.     update
  194.     lappend result [winfo height .t]
  195.     .t.m add command -label "thisisreallylong"
  196.     .t.m add command -label "thisisreallylong"
  197.     update
  198.     lappend result [winfo height .t]
  199.     destroy .t
  200.     set result
  201. } {50 50 50}
  202. test winWm-5.2 {UpdateGeometryInfo: menu resizing} {pcOnly} {
  203.     set result {}
  204.     toplevel .t
  205.     frame .t.f -width 150 -height 50 -bg red
  206.     pack .t.f
  207.     wm geom .t -0-0
  208.     update
  209.     set y [winfo rooty .t]
  210.     lappend result [winfo height .t]
  211.     menu .t.m
  212.     .t conf -menu .t.m
  213.     .t.m add command -label foo
  214.     .t.m add command -label "thisisreallylong"
  215.     .t.m add command -label "thisisreallylong"
  216.     update
  217.     lappend result [winfo height .t]
  218.     lappend result [expr $y - [winfo rooty .t]]
  219.     destroy .t
  220.     set result
  221. } {50 50 0}
  222. test winWm-6.1 {wm attributes} win {
  223.     destroy .t
  224.     toplevel .t
  225.     wm attributes .t
  226. } {-alpha 1.0 -transparentcolor {} -disabled 0 -toolwindow 0 -topmost 0}
  227. test winWm-6.2 {wm attributes} win {
  228.     destroy .t
  229.     toplevel .t
  230.     wm attributes .t -disabled
  231. } {0}
  232. test winWm-6.3 {wm attributes} win {
  233.     # This isn't quite the correct error message yet, but it works.
  234.     destroy .t
  235.     toplevel .t
  236.     list [catch {wm attributes .t -foo} msg] $msg
  237. } {1 {wrong # args: should be "wm attributes window ?-alpha ?double?? ?-transparentcolor ?color?? ?-disabled ?bool?? ?-toolwindow ?bool?? ?-topmost ?bool??"}}
  238. test winWm-6.4 {wm attributes -alpha} win {
  239.     # Expect this to return all 1.0 {} on pre-2K/XP
  240.     destroy .t
  241.     toplevel .t
  242.     set res [wm attributes .t -alpha]
  243.     # we don't return on set yet
  244.     lappend res [wm attributes .t -alpha 0.5]
  245.     lappend res [wm attributes .t -alpha]
  246.     lappend res [wm attributes .t -alpha -100]
  247.     lappend res [wm attributes .t -alpha]
  248.     lappend res [wm attributes .t -alpha 100]
  249.     lappend res [wm attributes .t -alpha]
  250.     set res
  251. } {1.0 {} 0.5 {} 0.0 {} 1.0}
  252. test winWm-6.5 {wm attributes -alpha} win {
  253.     destroy .t
  254.     toplevel .t
  255.     list [catch {wm attributes .t -alpha foo} msg] $msg
  256. } {1 {expected floating-point number but got "foo"}}
  257. test winWm-6.6 {wm attributes -alpha} win {
  258.     # This test is just to show off -alpha
  259.     destroy .t
  260.     toplevel .t
  261.     wm attributes .t -alpha 0.2
  262.     pack [label .t.l -text "Alpha Toplevel" -font "Helvetica 18 bold"]
  263.     tk::PlaceWindow .t center
  264.     update
  265.     if {$::tcl_platform(osVersion) >= 5.0} {
  266. for {set i 0.2} {$i < 0.99} {set i [expr {$i+0.02}]} {
  267.     wm attributes .t -alpha $i
  268.     update idle
  269.     after 20
  270. }
  271. for {set i 0.99} {$i > 0.2} {set i [expr {$i-0.02}]} {
  272.     wm attributes .t -alpha $i
  273.     update idle
  274.     after 20
  275. }
  276.     }
  277. } {}
  278. test winWm-6.7 {wm attributes -transparentcolor} win {
  279.     # Expect this to return all "" on pre-2K/XP
  280.     destroy .t
  281.     toplevel .t
  282.     set res {}
  283.     lappend res [wm attributes .t -transparentcolor]
  284.     # we don't return on set yet
  285.     lappend res [wm attributes .t -trans black]
  286.     lappend res [wm attributes .t -trans]
  287.     lappend res [wm attributes .t -trans "#FFFFFF"]
  288.     lappend res [wm attributes .t -trans]
  289.     destroy .t
  290.     set res
  291. } [list {} {} black {} "#FFFFFF"]
  292. test winWm-6.8 {wm attributes -transparentcolor} win {
  293.     destroy .t
  294.     toplevel .t
  295.     list [catch {wm attributes .t -tr foo} msg] $msg
  296. } {1 {unknown color name "foo"}}
  297. test winWm-7.1 {deiconify on an unmapped toplevel
  298.         will raise the window and set the focus} {pcOnly} {
  299.     destroy .t
  300.     toplevel .t
  301.     lower .t
  302.     focus -force .
  303.     wm deiconify .t
  304.     update
  305.     list [wm stackorder .t isabove .] [focus]
  306. } {1 .t}
  307. test winWm-7.2 {deiconify on an already mapped toplevel
  308.         will raise the window and set the focus} {pcOnly} {
  309.     destroy .t
  310.     toplevel .t
  311.     lower .t
  312.     update
  313.     focus -force .
  314.     wm deiconify .t
  315.     update
  316.     list [wm stackorder .t isabove .] [focus]
  317. } {1 .t}
  318. test winWm-7.3 {UpdateWrapper must maintain Z order} win {
  319.     destroy .t
  320.     toplevel .t
  321.     lower .t
  322.     update
  323.     set res [wm stackorder .t isbelow .]
  324.     wm resizable .t 0 0
  325.     update
  326.     list $res [wm stackorder .t isbelow .]
  327. } {1 1}
  328. test winWm-7.4 {UpdateWrapper must maintain focus} win {
  329.     destroy .t
  330.     toplevel .t
  331.     focus -force .t
  332.     update
  333.     set res [focus]
  334.     wm resizable .t 0 0
  335.     update
  336.     list $res [focus]
  337. } {.t .t}
  338. test winWm-8.1 {Tk_WmCmd procedure, "iconphoto" option} win {
  339.     list [catch {wm iconph .} msg] $msg
  340. } {1 {wrong # args: should be "wm iconphoto window ?-default? image1 ?image2 ...?"}}
  341. test winWm-8.2 {Tk_WmCmd procedure, "iconphoto" option} win {
  342.     destroy .t
  343.     toplevel .t
  344.     image create photo blank16 -width 16 -height 16
  345.     image create photo blank32 -width 32 -height 32
  346.     # This should just make blank icons for the window
  347.     wm iconphoto .t blank16 blank32
  348.     image delete blank16 blank32
  349. } {}
  350. destroy .t
  351. # cleanup
  352. ::tcltest::cleanupTests
  353. return