summaryrefslogtreecommitdiffstats
path: root/tk8.6/tests/ttk/ttk.test
diff options
context:
space:
mode:
Diffstat (limited to 'tk8.6/tests/ttk/ttk.test')
-rw-r--r--tk8.6/tests/ttk/ttk.test647
1 files changed, 0 insertions, 647 deletions
diff --git a/tk8.6/tests/ttk/ttk.test b/tk8.6/tests/ttk/ttk.test
deleted file mode 100644
index e58b021..0000000
--- a/tk8.6/tests/ttk/ttk.test
+++ /dev/null
@@ -1,647 +0,0 @@
-
-package require Tk 8.5
-package require tcltest ; namespace import -force tcltest::*
-loadTestedCommands
-
-proc skip args {}
-proc ok {} { return }
-
-variable widgetClasses {
- button checkbutton radiobutton menubutton label entry
- frame labelframe scrollbar
- notebook progressbar combobox separator
- panedwindow treeview sizegrip
- scale
-}
-
-proc bgerror {error} {
- variable bgerror $error
- variable bgerrorInfo $::errorInfo
- variable bgerrorCode $::errorCode
-}
-
-# Self-destruct tests.
-# Do these early, so any memory corruption has a longer time to cause a crash.
-#
-proc selfdestruct {w args} {
- destroy $w
-}
-test ttk-6.1 "Self-destructing checkbutton" -body {
- pack [ttk::checkbutton .sd -text "Self-destruction" -variable ::sd]
- trace variable sd w [list selfdestruct .sd]
- update
- .sd invoke
-} -returnCodes 1
-test ttk-6.2 "Checkbutton self-destructed" -body {
- winfo exists .sd
-} -result 0
-
-# test ttk-6.3 not applicable [see #2175411]
-
-test ttk-6.4 "Destroy widget in configure" -setup {
- set OUCH ouch
- trace variable OUCH r { kill.b }
- proc kill.b {args} { destroy .b }
-} -cleanup {
- unset OUCH
-} -body {
- pack [ttk::checkbutton .b]
- set rc [catch { .b configure -variable OUCH } msg]
- list $rc $msg [winfo exists .b] [info commands .b]
-} -result [list 1 "widget has been destroyed" 0 {}]
-
-test ttk-6.5 "Clean up -textvariable traces" -body {
- foreach class {ttk::button ttk::checkbutton ttk::radiobutton} {
- $class .b1 -textvariable V
- set V "asdf"
- destroy .b1
- set V ""
- }
-}
-
-test ttk-6.6 "Bad color spec in styles" -body {
- pack [ttk::button .b1 -text Hi!]
- ttk::style configure TButton -foreground badColor
- event generate .b1 <Expose>
- update
- ttk::style configure TButton -foreground black
- destroy .b1
- set ::bgerror
-} -result {unknown color name "badColor"}
-
-test ttk-6.7 "Basic destruction test" -body {
- foreach widget $widgetClasses {
- ttk::$widget .w
- pack .w
- destroy .w
- }
-}
-
-test ttk-6.8 "Button command removes itself" -body {
- ttk::button .b -command ".b configure -command {}; set ::A {it worked}"
- .b invoke
- destroy .b
- set ::A
-} -result {it worked}
-
-test ttk-6.9 "Bad font spec in styles" -setup {
- ttk::style theme create badfont -settings {
- ttk::style configure . -font {Helvetica 12 Bogus}
- }
- ttk::style theme use badfont
-} -cleanup {
- ttk::style theme use default
-} -body {
- pack [ttk::label .l -text Hi! -font {}]
- event generate .l <Expose>
- update
- destroy .l
- set ::bgerror
-} -result {unknown font style "Bogus"}
-
-test ttk-construction-failure-1 "Excercise construction failure path" -setup {
- option add *TLabel.cursor badCursor 1
-} -cleanup {
- option add *TLabel.cursor {} 1
-} -body {
- catch {ttk::label .l} errmsg
- list $errmsg [info commands .l] [winfo exists .l]
-} -result [list {bad cursor spec "badCursor"} {} 0]
-
-test ttk-construction-failure-2 "Destroy widget in constructor" -setup {
- set OUCH ouch
- trace variable OUCH r { kill.b }
- proc kill.b {args} { destroy .b }
-} -cleanup {
- unset OUCH
-} -body {
- list \
- [catch { ttk::checkbutton .b -variable OUCH } msg] \
- $msg \
- [winfo exists .b] \
- [info commands .b] \
- ;
-} -result [list 1 "widget has been destroyed" 0 {}]
-
-test ttk-selfdestruct-ok-1 "Intentional self-destruction" -body {
- # see #2298720
- toplevel .t
- ttk::button .t.b -command [list destroy .t]
- .t.b invoke
- list [winfo exists .t] [winfo exists .t.b]
-} -result [list 0 0]
-
-#
-# Basic tests.
-#
-test ttk-1.1 "Create button" -body {
- pack [ttk::button .t] -expand true -fill both
- update
-}
-
-test ttk-1.2 "Check style" -body {
- .t cget -style
-} -result {}
-
-test ttk-1.3 "Set bad style" -body {
- .t configure -style "nosuchstyle"
-} -returnCodes 1 -result {Layout nosuchstyle not found}
-
-test ttk-1.4 "Original style preserved" -body {
- .t cget -style
-} -result ""
-
-proc checkstate {w} {
- foreach statespec {
- {!active !disabled}
- {!active disabled}
- {active !disabled}
- {active disabled}
- active
- disabled
- } {
- lappend result [$w instate $statespec]
- }
- set result
-}
-
-# NB: this will fail if the top-level window pops up underneath the cursor
-test ttk-2.0 "Check state" -body {
- checkstate .t
-} -result [list 1 0 0 0 0 0]
-
-test ttk-2.1 "Change state" -body {
- .t state active
-} -result !active
-
-test ttk-2.2 "Check state again" -body {
- checkstate .t
-} -result [list 0 0 1 0 1 0]
-
-test ttk-2.3 "Change state again" -body {
- .t state {!active disabled}
-} -result {active !disabled}
-
-test ttk-2.4 "Check state again" -body {
- checkstate .t
-} -result [list 0 1 0 0 0 1]
-
-test ttk-2.5 "Change state again" -body {
- .t state !disabled
-} -result {disabled}
-
-test ttk-2.6 "instate scripts, false" -body {
- set x 0
- .t instate disabled { set x 1 }
- set x
-} -result 0
-
-test ttk-2.7 "instate scripts, true" -body {
- set x 0
- .t instate !disabled { set x 1 }
- set x
-} -result 1
-
-test ttk-2.8 "bug 3223850: button state disabled during click" -setup {
- destroy .b
- set ttk28 {}
- pack [ttk::button .b -command {set ::ttk28 failed}]
-} -body {
- bind .b <ButtonPress-1> {after 0 {.b configure -state disabled}}
- after 1 {event generate .b <ButtonPress-1>}
- after 20 {event generate .b <ButtonRelease-1>}
- set aid [after 100 {set ::ttk28 [.b instate {disabled !pressed}]}]
- vwait ::ttk28
- after cancel $aid
- set ttk28
-} -cleanup {
- destroy .b
- unset -nocomplain ttk28 aid
-} -result 1
-
-foreach wc $widgetClasses {
- test ttk-coreoptions-$wc "$wc has all core options" -body {
- ttk::$wc .w
- foreach option {-class -style -cursor -takefocus} {
- .w cget $option
- }
- } -cleanup {
- catch {destroy .w}
- }
-}
-
-# misc. error detection
-test ttk-3.0 "Bad option" -body {
- ttk::button .bad -badoption foo
-} -returnCodes 1 -result {unknown option "-badoption"} -match glob
-
-test ttk-3.1 "Make sure widget command not created" -body {
- .bad state disabled
-} -returnCodes 1 -result {invalid command name ".bad"} -match glob
-
-test ttk-3.2 "Propagate errors from variable traces" -body {
- set A 0
- trace add variable A write {error "failure" ;# }
- ttk::checkbutton .cb -variable A
- .cb invoke
-} -cleanup {
- unset ::A ; destroy .cb
-} -returnCodes error -result {can't set "A": failure}
-
-test ttk-3.3 "Constructor failure with cursor" -body {
- ttk::button .b -cursor bottom_right_corner -style BadStyle
-} -returnCodes 1 -result "Layout BadStyle not found"
-
-test ttk-3.4 "SF#2009213" -body {
- ttk::style configure TScale -sliderrelief {}
- pack [ttk::scale .s]
- update
-} -cleanup {
- ttk::style configure TScale -sliderrelief raised
- destroy .s
-}
-
-# Test resource allocation
-# (@@@ "-font" is a compatibility option now, so tests 4.1-4.3
-# don't really test anything useful at the moment.)
-#
-
-test ttk-4.0 "Setup" -body {
- catch { destroy .t }
- pack [ttk::label .t -text "Button 1"]
- testConstraint fontOption [expr ![catch { set prevFont [.t cget -font] }]]
- ok
-}
-
-test ttk-4.1 "Change font" -constraints fontOption -body {
- .t configure -font "Helvetica 18 bold"
-}
-test ttk-4.2 "Check font" -constraints fontOption -body {
- .t cget -font
-} -result "Helvetica 18 bold"
-
-test ttk-4.3 "Restore font" -constraints fontOption -body {
- .t configure -font $prevFont
-}
-
-test ttk-4.4 "Bad resource specifications" -body {
- ttk::style theme settings alt {
- ttk::style configure TButton -font {Bad font}
- # @@@ it would be best to raise an error at this point,
- # @@@ but that's not really feasible in the current framework.
- }
- pack [ttk::button .tb1 -text "Ouch"]
- ttk::style theme use alt
- update;
- # As long as we haven't crashed, everything's OK
- ttk::style theme settings alt {
- ttk::style configure TButton -font TkDefaultFont
- }
- ttk::style theme use default
- destroy .tb1
-}
-
-#
-# -compound tests:
-#
-variable iconData \
-{R0lGODlhIAAgAKIAANnZ2YQAAP8AAISEhP///////////////yH5BAEAAAAALAAAAAAgACAA
-AAP/CLoMGLqKoMvtGIqiqxEYCLrcioGiyxwIusyBgaLLLRiBoMsQKLrcjYGgu4Giy+2CAkFX
-A0WX2wXFIOgGii7trkCEohsDCACBoktEKLpKhISiGwAIECiqSKooukiqKKoxgACBooukKiIo
-SKooujGDECi6iqQqsopEV2MQAkV3kXQZRXdjEAJFl5F0FUWXY3ACRZcFSRdFlyVwJlB0WZB0
-UXRZAmcCRZeRdBVFl2NwAkV3kXQZRXdjcAJFV5FURVaR6GoMDgSKLpKqiKAgqaLoxgwOBIoq
-kiqKLpIqimrM4ECg6BIRiq4SIaHoxgyCBoou7a5AhKIbMzgAAIGiy+2CTWJmBhAAAkWX2wXF
-zCDoBooud2PMDIKuRqDocgtGzMwg6O4Eii5z4Kgi6DIMhqLoagQGjiqCLvPgYOgqji6CLrfi
-6DIj6HI7jq4i6DIkADs=}
-
-variable compoundStrings {text image center top bottom left right none}
-
-if {0} {
- proc now {} { set ::now [clock clicks -milliseconds] }
- proc tick {} { puts -nonewline stderr "+" ; flush stderr }
- proc tock {} {
- set then $::now; set ::now [clock clicks -milliseconds]
- puts stderr " [expr {$::now - $then}] ms"
- }
-} else {
- proc now {} {} ; proc tick {} {} ; proc tock {} {}
-}
-
-now ; tick
-test ttk-8.0 "Setup for 8.X" -body {
- ttk::button .ctb
- image create photo icon -data $::iconData;
- pack .ctb
-}
-tock
-
-now
-test ttk-8.1 "Test -compound options" -body {
- # Exhaustively test each combination.
- # Main goal is to make sure no code paths crash.
- foreach image {icon ""} {
- foreach text {"Hi!" ""} {
- foreach compound $::compoundStrings {
- .ctb configure -image $image -text $text -compound $compound
- update; tick
- }
- }
- }
-}
-tock
-
-test ttk-8.2 "Test -compound options with regular button" -body {
- button .rtb
- pack .rtb
-
- foreach image {"" icon} {
- foreach text {"Hi!" ""} {
- foreach compound [lrange $::compoundStrings 2 end] {
- .rtb configure -image $image -text $text -compound $compound
- update; tick
- }
- }
- }
-}
-tock
-
-test ttk-8.3 "Rerun test 8.1" -body {
- foreach image {icon ""} {
- foreach text {"Hi!" ""} {
- foreach compound $::compoundStrings {
- .ctb configure -image $image -text $text -compound $compound
- update; tick
- }
- }
- }
-}
-tock
-
-test ttk-8.4 "ImageChanged" -body {
- ttk::button .b -image icon
- icon blank
-} -cleanup { destroy .b }
-
-#------------------------------------------------------------------------
-
-test ttk-9.1 "Traces on nonexistant namespaces" -body {
- ttk::checkbutton .tcb -variable foo::bar
-} -returnCodes 1 -result "*parent namespace doesn't exist*" -match glob
-
-test ttk-9.2 "Traces on nonexistant namespaces II" -body {
- ttk::checkbutton .tcb -variable X
- .tcb configure -variable foo::bar
-} -returnCodes 1 -result "*parent namespace doesn't exist*" -match glob
-
-test ttk-9.3 "Restore saved options on configure error" -body {
- .tcb cget -variable
-} -result X
-
-test ttk-9.4 "Textvariable tests" -body {
- set tcbLabel "Testing..."
- .tcb configure -textvariable tcbLabel
- .tcb cget -text
-} -result "Testing..."
-
-# Changing -text has no effect if there is a linked -textvariable.
-# Compatible with core widget.
-test ttk-9.5 "Change -text" -body {
- .tcb configure -text "Changed -text"
- .tcb cget -text
-} -result "Testing..."
-
-# Unset -textvariable clears the text.
-# NOTE: this is different from core widgets, which automagically reinitalize
-# the -textvariable to the last value of -text.
-#
-test ttk-9.6 "Unset -textvariable" -body {
- unset tcbLabel
- list [info exists tcbLabel] [.tcb cget -text]
-} -result [list 0 ""]
-
-test ttk-9.7 "Unset textvariable, comparison" -body {
-#
-# NB: ttk::label behaves differently from the standard label here;
-# NB: this is on purpose: I believe the standard behaviour is the Wrong Thing
-#
- unset -nocomplain V1 V2
- label .l -text Foo ; ttk::label .tl -text Foo
-
- .l configure -textvariable V1 ; .tl configure -textvariable V2
- list [set V1] [info exists V2]
-} -cleanup { destroy .l .tl } -result [list Foo 0]
-
-test ttk-9.8 "-textvariable overrides -text" -body {
- ttk::label .tl -textvariable TV
- set TV Foo
- .tl configure -text Bar
- .tl cget -text
-} -cleanup { destroy .tl } -result "Foo"
-
-#
-# Frame widget tests:
-#
-
-test ttk-10.1 "ttk::frame -class resource" -body {
- ttk::frame .f -class Foo
-} -result .f
-
-test ttk-10.2 "Check widget class" -body {
- winfo class .f
-} -result Foo
-
-test ttk-10.3 "Check class resource" -body {
- .f cget -class
-} -result Foo
-
-test ttk-10.4 "Try to modify class resource" -body {
- .f configure -class Bar
-} -returnCodes 1 -match glob -result "*read-only option*"
-
-test ttk-10.5 "Check class resource again" -body {
- .f cget -class
-} -result Foo
-
-test ttk-11.1 "-state test, setup" -body {
- ttk::button .b
- .b instate disabled
-} -result 0
-
-test ttk-11.2 "-state test, disable" -body {
- .b configure -state disabled
- .b instate disabled
-} -result 1
-
-test ttk-11.3 "-state test, reenable" -body {
- .b configure -state normal
- .b instate disabled
-} -result 0
-
-test ttk-11.4 "-state test, unrecognized -state value" -body {
- .b configure -state bogus
- .b state
-} -result [list]
-
-test ttk-11.5 "-state test, 'active'" -body {
- .b configure -state active
- .b state
-} -result [list active] -cleanup { .b state !active }
-
-test ttk-11.6 "-state test, 'readonly'" -body {
- .b configure -state readonly
- .b state
-} -result [list readonly] -cleanup { .b state !readonly }
-
-test ttk-11.7 "-state test, cleanup" -body {
- destroy .b
-}
-
-test ttk-12.1 "-cursor option" -body {
- ttk::button .b
- .b cget -cursor
-} -result {}
-
-test ttk-12.2 "-cursor option" -body {
- .b configure -cursor arrow
- .b cget -cursor
-} -result arrow
-
-test ttk-12.3 "-borderwidth frame option" -body {
- destroy .t
- toplevel .t
- raise .t
- pack [set t [ttk::frame .t.f]] -expand true -fill x ;
- pack [ttk::label $t.l -text "ASDF QWERTY"] -expand true -fill both
- foreach theme {default alt} {
- ttk::style theme use $theme
- foreach relief {flat raised sunken ridge groove solid} {
- $t configure -relief $relief
- for {set i 5} {$i >= 0} {incr i -1} {
- $t configure -borderwidth $i
- update
- }
- }
- }
-}
-
-test ttk-12.4 "-borderwidth frame option" -body {
- .t.f configure -relief raised
- .t.f configure -borderwidth 1
- ttk::style theme use alt
- update
-}
-
-test ttk-13.1 "Custom styles -- bad -style option" -body {
- ttk::button .tb1 -style badstyle
-} -returnCodes 1 -result "*badstyle not found*" -match glob
-
-test ttk-13.4 "Custom styles -- bad -style option" -body {
- ttk::button .tb1
- .tb1 configure -style badstyle
-} -cleanup {
- destroy .tb1
-} -returnCodes 1 -result "*badstyle not found*" -match glob
-
-test ttk-13.5 "Custom layouts -- missing element definition" -body {
- ttk::style layout badstyle {
- NoSuchElement
- }
- ttk::button .tb1 -style badstyle
-} -cleanup {
- destroy .tb1
-} -result .tb1
-# @@@ Should: signal an error, possibly a background error.
-
-#
-# See #793909
-#
-
-test ttk-14.1 "-variable in nonexistant namespace" -body {
- ttk::checkbutton .tw -variable ::nsn::foo
-} -returnCodes 1 -result {can't trace *: parent namespace doesn't exist} \
- -match glob -cleanup { destroy .tw }
-
-test ttk-14.2 "-textvariable in nonexistant namespace" -body {
- ttk::label .tw -textvariable ::nsn::foo
-} -returnCodes 1 -result {can't trace *: parent namespace doesn't exist} \
- -match glob -cleanup { destroy .tw }
-
-test ttk-14.3 "-textvariable in nonexistant namespace" -body {
- ttk::entry .tw -textvariable ::nsn::foo
-} -returnCodes 1 -result {can't trace *: parent namespace doesn't exist} \
- -match glob -cleanup { destroy .tw }
-
-test ttk-15.1 {Bug 3062331} -setup {
- destroy .b
-} -body {
- set Y {}
- ttk::button .b -textvariable Y
- trace variable Y u "destroy .b; #"
- unset Y
-} -cleanup {
- destroy .b
-} -result {}
-
-test ttk-15.2 {Bug 3341056} -setup {
- proc foo {} {
- destroy .lf
- ttk::labelframe .lf
- ttk::checkbutton .lf.cb -text xxx
- }
-} -body {
- ttk::button .b -text xxx -command foo
- .b invoke
- .b invoke
- .lf.cb invoke
- destroy .b
-} -cleanup {
- rename foo {}
- destroy .lf
-} -result {}
-
-## Test ensemble processing:
-#
-# (See also: SF#2021443)
-#
-proc wrong#args {args} {
- return "wrong # args: should be \"$args\""
-}
-proc wrong#varargs {varpart args} {
- set usage $args
- append usage " ?$varpart ...?"
- return "wrong # args: should be \"$usage\""
-}
-
-test ttk-ensemble-0 "style element create: insufficient args" -body {
- ttk::style
-} -returnCodes 1 -result \
- [wrong#varargs arg ttk::style option]
-
-test ttk-ensemble-1 "style element create: insufficient args" -body {
- ttk::style element
-} -returnCodes 1 -result \
- [wrong#varargs arg ttk::style element option]
-
-test ttk-ensemble-2 "style element create: insufficient args" -body {
- ttk::style element create
-} -returnCodes 1 -result \
- [wrong#varargs {-option value} ttk::style element create name type]
-
-test ttk-ensemble-3 "style element create: insufficient args" -body {
- ttk::style element create plain.background
-} -returnCodes 1 -result \
- [wrong#varargs {-option value} ttk::style element create name type]
-
-test ttk-ensemble-4 "style element create: insufficient args" -body {
- ttk::style element create plain.background from
-} -returnCodes 1 -result [wrong#args theme ?element?]
-
-test ttk-ensemble-5 "style element create: valid" -body {
- ttk::style element create plain.background from default
-} -returnCodes 0 -result ""
-
-eval destroy [winfo children .]
-
-tcltest::cleanupTests
-
-#*EOF*