# This file is a Tcl script to test out [incr Widgets] Dialogshell class. # It is organized in the standard fashion for Tcl tests with the following # notation for test case labels: # # 1.x - Construction/Destruction tests # 2.x - Configuration option tests # 3.x - Method tests # 4.x - Other tests # # Copyright (c) 1995 DSC Technologies Corporation # # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # # @(#) $Id: dialogshell.test,v 1.3 2001/08/07 19:56:48 smithc Exp $ package require tcltest namespace import -force ::tcltest::* if [catch {package require Iwidgets 4.0}] { # Let's try modifying the auto_path. Note that the IWIDGETS_LIBRARY # env var is initialized in the Makefile when doing a 'make test'. # If sourcing this file independently, this variable must be set manually. if ![info exists env(IWIDGETS_LIBRARY)] { error "Unable to locate Iwidgets package. Set your IWIDGETS_LIBRARY\ environment\nvariable to the directory that contains iwidgets.tcl" } lappend auto_path $env(IWIDGETS_LIBRARY) package require Iwidgets 4.0 } if {[string compare test [info procs test]] == 1} { source defs } wm geometry . {} raise . set c 1 set o 1 set m 1 # # Initial construction test # test Dialogshell-1.$c {Dialogshell construction} { iwidgets::Dialogshell .ds .ds add OK -text "OK" .ds add Cancel -text "Cancel" .ds default OK listbox [.ds childsite].lb -relief sunken pack [.ds childsite].lb -fill both -expand yes .ds activate } {} incr c # # Option tests which are successful. # test Dialogshell-2.$o {configuration option} { llength [.ds configure] } {17} incr o foreach test { {-background #d9d9d9 #d9d9d9} {-width 300 300} {-height 300 300} {-buttonboxpadx 10 10} {-buttonboxpady 10 10} {-buttonboxpos n n} {-buttonboxpos e e} {-buttonboxpos w w} {-buttonboxpos s s} {-cursor gumby gumby} {-modality global global} {-modality application application} {-modality none none} {-separator off off} {-padx 15 15} {-pady 15 15} {-thickness 5 5} {-width 0 0} {-height 0 0} {-separator on on} {-title "Dialog Shell" "Dialog Shell"}} { set option [lindex $test 0] test Dialogshell-2.$o "configuration options, $option" { .ds configure $option [lindex $test 1] lindex [.ds configure $option] 4 } [lindex $test 2] update incr o } # # Option tests which fail and produce errors. # foreach test { {-buttonboxpos bogus {bad buttonboxpos option "bogus": should be n, s, e, or w}} {-modality bogus {bad modality option "bogus": should be none, application, or global}}} { set option [lindex $test 0] test Dialogshell-2.$o "configuration options, $option" { list [catch {.ds configure $option [lindex $test 1]} msg] $msg } [list 1 [lindex $test 2]] incr o } # # Method tests which are successful. # foreach test { {{.ds childsite} {.ds.shellchildsite.dschildsite}} {{.ds add Help -text Help} {}} {{.ds insert 1 Apply -text Apply} {}} {{.ds center .} {}} {{.ds delete Help} {}} {{.ds hide Apply} {}} {{.ds default Cancel} {}} {{.ds center} {}} {{.ds show Apply} {}} {{.ds invoke OK} {}} {{.ds buttonconfigure OK -text Ok} {}}} { set method [lindex [lindex $test 0] 1] test Dialogshell-3.$m "object methods, $method" { list [catch {eval [lindex $test 0]} msg] $msg } [list 0 [lindex $test 1]] update incr m } # # Method tests which fail and produce errors # test Dialogshell-3.$m "object methods, activate already active" { list [catch {.ds activate} msg] $msg } [list 0 {}] update incr m test Dialogshell-3.$m "object methods, deactivate" { list [catch {.ds deactivate} msg] $msg } [list 0 {}] update incr m # # Destruction test # test Dialogshell-1.$c {Dialogshell destruction} { destroy .ds update } {} incr c # # Global modality test. # test Dialogshell-4.2 "global modality, activation, and deactivation" { iwidgets::dialogshell .ds -modality global .ds add OK -text "OK" .ds add Cancel -text "Cancel" .ds default OK pack [label [.ds childsite].l -text "Global Modal Dialogshell"] after 2000 {.ds deactivate Test} list [catch {.ds activate} msg] $msg } [list 0 Test] update # # Destruction test # test Dialogshell-1.$c {Dialogshell destruction} { destroy .ds update } {} incr c # # None modality test. # test Dialogshell-4.3 "no modality, activation, and deactivation" { iwidgets::dialogshell .ds -modality none .ds add OK -text "OK" .ds add Cancel -text "Cancel" .ds default OK pack [label [.ds childsite].l -text "Non-Modal Dialogshell"] .ds activate update after 2000 .ds deactivate } {} update # # Destruction test # test Dialogshell-1.$c {Dialogshell destruction} { destroy .ds update } {} incr c # # Application modality test. # test Dialogshell-4.4 "application modality, activation, and deactivation" { iwidgets::dialogshell .ds -modality application .ds add OK -text "OK" .ds add Cancel -text "Cancel" .ds default OK pack [label [.ds childsite].l -text "Application Modal Dialogshell"] after 2000 {.ds deactivate Test} list [catch {.ds activate} msg] $msg } [list 0 Test] update # # Destruction test # test Dialogshell-1.$c {Dialogshell destruction} { destroy .ds update } {} incr c test Dialogshell-1.$c {Dialogshell destruction} { iwidgets::dialogshell .ds destroy .ds update } {} ::tcltest::cleanupTests exit