diff options
Diffstat (limited to 'tests/item.test')
-rw-r--r-- | tests/item.test | 384 |
1 files changed, 384 insertions, 0 deletions
diff --git a/tests/item.test b/tests/item.test new file mode 100644 index 0000000..b32f5c6 --- /dev/null +++ b/tests/item.test @@ -0,0 +1,384 @@ +# Commands covered: treectrl's widget command item +# +# This file contains a collection of tests for the item widget command of +# the tktreectrl extension. Sourcing this file into Tcl runs the tests and +# generates output for errors. No output means no errors were found. +# +# Copyright (c) 2000 by Scriptics Corporation. +# Copyright (c) 2002 by Christian Krone. +# +# See the file "license.terms" for information on usage and redistribution +# of this file, and for a DISCLAIMER OF ALL WARRANTIES. +# +# CVS: @(#) $Id: item.test,v 1.1 2002/12/30 21:42:21 krischan Exp $ + +if {[lsearch [namespace children] ::tcltest] == -1} { + package require tcltest 2 + namespace import ::tcltest::* +} + +package require Tk +package_require treectrl + +test item-0.1 {some needed preparations} -body { + pack [treectrl .t] +} -result {} + +test item-1.1 {item: missing command} -body { + .t item +} -returnCodes error -result {wrong # args: should be ".t item command ?arg arg...?"} + +test item-2.2 {item: invalid command} -body { + .t item foo +} -returnCodes error -result {bad command "foo": must be ancestors, children, create, delete, firstchild, lastchild, nextsibling, numchildren, parent, prevsibling, remove, bbox, complex, dump, element, hasbutton, index, isancestor, isopen, rnc, sort, state, style, text, or visible} + +test item-2.3 {item create: too many args} -body { + .t item create foo +} -returnCodes error -result {wrong # args: should be ".t item create"} + +# Before continuing to test the item descriptions and their modifiers, +# lets create some items with this hierarchy: +# 0 +# + 1 +# | + 2 +# | + 3 +# | + 4 +# + 5 +# | + 6 +# | + 7 +# + 8 +test item-2.4 {create some items} -body { + set n1 [.t item create]; .t item lastchild 0 $n1 + set n2 [.t item create]; .t item lastchild $n1 $n2 + set n3 [.t item create]; .t item lastchild $n1 $n3 + set n4 [.t item create]; .t item lastchild $n3 $n4 + set n5 [.t item create]; .t item lastchild 0 $n5 + set n6 [.t item create]; .t item lastchild $n5 $n6 + set n7 [.t item create]; .t item lastchild $n5 $n7 + set n8 [.t item create]; .t item lastchild 0 $n8 +} -result {8} + +test item-2.5 {some more preparations} -body { + .t state define state0 + .t element create eBorder border + .t element create eImage image + .t element create eRect rect + .t element create eText text -fill red + .t style create testStyle + .t style elements testStyle {eText eBorder} +} -result {} + +test tree-2.6 {item create} -body { + list [.t item create] [.t item create] [.t item create] +} -result {9 10 11} + +test tree-3.1 {item delete: missing itemDesc} -body { + .t item delete +} -returnCodes error -result {wrong # args: should be ".t item delete first ?last?"} + +test tree-3.2 {item delete: unknown item} -body { + .t item delete 999 +} -returnCodes error -result {item "999" doesn't exist} + +test tree-3.3 {item delete: one item} -body { + .t item delete 9 +} -result {} + +test tree-3.4 {item delete: item range without common ancestor} -body { + .t item delete 10 11 +} -returnCodes error -result {item 10 and item 11 don't share a common ancestor} + +test tree-3.5 {item delete: item range without common ancestor} -body { + .t item lastchild 8 10 + .t item lastchild 8 11 + .t item delete 10 11 +} -result {} + +test tree-3.6 {item delete: don't delete "root" itemDesc} -body { + .t item delete root + .t index root +} -result {0} + +test tree-3.7 {item delete: deleting root should be ignored} -body { + .t item delete [.t index root] + update idletasks +} -result {} + +test tree-4.1 {item ancestors: no ancestor yet} -body { + .t item create + .t item ancestors 12 +} -result {} + +test tree-4.2 {item ancestors} -body { + .t item lastchild 7 12 + .t item ancestors 12 +} -result {7 5 0} + +test tree-5.1 {item children: no children} -body { + .t item children 12 +} -result {} + +test tree-5.2 {item children} -body { + .t item children 0 +} -result {1 5 8} + +test tree-6.1 {item firstchild: missing itemDesc} -body { + .t item firstchild +} -returnCodes error -result {wrong # args: should be ".t item firstchild item ?newFirstChild?"} + +test tree-6.2 {item firstchild: no children} -body { + .t item firstchild 12 +} -result {} + +test tree-6.3 {item firstchild} -body { + .t item firstchild 1 +} -result {2} + +test tree-7.1 {item lastchild: no children} -body { + .t item lastchild 1 +} -result {3} + +test tree-8.1 {item nextsibling: no sibling} -body { + .t item nextsibling 12 +} -result {} + +test tree-8.2 {item nextsibling: no sibling} -body { + .t item nextsibling 2 +} -result {3} + +test tree-9.1 {item numchildren: no children} -body { + .t item numchildren 12 +} -result {0} + +test tree-9.2 {item numchildren} -body { + .t item numchildren 1 +} -result {2} + +test tree-10.1 {item parent: no parent} -body { + .t item parent root +} -result {} + +test tree-10.2 {item parent} -body { + .t item parent "root firstchild" +} -result {0} + +test tree-11.1 {item prevsibling: missing arg} -body { + .t item prevsibling +} -returnCodes error -result {wrong # args: should be ".t item prevsibling item ?newPrevSibling?"} + +test tree-11.2 {item prevsibling: no prevsibling} -body { + .t item prevsibling 1 +} -result {} + +test tree-11.3 {item prevsibling} -body { + .t item prevsibling 3 +} -result {2} + +test tree-12.1 {item remove: invalid item} -body { + .t item remove 999 +} -returnCodes error -result {item "999" doesn't exist} + +test tree-12.2 {item remove} -body { + .t item remove 12 +} -result {} + +test tree-13.1 {item complex: missing args} -body { + .t item complex 8 +} -returnCodes error -result {wrong # args: should be ".t item complex item list..."} + +test tree-13.2 {item complex: only allowed if column style is defined} -body { + .t item complex 8 {{e1 -text Hallo}} +} -returnCodes error -result {item 8 doesn't have column 0} + +test tree-13.3 {item complex: invalid list} -body { + .t item style set 8 0 testStyle + .t item complex 8 {{e1 -text}} +} -returnCodes error -result {wrong # args: should be "element option value..."} + +test tree-13.4 {item complex: element name not defined in style} -body { + .t item complex 8 {{e1 -text Hallo}} +} -returnCodes error -result {element "e1" doesn't exist} + +test tree-13.5 {item complex: option not known in element} -body { + .t item complex 8 {{eText -bitmap questhead}} +} -returnCodes error -result {unknown option "-bitmap"} + +test tree-13.6 {item complex: invalid option value in element} -body { + .t item complex 8 {{eText -fill foo}} +} -returnCodes error -result {unknown color name "foo"} + +test tree-14.1 {item element: missing command} -body { + .t item element +} -returnCodes error -result {wrong # args: should be ".t item element command item column element ?arg ...?"} + +test tree-14.2 {item element: invalid command} -body { + .t item element foo 8 0 eText +} -returnCodes error -result {bad command "foo": must be actual, cget, or configure} + +test tree-14.3 {item element actual: missing arg} -body { + .t item element actual 8 0 eText +} -returnCodes error -result {wrong # args: should be ".t item element actual item column element option"} + +test tree-14.4 {item element actual} -body { + .t item element actual 8 0 eText -fill +} -result {red} + +test tree-14.5 {item element cget: missing arg} -body { + .t item element cget 8 0 eText +} -returnCodes error -result {wrong # args: should be ".t item element cget item column element option"} + +test tree-14.6 {item element cget} -body { + .t item element cget 8 0 eText -fill +} -result {} + +test tree-14.7 {item element configure} -body { + .t item element configure 8 0 eText +} -result {{-data {} {} {} {}} {-datatype {} {} {} {}} {-format {} {} {} {}} {-fill {} {} {} {}} {-font {} {} {} {}} {-justify {} {} {} {}} {-lines {} {} {} {}} {-text {} {} {} {}} {-width {} {} {} {}} {-wrap {} {} {} {}}} + +test tree-14.8 {item element configure/cget} -body { + .t item element configure 8 0 eText -fill yellow + .t item element cget 8 0 eText -fill +} -result {yellow} + +test tree-14.9 {item element configure} -body { + .t item element configure 8 0 eText -fill +} -result {-fill {} {} {} yellow} + +test tree-15.1 {item style: missing args} -body { + .t item style +} -returnCodes error -result {wrong # args: should be ".t item style command item ?arg ...?"} + +test tree-15.2 {item style: invalid command} -body { + .t item style foo bar +} -returnCodes error -result {bad command "foo": must be elements, map, or set} + +test tree-15.3 {item style: invalid command} -body { + .t item style foo bar +} -returnCodes error -result {bad command "foo": must be elements, map, or set} + +test tree-15.4 {item style elements: missing args} -body { + .t item style elements 8 +} -returnCodes error -result {wrong # args: should be ".t item style elements item column"} + +test tree-15.5 {item style elements: invalid item} -body { + .t item style elements 999 +} -returnCodes error -result {item "999" doesn't exist} + +test tree-15.6 {item style elements: item without style} -body { + .t item style elements 1 0 +} -returnCodes error -result {item 1 doesn't have column 0} + +test tree-15.7 {item style elements} -body { + .t item style elements 8 0 +} -result {eText} + +test tree-15.8 {item style map: missing args} -body { + .t item style map 8 +} -returnCodes error -result {wrong # args: should be ".t item style map item column style map"} + +test tree-15.9 {item style map: invalid item} -body { + .t item style map 999 +} -returnCodes error -result {item "999" doesn't exist} + +test tree-15.10 {item style map: item with unknown style} -body { + .t item style map 1 0 noStyle {foo bar} +} -returnCodes error -result {style "noStyle" doesn't exist} + +test tree-15.11 {item style map: odd elemented list} -body { + .t item style map 8 0 testStyle foo + .t item style elements 8 0 +} -returnCodes error -result {list must contain even number of elements} + +test tree-15.12 {item style map: unknown element} -body { + .t style create testStyle2 + .t item style map 8 0 testStyle2 {eText foo} + .t item style elements 8 0 +} -returnCodes error -result {element "foo" doesn't exist} + +test tree-15.13 {item style map: element not in to-style} -body { + .t item style map 8 0 testStyle2 {eText eRect} +} -returnCodes error -result {style testStyle2 does not use element eRect} + +test tree-15.14 {item style map: element not in from-style} -body { + # .t style elements testStyle2 {eImage eRect} + .t item style map 8 0 testStyle2 {eRect eBorder} +} -returnCodes error -result {style testStyle does not use element eRect} + +test tree-15.15 {item style map: different element types} -body { + .t style elements testStyle2 {eImage eRect} + .t item style map 8 0 testStyle2 {eBorder eRect} +} -returnCodes error -result {can't map element type border to rect} + +test tree-15.16 {item style set: invalid item} -body { + .t item style set foo bar +} -returnCodes error -result {bad item description "foo"} + +test tree-15.17 {item style set: without args returns all styles} -body { + .t item style set 2 +} -result {} + +test tree-15.18 {item style set: without args returns style} -body { + .t item style set 2 0 +} -returnCodes error -result {item 2 doesn't have column 0} + +test tree-15.19 {item style set: without args returns style} -body { + .t item style set 8 0 +} -result {testStyle} + +test tree-15.20 {item style set} -body { + .t item style set 8 0 testStyle2 + .t item style set 8 +} -result {testStyle2} + +test tree-16.1 {item state: missing args} -body { + .t item state +} -returnCodes error -result {wrong # args: should be ".t item state item ?state ...?"} + +test tree-16.2 {item state: unknown item} -body { + .t item state 999 +} -returnCodes error -result {item "999" doesn't exist} + +test tree-16.3 {item state: list all set states} -body { + .t item state 8 +} -result {open enabled} + +test tree-16.4 {item state: try to reset predefined state} -body { + .t item state 8 !open +} -returnCodes error -result {cannot change state "!open"} + +test tree-16.5 {item state: unknown states} -body { + .t item state 8 foo bar +} -returnCodes error -result {cannot change state "foo"} + +test tree-16.6 {item state: switch on states} -body { + .t item state 8 state0 + .t item state 8 +} -result {open enabled state0} + +test tree-16.7 {item state: switch off states} -body { + .t item state 8 !state0 + .t item state 8 +} -result {open enabled} + +test tree-16.8 {item state: reset predefined state} -body { + .t collapse 8 + .t item state 8 +} -result {enabled} + +test tree-16.9 {item state: reset predefined state} -body { + .t expand 8 + .t item state 8 +} -result {open enabled} + +test tree-16.10 {item state: reset predefined state} -body { + .t toggle 8 + .t item state 8 +} -result {enabled} + +test item-99.1 {some needed cleanup} -body { + destroy .t +} -result {} + +# cleanup +::tcltest::cleanupTests +return |