summaryrefslogtreecommitdiffstats
path: root/tests/item.test
diff options
context:
space:
mode:
Diffstat (limited to 'tests/item.test')
-rw-r--r--tests/item.test384
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