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

通讯编程

开发平台:

Visual C++

  1. # This file is a Tcl script to test drawing of menus in Tk.  It is
  2. # organized in the standard fashion for Tcl tests.
  3. #
  4. # Copyright (c) 1996-1997 Sun Microsystems, Inc.
  5. # Copyright (c) 1998-1999 by Scriptics Corporation.
  6. # All rights reserved.
  7. #
  8. # RCS: @(#) $Id: menuDraw.test,v 1.5 2002/07/13 20:28:35 dgp Exp $
  9. package require tcltest 2.1
  10. namespace import -force tcltest::configure
  11. namespace import -force tcltest::testsDirectory
  12. configure -testdir [file join [pwd] [file dirname [info script]]]
  13. configure -loadfile [file join [testsDirectory] constraints.tcl]
  14. tcltest::loadTestedCommands
  15. test menuDraw-1.1 {TkMenuInitializeDrawingFields} {
  16.     catch {destroy .m1}
  17.     list [menu .m1] [destroy .m1]
  18. } {.m1 {}}
  19. test menuDraw-2.1 {TkIntializeMenuEntryDrawingFields} {
  20.     catch {destroy .m1}
  21.     menu .m1
  22.     list [.m1 add command] [destroy .m1]
  23. } {{} {}}
  24. test menuDraw-3.1 {TkMenuFreeDrawOptions} {
  25.     catch {destroy .m1}
  26.     menu .m1
  27.     list [destroy .m1]
  28. } {{}}
  29. test menuDraw-4.1 {TkMenuEntryFreeDrawOptions} {
  30.     catch {destroy .m1}
  31.     menu .m1
  32.     .m1 add command -label "This is a test"
  33.     list [destroy .m1]
  34. } {{}}
  35. test menuDraw-4.2 {TkMenuEntryFreeDrawOptions} {
  36. catch {destroy .m1}
  37. menu .m1
  38. .m1 add checkbutton -label "This is a test." -font "Courier 12" -activeforeground red -background green -selectcolor purple
  39. list [destroy .m1]
  40. } {{}}
  41. test menuDraw-5.1 {TkMenuConfigureDrawOptions - new menu} {
  42.     catch {destroy .m1}
  43.     list [menu .m1] [destroy .m1]
  44. } {.m1 {}}
  45. test menuDraw-5.2 {TkMenuConfigureDrawOptions - old menu} {
  46.     catch {destroy .m1}
  47.     menu .m1
  48.     list [.m1 configure -fg red] [destroy .m1]
  49. } {{} {}}
  50. test menuDraw-5.3 {TkMenuConfigureDrawOptions - no disabledFg} {
  51. catch {destroy .m1}
  52. list [menu .m1 -disabledforeground ""] [destroy .m1]
  53. } {.m1 {}}
  54. test menuDraw-6.1 {TkMenuConfigureEntryDrawOptions - no tkfont specified} {
  55.     catch {destroy .m1}
  56.     menu .m1
  57.     list [.m1 add command -label "foo"] [destroy .m1]
  58. } {{} {}}
  59. test menuDraw-6.2 {TkMenuConfigureEntryDrawOptions - tkfont specified} {
  60.     catch {destroy .m1}
  61.     menu .m1
  62.     list [.m1 add command -label "foo" -font "Courier 12"] [destroy .m1]
  63. } {{} {}}
  64. test menuDraw-6.3 {TkMenuConfigureEntryDrawOptions - active state - wrong entry} {
  65.     catch {destroy .m1}
  66.     menu .m1
  67.     .m1 add command -label "foo"
  68.     list [.m1 entryconfigure 1 -state active] [destroy .m1]
  69. } {{} {}}
  70. test menuDraw-6.4 {TkMenuConfigureEntryDrawOptions - active state - correct entry} {
  71.     catch {destroy .m1}
  72.     menu .m1
  73.     .m1 add command -label "foo"
  74.     .m1 activate 1
  75.     list [.m1 entryconfigure 1 -state active] [destroy .m1]
  76. } {{} {}}
  77. test menuDraw-6.5 {TkMenuConfigureEntryDrawOptions - deactivate entry} {
  78.     catch {destroy .m1}
  79.     menu .m1
  80.     .m1 add command -label "foo"
  81.     .m1 activate 1
  82.     list [.m1 entryconfigure 1 -state normal] [destroy .m1]
  83. } {{} {}}
  84. test menuDraw-6.6 {TkMenuConfigureEntryDrawOptions - bad state} {
  85.     catch {destroy .m1}
  86.     menu .m1
  87.     .m1 add command -label "foo"
  88.     list [catch {.m1 entryconfigure 1 -state foo} msg] $msg [destroy .m1]
  89. } {1 {bad state "foo": must be active, normal, or disabled} {}}
  90. test menuDraw-6.7 {TkMenuConfigureEntryDrawOptions - tkfont specified} {
  91.     catch {destroy .m1}
  92.     menu .m1
  93.     list [.m1 add command -label "foo" -font "Courier 12"] [destroy .m1]
  94. } {{} {}}
  95. test menuDraw-6.8 {TkMenuConfigureEntryDrawOptions - border specified} {
  96.     catch {destroy .m1}
  97.     menu .m1
  98.     list [.m1 add command -label "foo" -background "red"] [destroy .m1]
  99. } {{} {}}
  100. test menuDraw-6.9 {TkMenuConfigureEntryDrawOptions - foreground specified} {
  101.     catch {destroy .m1}
  102.     menu .m1
  103.     list [.m1 add command -label "foo" -foreground "red"] [destroy .m1]
  104. } {{} {}}
  105. test menuDraw-6.10 {TkMenuConfigureEntryDrawOptions - activeBorder specified} {
  106.     catch {destroy .m1}
  107.     menu .m1
  108.     list [.m1 add command -label "foo" -activebackground "red"] [destroy .m1]
  109. } {{} {}}
  110. test menuDraw-6.11 {TkMenuConfigureEntryDrawOptions - activeforeground specified} {
  111.     catch {destroy .m1}
  112.     menu .m1
  113.     list [.m1 add command -label "foo" -activeforeground "red"] [destroy .m1]
  114. } {{} {}}
  115. test menuDraw-6.12 {TkMenuConfigureEntryDrawOptions - selectcolor specified} {
  116.     catch {destroy .m1}
  117.     menu .m1
  118.     list [.m1 add radiobutton -label "foo" -selectcolor "red"] [destroy .m1]
  119. } {{} {}}
  120. test menuDraw-6.13 {TkMenuConfigureEntryDrawOptions - textGC disposal} {
  121.     catch {destroy .m1}
  122.     menu .m1
  123.     .m1 add command -label "foo" -font "Helvetica 12"
  124.     list [.m1 entryconfigure 1 -font "Courier 12"] [destroy .m1]
  125. } {{} {}}
  126. test menuDraw-6.14 {TkMenuConfigureEntryDrawOptions - activeGC disposal} {
  127.     catch {destroy .m1}
  128.     menu .m1
  129.     .m1 add command -label "foo" -activeforeground "red"
  130.     list [.m1 entryconfigure 1 -activeforeground "green"] [destroy .m1]
  131. } {{} {}}
  132. test menuDraw-6.15 {TkMenuConfigureEntryDrawOptions - disabledGC disposal} {
  133.     catch {destroy .m1}
  134.     menu .m1 -disabledforeground "red"
  135.     .m1 add command -label "foo"
  136.     list [.m1 configure -disabledforeground "green"] [destroy .m1]
  137. } {{} {}}
  138. test menuDraw-6.16 {TkMenuConfigureEntryDrawOptions - indicatorGC disposal} {
  139.     catch {destroy .m1}
  140.     menu .m1
  141.     .m1 add radiobutton -label "foo" -selectcolor "red"
  142.     list [.m1 entryconfigure 1 -selectcolor "green"] [destroy .m1]
  143. } {{} {}}
  144. test menuDraw-7.1 {TkEventuallyRecomputeMenu} {
  145.     catch {destroy .m1}
  146.     menu .m1
  147.     .m1 add command -label "This is a long label"
  148.     set tearoff [tk::TearOffMenu .m1]
  149.     update idletasks
  150.     list [.m1 entryconfigure 1 -label "foo"] [destroy .m1]
  151. } {{} {}}
  152. test menuDraw-7.2 {TkEventuallyRecomputeMenu - update pending} {
  153.     catch {destroy .m1}
  154.     menu .m1
  155.     .m1 add command -label "This is a long label"
  156.     set tearoff [tk::TearOffMenu .m1]
  157.     list [.m1 entryconfigure 1 -label "foo"] [destroy .m1]
  158. } {{} {}}
  159. test menuDraw-8.1 {TkRecomputeMenu} {pcOnly userInteraction} {
  160.     catch {destroy .m1}
  161.     menu .m1
  162.     .m1 configure -postcommand [.m1 add command -label foo]
  163.     .m1 add command -label "Hit ESCAPE to make this menu go away."
  164.     list [.m1 post 0 0] [destroy .m1]
  165. } {{} {}}
  166. test menuDraw-9.1 {TkEventuallyRedrawMenu - entry test} {
  167.     catch {destroy .m1}
  168.     catch {unset foo}
  169.     menu .m1
  170.     set foo 0
  171.     .m1 add radiobutton -variable foo -label test
  172.     tk::TearOffMenu .m1
  173.     update idletasks
  174.     list [set foo test] [destroy .m1] [unset foo]
  175. } {test {} {}}
  176. test menuDraw-9.2 {TkEventuallyRedrawMenu - whole menu} {
  177.     catch {destroy .m1}
  178.     menu .m1
  179.     list [catch {tk::TearOffMenu .m1}] [destroy .m1]
  180. } {0 {}}
  181. # Don't know how to test when window has been deleted and ComputeMenuGeometry
  182. # gets called.
  183. test menuDraw-10.1 {ComputeMenuGeometry - menubar} {
  184.     catch {destroy .m1}
  185.     menu .m1
  186.     .m1 add command -label test
  187.     . configure -menu .m1
  188.     list [update idletasks] [. configure -menu ""] [destroy .m1]
  189. } {{} {} {}}
  190. test menuDraw-10.2 {ComputeMenuGeometry - non-menubar} {
  191.     catch {destroy .m1}
  192.     menu .m1
  193.     .m1 add command -label test
  194.     list [update idletasks] [destroy .m1]
  195. } {{} {}}
  196. test menuDraw-10.3 {ComputeMenuGeometry - Resize necessary} {
  197.     catch {destroy .m1}
  198.     menu .m1
  199.     .m1 add command -label test
  200.     list [update idletasks] [destroy .m1]
  201. } {{} {}}
  202. test menuDraw-10.4 {ComputeMenuGeometry - resize not necessary} {
  203.     catch {destroy .m1}
  204.     menu .m1
  205.     .m1 add command -label test
  206.     update idletasks
  207.     .m1 entryconfigure 1 -label test
  208.     list [update idletasks] [destroy .m1]
  209. } {{} {}}
  210. test menuDraw-11.1 {TkMenuSelectImageProc - entry selected; redraw not pending} testImageType {
  211.     catch {destroy .m1}
  212.     catch {eval image delete [image names]}
  213.     image create test image1
  214.     image create test image2
  215.     menu .m1
  216.     .m1 add checkbutton -image image1 -selectimage image2
  217.     .m1 invoke 1
  218.     set tearoff [tk::TearOffMenu .m1 40 40]
  219.     update idletasks
  220.     list [image delete image2] [destroy .m1] [eval image delete [image names]]
  221. } {{} {} {}}
  222. test menuDraw-11.2 {TkMenuSelectImageProc - entry selected; redraw pending} testImageType {
  223.     catch {destroy .m1}
  224.     catch {eval image delete [image names]}
  225.     image create test image1
  226.     image create test image2
  227.     menu .m1
  228.     .m1 add checkbutton -image image1 -selectimage image2
  229.     .m1 invoke 1
  230.     set tearoff [tk::TearOffMenu .m1 40 40]
  231.     list [image delete image2] [destroy .m1] [eval image delete [image names]]
  232. } {{} {} {}}
  233. test menuDraw-11.3 {TkMenuSelectImageProc - entry not selected} testImageType {
  234.     catch {destroy .m1}
  235.     catch {eval image delete [image names]}
  236.     image create test image1
  237.     image create test image2
  238.     menu .m1
  239.     .m1 add checkbutton -image image1 -selectimage image2
  240.     set tearoff [tk::TearOffMenu .m1 40 40]
  241.     update idletasks
  242.     list [image delete image2] [destroy .m1] [eval image delete [image names]]
  243. } {{} {} {}}
  244. #Don't know how to test missing tkwin in DisplayMenu
  245. test menuDraw-12.1 {DisplayMenu - menubar background} {unixOnly} {
  246.     catch {destroy .m1}
  247.     menu .m1
  248.     .m1 add cascade -label foo -menu .m2
  249.     . configure -menu .m1
  250.     list [update] [. configure -menu ""] [destroy .m1]
  251. } {{} {} {}}
  252. test menuDraw-12.2 {Display menu - no entries} {
  253.     catch {destroy .m1}
  254.     menu .m1
  255.     set tearoff [tk::TearOffMenu .m1 40 40]
  256.     list [update] [destroy .m1]
  257. } {{} {}}
  258. test menuDraw-12.3 {DisplayMenu - one entry} {
  259.     catch {destroy .m1}
  260.     menu .m1
  261.     .m1 add command -label foo
  262.     set tearoff [tk::TearOffMenu .m1 40 40]
  263.     list [update] [destroy .m1]
  264. } {{} {}}
  265. test menuDraw-12.4 {DisplayMenu - two entries} {
  266.     catch {destroy .m1}
  267.     menu .m1
  268.     .m1 add command -label "one"
  269.     .m1 add command -label "two"
  270.     set tearoff [tk::TearOffMenu .m1 40 40]
  271.     list [update] [destroy .m1]
  272. } {{} {}}
  273. test menuDraw.12.5 {DisplayMenu - two columns - first bigger} {
  274.     catch {destroy .m1}
  275.     menu .m1
  276.     .m1 add command -label "one"
  277.     .m1 add command -label "two"
  278.     .m1 add command -label "three" -columnbreak 1
  279.     set tearoff [tk::TearOffMenu .m1 40 40]
  280.     list [update] [destroy .m1]
  281. } {{} {}}
  282. test menuDraw-12.5 {DisplayMenu - two column - second  bigger} {
  283.     catch {destroy .m1}
  284.     menu .m1
  285.     .m1 add command -label "one"
  286.     .m1 add command -label "two" -columnbreak 1
  287.     .m1 add command -label "three"
  288.     set tearoff [tk::TearOffMenu .m1 40 40]
  289.     list [update] [destroy .m1]
  290. } {{} {}}
  291. test menuDraw.12.7 {DisplayMenu - three columns} {
  292.     catch {destroy .m1}
  293.     menu .m1
  294.     .m1 add command -label "one"
  295.     .m1 add command -label "two" -columnbreak 1
  296.     .m1 add command -label "three"
  297.     .m1 add command -label "four"
  298.     .m1 add command -label "five"
  299.     .m1 add command -label "six"
  300.     set tearoff [tk::TearOffMenu .m1 40 40]
  301.     list [update] [destroy .m1]
  302. } {{} {}}
  303. test menuDraw-12.6 {Display menu - testing for extra space and menubars} {unixOnly} {
  304.     catch {destroy .m1}
  305.     menu .m1
  306.     .m1 add cascade -label foo
  307.     . configure -menu .m1
  308.     list [update] [. configure -menu ""] [destroy .m1]
  309. } {{} {} {}}
  310. test menuDraw-12.7 {Display menu - extra space at end of menu} {
  311.     catch {destroy .m1}
  312.     menu .m1
  313.     .m1 add cascade -label foo
  314.     set tearoff [tk::TearOffMenu .m1 40 40]
  315.     wm geometry $tearoff 200x100
  316.     list [update] [destroy .m1]
  317. } {{} {}}
  318. test menuDraw-13.1 {TkMenuEventProc - Expose} {
  319.     catch {destroy .m1}
  320.     catch {destroy .m2}
  321.     menu .m1
  322.     .m1 add command -label "one"
  323.     menu .m2
  324.     .m2 add command -label "two"
  325.     set tearoff1 [tk::TearOffMenu .m1 40 40]
  326.     set tearoff2 [tk::TearOffMenu .m2 40 40]
  327.     list [raise $tearoff2] [update] [destroy .m1] [destroy .m2]
  328. } {{} {} {} {}}
  329. test menuDraw-13.2 {TkMenuEventProc - ConfigureNotify} {
  330.     catch {destroy .m1}
  331.     menu .m1
  332.     .m1 add command -label "foo"
  333.     set tearoff [tk::TearOffMenu .m1 40 40]
  334.     list [wm geometry $tearoff 200x100] [update] [destroy .m1]
  335. } {{} {} {}}
  336. test menuDraw-13.3 {TkMenuEventProc - ActivateNotify} {macOnly} {
  337.     catch {destroy .t2}
  338.     toplevel .t2 -menu .t2.m1
  339.     menu .t2.m1
  340.     .t2.m1 add command -label foo
  341.     tk::TearOffMenu .t2.m1 40 40
  342.     list [catch {update} msg] $msg [destroy .t2]
  343. } {0 {} {}}
  344. # Testing deletes is hard, and I am going to do my best. Don't know how
  345. # to test the case where we have already cleared the tkwin field in the
  346. # menuPtr.
  347. test menuDraw-13.4 {TkMenuEventProc - simple delete} {
  348.     catch {destroy .m1}
  349.     menu .m1
  350.     list [destroy .m1]
  351. } {{}}
  352. test menuDraw-13.5 {TkMenuEventProc - nothing pending} {
  353.     catch {destroy .m1}
  354.     menu .m1
  355.     .m1 add command -label foo
  356.     update idletasks
  357.     list [destroy .m1]
  358. } {{}}
  359. test menuDraw-14.1 {TkMenuImageProc} testImageType {
  360.     catch {destroy .m1}
  361.     catch {image delete image1}
  362.     menu .m1
  363.     image create test image1
  364.     .m1 add command -image image1
  365.     update idletasks
  366.     list [image delete image1] [destroy .m1]
  367. } {{} {}}
  368. test menuDraw-14.2 {TkMenuImageProc} testImageType {
  369.     catch {destroy .m1}
  370.     catch {image delete image1}
  371.     menu .m1
  372.     image create test image1
  373.     .m1 add command -image image1
  374.     list [image delete image1] [destroy .m1]
  375. } {{} {}}
  376. test menuDraw-15.1 {TkPostTearoffMenu - Basic posting} {
  377.     catch {destroy .m1}
  378.     menu .m1
  379.     .m1 add command -label "foo"
  380.     list [catch {tk::TearOffMenu .m1 40 40}] [destroy .m1]
  381. } {0 {}}
  382. test menuDraw-15.2 {TkPostTearoffMenu - Deactivation} {
  383.     catch {destroy .m1}
  384.     menu .m1
  385.     .m1 add command -label "foo" -state active
  386.     set tearoff [tk::TearOffMenu .m1 40 40]
  387.     list [$tearoff index active] [destroy .m1]
  388. } {none {}}
  389. test menuDraw-15.3 {TkPostTearoffMenu - post command} {
  390.     catch {destroy .m1}
  391.     catch {unset foo}
  392.     menu .m1 -postcommand "set foo .m1"
  393.     .m1 add command -label "foo"
  394.     list [catch {tk::TearOffMenu .m1 40 40}] [set foo] [unset foo] [destroy .m1]
  395. } {0 .m1 {} {}}
  396. test menuDraw-15.4 {TkPostTearoffMenu - post command deleting the menu} {
  397.     catch {destroy .m1}
  398.     menu .m1 -postcommand "destroy .m1"
  399.     .m1 add command -label "foo"
  400.     list [catch {tk::TearOffMenu .m1 40 40} msg] $msg [winfo exists .m1]
  401. } {0 {} 0}
  402. test menuDraw-15.5 {TkPostTearoffMenu - tearoff at edge of screen} {
  403.     catch {destroy .m1}
  404.     menu .m1
  405.     .m1 add command -label "foo"
  406.     set height [winfo screenheight .m1]
  407.     list [catch {tk::TearOffMenu .m1 40 $height}] [destroy .m1]
  408. } {0 {}}
  409. test menuDraw-15.6 {TkPostTearoffMenu - tearoff off right} {
  410.     catch {destroy .m1}
  411.     menu .m1
  412.     .m1 add command -label "foo"
  413.     set width [winfo screenwidth .m1]
  414.     list [catch {tk::TearOffMenu .m1 $width 40}] [destroy .m1]
  415. } {0 {}}
  416. test menuDraw-16.1 {TkPostSubmenu} {unixOnly} {
  417.     catch {destroy .m1}
  418.     catch {destroy .m2}
  419.     menu .m1
  420.     .m1 add cascade -label test -menu .m2
  421.     menu .m2
  422.     .m2 add command -label "Hit ESCAPE to make this menu go away."
  423.     set tearoff [tk::TearOffMenu .m1 40 40]
  424.     $tearoff postcascade 0
  425.     list [$tearoff postcascade 0] [destroy .m1] [destroy .m2]
  426. } {{} {} {}}
  427. test menuDraw-16.2 {TkPostSubMenu} {unixOnly} {
  428.     catch {destroy .m1}
  429.     catch {destroy .m2}
  430.     catch {destroy .m3}
  431.     menu .m1
  432.     .m1 add cascade -label "two" -menu .m2
  433.     .m1 add cascade -label "three" -menu .m3
  434.     menu .m2
  435.     .m2 add command -label "two"
  436.     menu .m3
  437.     .m3 add command -label "three"
  438.     set tearoff [tk::TearOffMenu .m1 40 40]
  439.     $tearoff postcascade 0
  440.     list [$tearoff postcascade 1] [destroy .m1] [destroy .m2] [destroy .m3]
  441. } {{} {} {} {}}
  442. test menuDraw-16.3 {TkPostSubMenu} {
  443.     catch {destroy .m1}
  444.     menu .m1
  445.     .m1 add cascade -label test -menu .m2
  446.     list [.m1 postcascade 1] [destroy .m1]
  447. } {{} {}}
  448. test menuDraw-16.4 {TkPostSubMenu} {
  449.     catch {destroy .m1}
  450.     menu .m1
  451.     .m1 add cascade -label test
  452.     set tearoff [tk::TearOffMenu .m1 40 40]
  453.     list [$tearoff postcascade 0] [destroy .m1]
  454. } {{} {}}
  455. test menuDraw-16.5 {TkPostSubMenu} {unixOnly} {
  456.     catch {destroy .m1}
  457.     catch {destroy .m2}
  458.     menu .m1
  459.     .m1 add cascade -label test -menu .m2
  460.     menu .m2 -postcommand "glorp"
  461.     set tearoff [tk::TearOffMenu .m1 40 40]
  462.     list [catch {$tearoff postcascade test} msg] $msg [destroy .m1] [destroy .m2]
  463. } {1 {invalid command name "glorp"} {} {}}
  464. test menuDraw-16.6 {TkPostSubMenu} {pcOnly userInteraction} {
  465.     catch {destroy .m1}
  466.     catch {destroy .m2}
  467.     menu .m1
  468.     .m1 add cascade -label test -menu .m2
  469.     menu .m2
  470.     .m2 add command -label "Hit ESCAPE to get rid of this menu"
  471.     set tearoff [tk::TearOffMenu .m1 40 40]
  472.     list [$tearoff postcascade 0] [destroy .m1] [destroy .m2]
  473. } {{} {} {}}
  474. test menuDraw-17.1 {AdjustMenuCoords - menubar} {unixOnly} {
  475.     catch {destroy .m1}
  476.     catch {destroy .m2}
  477.     menu .m1 -tearoff 0
  478.     .m1 add cascade -label test -menu .m2
  479.     menu .m2 -tearoff 0
  480.     .m2 add command -label foo
  481.     . configure -menu .m1
  482.     foreach w [winfo children .] {
  483. if {[$w cget -type] == "menubar"} {
  484. break
  485. }
  486.     }
  487.     list [$w postcascade 0] [. configure -menu ""] [destroy .m1] [destroy .m2]
  488. } {{} {} {} {}}
  489. test menuDraw-17.2 {AdjustMenuCoords - menu} {pcOnly userInteraction} {
  490.     catch {destroy .m1}
  491.     catch {destroy .m2}
  492.     menu .m1
  493.     .m1 add cascade -label test -menu .m2
  494.     menu .m2
  495.     .m2 add command -label "Hit ESCAPE to make this menu go away"
  496.     set tearoff [tk::TearOffMenu .m1 40 40]
  497.     list [$tearoff postcascade 0] [destroy .m1] [destroy .m2]
  498. } {{} {} {}}
  499. # cleanup
  500. deleteWindows
  501. ::tcltest::cleanupTests
  502. return