- # This file is a Tcl script to test menus in Tk. It is
- # organized in the standard fashion for Tcl tests. It tests
- # the common implementation of Macintosh and Windows menus.
- #
- # Copyright (c) 1995-1996 Sun Microsystems, Inc.
- # Copyright (c) 1998-1999 by Scriptics Corporation.
- # All rights reserved.
- #
- # RCS: @(#) $Id: macWinMenu.test,v 1.4 2002/07/13 20:28:35 dgp Exp $
- package require tcltest 2.1
- namespace import -force tcltest::configure
- namespace import -force tcltest::testsDirectory
- configure -testdir [file join [pwd] [file dirname [info script]]]
- configure -loadfile [file join [testsDirectory] constraints.tcl]
- tcltest::loadTestedCommands
- test macWinMenu-1.1 {PreprocessMenu} {macOrPc nonUnixUserInteraction} {
- catch {destroy .m1}
- menu .m1 -postcommand "destroy .m1"
- .m1 add command -label "macWinMenu-1.1: Hit Escape"
- list [catch {.m1 post 40 40} msg] $msg
- } {0 {}}
- test macWinMenu-1.2 {PreprocessMenu} {macOrPc nonUnixUserInteraction} {
- catch {destroy .m1}
- catch {destroy .m2}
- set foo1 foo
- set foo2 foo
- menu .m1 -postcommand "set foo1 .m1"
- .m1 add cascade -menu .m2 -label "macWinMenu-1.2: Hit Escape"
- menu .m2 -postcommand "set foo2 .m2"
- update idletasks
- list [catch {.m1 post 40 40} msg] $msg [set foo1] [set foo2]
- [destroy .m1 .m2] [catch {unset foo1}] [catch {unset foo2}]
- } {0 .m2 .m1 .m2 {} 0 0}
- test macWinMenu-1.3 {PreprocessMenu} {macOrPc nonUnixUserInteraction} {
- catch {destroy .l1}
- catch {destroy .m1}
- catch {destroy .m2}
- catch {destroy .m3}
- label .l1 -text "Preparing menus..."
- pack .l1
- update idletasks
- menu .m1 -postcommand ".l1 configure -text "Destroying .m1..."; update idletasks; destroy .m1"
- menu .m2 -postcommand ".l1 configure -text "Destroying .m2..."; update idletasks; destroy .m2"
- menu .m3 -postcommand ".l1 configure -text "Destroying .m3..."; update idletasks; destroy .m3"
- .m1 add cascade -menu .m2 -label "macWinMenu-1.3: Hit Escape (.m2)"
- .m1 add cascade -menu .m3 -label ".m3"
- update idletasks
- list [catch {.m1 post 40 40} msg] $msg [destroy .l1 .m2 .m3]
- } {0 {} {}}
- test macWinMenu-1.4 {PreprocessMenu} {macOrPc} {
- catch {destroy .l1}
- catch {destroy .m1}
- catch {destroy .m2}
- catch {destroy .m3}
- catch {destroy .m4}
- label .l1 -text "Preparing menus..."
- pack .l1
- update idletasks
- menu .m1 -postcommand ".l1 configure -text "Destroying .m1..."; update idletasks; destroy .m1"
- .m1 add cascade -menu .m2 -label "macWinMenu-1.4: Hit Escape (.m2)"
- .m1 add cascade -menu .m3 -label ".m3"
- menu .m2 -postcommand ".l1 configure -text "Destroying .m2..."; update idletasks; destroy .m2"
- .m2 add cascade -menu .m4 -label ".m4"
- menu .m3 -postcommand ".l1 configure -text "Destroying .m3..."; update idletasks; destroy .m3"
- menu .m4 -postcommand ".l1 configure -text "Destroying .m4..."; update idletasks; destroy .m4"
- update idletasks
- list [catch {.m1 post 40 40} msg] $msg [destroy .l1 .m2 .m3 .m4]
- } {0 {} {}}
- test macWinMenu-1.5 {PreprocessMenu} {macOrPc} {
- catch {destroy .m1}
- catch {destroy .m2}
- menu .m1
- .m1 add cascade -menu .m2 -label "You may need to hit Escape to get this menu to go away."
- menu .m2 -postcommand glorp
- list [catch {.m1 post 40 40} msg] $msg [destroy .m1 .m2]
- } {1 {invalid command name "glorp"} {}}
- test macWinMenu-2.1 {TkPreprocessMenu} {macOrPc nonUnixUserInteraction} {
- catch {destroy .m1}
- set foo test
- menu .m1 -postcommand "set foo 2.1"
- .m1 add command -label "macWinMenu-2.1: Hit Escape"
- list [catch {.m1 post 40 40} msg] $msg [set foo] [destroy .m1] [unset foo]
- } {0 2.1 2.1 {} {}}
- # cleanup
- deleteWindows
- ::tcltest::cleanupTests
- return