OSDN Git Service

Please enter the commit message for your changes. Lines starting
[eos/base.git] / util / src / TclTk / tk8.6.12 / tests / ttk / spinbox.test
diff --git a/util/src/TclTk/tk8.6.12/tests/ttk/spinbox.test b/util/src/TclTk/tk8.6.12/tests/ttk/spinbox.test
new file mode 100644 (file)
index 0000000..9c82cd7
--- /dev/null
@@ -0,0 +1,369 @@
+#
+# ttk::spinbox widget tests
+#
+
+package require Tk
+package require tcltest 2.2
+namespace import -force tcltest::*
+loadTestedCommands
+
+test spinbox-1.0 "Spinbox tests -- setup" -body {
+    ttk::spinbox .sb
+} -cleanup { destroy .sb } -result .sb
+
+test spinbox-1.1 "Bad -values list" -setup {
+    ttk::spinbox .sb
+} -body {
+    .sb configure -values "bad \{list"
+} -cleanup {
+    destroy .sb
+} -returnCodes error -result "unmatched open brace in list"
+
+test spinbox-1.3.1 "get retrieves value" -setup {
+    ttk::spinbox .sb -from 0 -to 100
+} -body {
+    .sb set 50
+    .sb get
+} -cleanup {
+    destroy .sb
+} -result 50
+
+test spinbox-1.3.2 "get retrieves value" -setup {
+    ttk::spinbox .sb -from 0 -to 100 -values 55
+} -body {
+     .sb set 55
+    .sb get
+} -cleanup {
+    destroy .sb
+} -result 55
+
+test spinbox-1.4.1 "set changes value" -setup {
+    ttk::spinbox .sb -from 0 -to 100
+} -body {
+    .sb set 33
+    .sb get
+} -cleanup {
+    destroy .sb
+} -result 33
+
+test spinbox-1.4.2 "set changes value" -setup {
+    ttk::spinbox .sb -from 0 -to 100 -values 55
+} -body {
+    .sb set 33
+    .sb get
+} -cleanup {
+    destroy .sb
+} -result 33
+
+
+test spinbox-1.6.1 "insert start" -setup {
+    ttk::spinbox .sb -from 0 -to 100
+} -body {
+    .sb set 5
+    .sb insert 0 4
+    .sb get
+} -cleanup {
+    destroy .sb
+} -result 45
+
+test spinbox-1.6.2 "insert end" -setup {
+    ttk::spinbox .sb -from 0 -to 100
+} -body {
+    .sb set 5
+    .sb insert end 4
+    .sb get
+} -cleanup {
+    destroy .sb
+} -result 54
+
+test spinbox-1.6.3 "insert invalid index" -setup {
+    ttk::spinbox .sb -from 0 -to 100
+} -body {
+    .sb set 5
+    .sb insert 100 4
+    .sb get
+} -cleanup {
+    destroy .sb
+} -result 54
+
+test spinbox-1.7.1 "-command option: set doesnt fire" -setup {
+    ttk::spinbox .sb -from 0 -to 100 -command {set ::spinbox_test 1}
+} -body {
+    set ::spinbox_test 0
+    .sb set 50
+    set ::spinbox_test
+} -cleanup {
+    destroy .sb
+} -result 0
+
+test spinbox-1.7.2 "-command option: button handler will fire" -setup {
+    ttk::spinbox .sb -from 0 -to 100 -command {set ::spinbox_test 1}
+} -body {
+    set ::spinbox_test 0
+    .sb set 50
+    event generate .sb <<Increment>>
+    set ::spinbox_test
+} -cleanup {
+    destroy .sb
+} -result 1
+
+test spinbox-1.8.1 "option -validate" -setup {
+    ttk::spinbox .sb -from 0 -to 100
+} -body {
+    .sb configure -validate all
+    .sb cget -validate
+} -cleanup {
+    destroy .sb
+} -result {all}
+
+test spinbox-1.8.2 "option -validate" -setup {
+    ttk::spinbox .sb -from 0 -to 100
+} -body {
+    .sb configure -validate key
+    .sb configure -validate focus
+    .sb configure -validate focusin
+    .sb configure -validate focusout
+    .sb configure -validate none
+    .sb cget -validate
+} -cleanup {
+    destroy .sb
+} -result none
+
+test spinbox-1.8.3 "option -validate" -setup {
+    ttk::spinbox .sb -from 0 -to 100
+} -body {
+    .sb configure -validate bogus
+} -cleanup {
+    destroy .sb
+} -returnCodes error -result {bad validate "bogus": must be all, key, focus, focusin, focusout, or none}
+
+test spinbox-1.8.4 "-validate option: " -setup {
+    ttk::spinbox .sb -from 0 -to 100
+    set ::spinbox_test {}
+} -body {
+    .sb configure -validate all -validatecommand {set ::spinbox_test %P}
+    pack .sb
+    update idletasks
+    .sb set 50
+    focus -force .sb
+    set ::spinbox_wait 0
+    set timer [after 100 {set ::spinbox_wait 1}]
+    vwait ::spinbox_wait
+    after cancel $timer
+    set ::spinbox_test
+} -cleanup {
+    destroy .sb
+} -result 50
+
+
+test spinbox-2.0 "current command -- unset should be 0" -constraints nyi -setup {
+    ttk::spinbox .sb -values [list a b c d e a]
+} -body {
+    .sb current
+} -cleanup {
+    destroy .sb
+} -result 0
+# @@@ for combobox, this is -1.
+
+test spinbox-2.1 "current command -- set index" -constraints nyi -setup {
+    ttk::spinbox .sb -values [list a b c d e a]
+} -body {
+    .sb current 5
+    .sb get
+} -cleanup {
+    destroy .sb
+} -result a
+
+test spinbox-2.2 "current command -- change -values" -constraints nyi -setup {
+    ttk::spinbox .sb -values [list a b c d e a]
+} -body {
+    .sb current 5
+    .sb configure -values [list c b a d e]
+    .sb current
+} -cleanup {
+    destroy .sb
+} -result 2
+
+test spinbox-2.3 "current command -- change value" -constraints nyi -setup {
+    ttk::spinbox .sb -values [list c b a d e]
+} -body {
+    .sb current 2
+    .sb set "b"
+    .sb current
+} -cleanup {
+    destroy .sb
+} -result 1
+
+test spinbox-2.4 "current command -- value not in list" -constraints nyi -setup {
+    ttk::spinbox .sb -values [list c b a d e]
+} -body {
+    .sb current 2
+    .sb set "z"
+    .sb current
+} -cleanup {
+    destroy .sb
+} -result -1
+
+test spinbox-3.0 "textarea should expand to fill widget" -setup {
+    set SBV 5
+    set ::spinbox_test {}
+    ttk::spinbox .sb -from 0 -to 10 -textvariable SBV
+} -body {
+    grid columnconfigure . 0 -weight 1
+    update idletasks
+    set timer [after 500 {set ::spinbox_test timedout}]
+    bind . <Map> {
+        after idle {
+            wm geometry . "210x80"
+           update idletasks
+            set ::spinbox_test [.sb identify element 25 5]
+        }
+        bind . <Map> {}
+    }
+    grid .sb -sticky ew
+    vwait ::spinbox_test
+    set ::spinbox_test
+} -cleanup {
+    destroy .sb
+    unset -nocomplain ::spinbox_test SBV
+} -result {textarea}
+
+test spinbox-4.0 "Increment with duplicates in -values, wrap" -setup {
+    ttk::spinbox .sb -values {one two three 4 5 two six} -wrap true
+    set max [expr {[llength [.sb cget -values]] + 2}]
+} -body {
+    set ::spinbox_test [.sb get]
+    for {set i 0} {$i < $max} {incr i} {
+        event generate .sb <<Increment>>
+        lappend ::spinbox_test [.sb get]
+    }
+    for {set i 0} {$i < $max} {incr i} {
+        event generate .sb <<Decrement>>
+        lappend ::spinbox_test [.sb get]
+    }
+    set ::spinbox_test
+} -cleanup {
+    destroy .sb
+    unset -nocomplain ::spinbox_test max
+} -result {one two three 4 5 two six one two one six two 5 4 three two one six}
+
+test spinbox-4.1 "Increment with duplicates in -values, wrap, initial value set" -setup {
+    ttk::spinbox .sb -values {one two three 4 5 two six} -wrap true
+    set max [expr {[llength [.sb cget -values]] + 2}]
+} -body {
+    .sb set three
+    set ::spinbox_test [.sb get]
+    for {set i 0} {$i < $max} {incr i} {
+        event generate .sb <<Increment>>
+        lappend ::spinbox_test [.sb get]
+    }
+    .sb set two    ; # the first "two" in the -values list becomes the current value
+    for {set i 0} {$i < $max} {incr i} {
+        event generate .sb <<Decrement>>
+        lappend ::spinbox_test [.sb get]
+    }
+    set ::spinbox_test
+} -cleanup {
+    destroy .sb
+    unset -nocomplain ::spinbox_test max
+} -result {three 4 5 two six one two three 4 5 one six two 5 4 three two one six}
+
+test spinbox-4.2 "Increment with duplicates in -values, no wrap" -setup {
+    ttk::spinbox .sb -values {one two three 4 5 two six} -wrap false
+    set max [expr {[llength [.sb cget -values]] + 2}]
+} -body {
+    set ::spinbox_test [.sb get]
+    for {set i 0} {$i < $max} {incr i} {
+        event generate .sb <<Increment>>
+        lappend ::spinbox_test [.sb get]
+    }
+    for {set i 0} {$i < $max} {incr i} {
+        event generate .sb <<Decrement>>
+        lappend ::spinbox_test [.sb get]
+    }
+    set ::spinbox_test
+} -cleanup {
+    destroy .sb
+    unset -nocomplain ::spinbox_test max
+} -result {one two three 4 5 two six six six two 5 4 three two one one one one}
+
+
+# nostomp: NB intentional difference between ttk::spinbox and tk::spinbox;
+# see also #1439266
+#
+test spinbox-nostomp-1 "don't stomp on -variable (init; -from/to)" -body {
+    set SBV 55
+    ttk::spinbox .sb -textvariable SBV -from 0 -to 100 -increment 5
+    list $SBV [.sb get]
+} -cleanup {
+   unset SBV
+   destroy .sb
+} -result [list 55 55]
+
+test spinbox-nostomp-2 "don't stomp on -variable (init; -values)" -body {
+    set SBV Apr
+    ttk::spinbox .sb -textvariable SBV -values {Jan Feb Mar Apr May Jun Jul Aug}
+    list $SBV [.sb get]
+} -cleanup {
+   unset SBV
+   destroy .sb
+} -result [list Apr Apr]
+
+test spinbox-nostomp-3 "don't stomp on -variable (configure; -from/to)" -body {
+    set SBV 55
+    ttk::spinbox .sb
+    .sb configure -textvariable SBV -from 0 -to 100 -increment 5
+    list $SBV [.sb get]
+} -cleanup {
+   unset SBV
+   destroy .sb
+} -result [list 55 55]
+
+test spinbox-nostomp-4 "don't stomp on -variable (configure; -values)" -body {
+    set SBV Apr
+    ttk::spinbox .sb
+    .sb configure -textvariable SBV -values {Jan Feb Mar Apr May Jun Jul Aug}
+    list $SBV [.sb get]
+} -cleanup {
+   unset SBV
+   destroy .sb
+} -result [list Apr Apr]
+
+test spinbox-dieoctaldie-1 "Cope with leading zeros" -body {
+    # See SF#2358545 -- ttk::spinbox also affected
+    set secs 07
+    ttk::spinbox .sb -from 0 -to 59 -format %02.0f -textvariable secs
+
+    set result [list $secs]
+    event generate .sb <<Increment>>; lappend result $secs
+    event generate .sb <<Increment>>; lappend result $secs
+    event generate .sb <<Increment>>; lappend result $secs
+    event generate .sb <<Increment>>; lappend result $secs
+
+    event generate .sb <<Decrement>>; lappend result $secs
+    event generate .sb <<Decrement>>; lappend result $secs
+    event generate .sb <<Decrement>>; lappend result $secs
+    event generate .sb <<Decrement>>; lappend result $secs
+
+    set result
+} -result [list 07 08 09 10 11 10 09 08 07] -cleanup {
+    destroy .sb
+    unset secs
+}
+
+test spinbox-dieoctaldie-2 "Cope with general bad input" -body {
+    set result [list]
+    ttk::spinbox .sb -from 0 -to 100 -format %03.0f
+    .sb set asdfasdf ; lappend result [.sb get]
+    event generate .sb <<Increment>> ; lappend result [.sb get]
+    .sb set asdfasdf ; lappend result [.sb get]
+    event generate .sb <<Decrement>> ; lappend result [.sb get]
+} -result [list asdfasdf 000 asdfasdf 000] -cleanup {
+    destroy .sb
+}
+
+tcltest::cleanupTests
+
+# Local variables:
+# mode: tcl
+# End: