summaryrefslogtreecommitdiffstats
path: root/tests/itemdesc.test
diff options
context:
space:
mode:
authortreectrl <treectrl>2006-10-29 02:39:45 (GMT)
committertreectrl <treectrl>2006-10-29 02:39:45 (GMT)
commit4c54c9a0a87f9d9a3a0c068669d8c46b4847346d (patch)
tree3ec5074cb4c7feb0ee282d597827da41eaaabe1a /tests/itemdesc.test
parent892f01bbbc328b6abfa923e8f9cbb939fc7b9396 (diff)
downloadtktreectrl-4c54c9a0a87f9d9a3a0c068669d8c46b4847346d.zip
tktreectrl-4c54c9a0a87f9d9a3a0c068669d8c46b4847346d.tar.gz
tktreectrl-4c54c9a0a87f9d9a3a0c068669d8c46b4847346d.tar.bz2
Moved item-description tests to a new file and added some more tests.
Diffstat (limited to 'tests/itemdesc.test')
-rw-r--r--tests/itemdesc.test493
1 files changed, 493 insertions, 0 deletions
diff --git a/tests/itemdesc.test b/tests/itemdesc.test
new file mode 100644
index 0000000..ed18109
--- /dev/null
+++ b/tests/itemdesc.test
@@ -0,0 +1,493 @@
+# Commands covered: item descriptions
+#
+# This file contains a collection of tests for the treectrl 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.
+#
+# RCS: @(#) $Id: itemdesc.test,v 1.1 2006/10/29 02:39:45 treectrl Exp $
+
+if {[lsearch [namespace children] ::tcltest] == -1} {
+ package require tcltest 2
+ namespace import ::tcltest::*
+}
+
+package require Tk
+package require treectrl
+
+# For the tests of the item descriptions we use [.t see],
+# if we want to generate an error on unknown items.
+# For the positive cases we use [.t item id] since it returns the item id.
+
+test itemdesc-0.1 {some needed preparations} -body {
+ treectrl .t -itemheight 20 -showheader no
+ .t column create -width 200
+ pack .t -expand yes -fill both
+ update idletasks
+} -result {}
+
+test itemdesc-1.1 {bogus itemdesc} -body {
+ .t item id ""
+} -returnCodes error -result {bad item description ""}
+
+test itemdesc-1.2 {all} -setup {
+ .t item create -count 10
+} -body {
+ lsort -integer [.t item id all]
+} -cleanup {
+ .t item delete all
+} -result {0 1 2 3 4 5 6 7 8 9 10}
+
+test itemdesc-1.3 {unknown id} -body {
+ .t see 999
+} -returnCodes error -result {item "999" doesn't exist}
+
+test itemdesc-1.4 {id of root} -body {
+ .t item id 0
+} -result {0}
+
+test itemdesc-1.5 {id of active} -body {
+ .t item id active
+} -result {0}
+
+test itemdesc-1.6 {id of anchor (abbreviated)} -body {
+ .t item id an
+} -result {0}
+
+test itemdesc-1.7 {first} -body {
+ .t item id first
+} -result {0}
+
+test itemdesc-1.8 {first visible} -setup {
+ .t configure -showroot 1
+} -body {
+ .t item id "first visible"
+} -result {0}
+
+test itemdesc-1.9 {first visible without any node} -setup {
+ .t configure -showroot 0
+} -body {
+ .t see "first visible"
+} -returnCodes error -result {item "first visible" doesn't exist}
+
+test itemdesc-1.10 {last} -body {
+ .t item id last
+} -result {0}
+
+test itemdesc-1.10.1 {end} -body {
+ .t item id end
+} -result {0}
+
+test itemdesc-1.11 {last visible} -setup {
+ .t configure -showroot 1
+} -body {
+ .t item id "last visible"
+} -result {0}
+
+test itemdesc-1.12 {last visible without any node} -setup {
+ .t configure -showroot 0
+} -body {
+ .t see "last visible"
+} -returnCodes error -result {item "last visible" doesn't exist}
+
+test itemdesc-1.13 {nearest without x/y} -body {
+ .t item id nearest
+} -returnCodes error -result {missing arguments to "nearest" keyword}
+
+test itemdesc-1.14 {nearest with invalid x/y} -body {
+ .t item id "nearest foo bar"
+} -returnCodes error -result {bad screen distance "foo"}
+
+test itemdesc-1.15 {nearest with valid x/y} -setup {
+ .t configure -showroot 1
+} -body {
+ .t item id "nearest 10 10"
+} -result {0}
+
+test itemdesc-1.16 {nearest with valid x/y, but no item} -setup {
+ .t configure -showroot 0
+} -body {
+ .t item id "nearest 10 10"
+} -result {}
+
+# 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 itemdesc-2.16 {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 itemdesc-2.18 {rnc without r/c} -body {
+ .t item id rnc
+} -returnCodes error -result {missing arguments to "rnc" keyword}
+
+test itemdesc-2.19 {rnc with invalid r/c} -body {
+ .t item id "rnc foo bar"
+} -returnCodes error -result {expected integer but got "foo"}
+
+test itemdesc-2.20 {rnc with valid r/c} -body {
+ .t item id "rnc 0 0"
+} -result {1}
+
+test itemdesc-2.21 {root} -body {
+ .t configure -showroot 1 -orient vertical
+ .t item id root
+} -result {0}
+
+test itemdesc-2.22 {bogus modifier} -body {
+ .t item id "0 foo"
+} -returnCodes error -result {bad modifier "foo": must be *} -match glob
+
+test itemdesc-2.23 {valid modifier with too few arguments} -body {
+ .t item id "0 child"
+} -returnCodes error -result {missing arguments to "child" modifier}
+
+test itemdesc-2.24 {modifier visible alone generates an error} -body {
+ .t item id "0 visible"
+} -returnCodes error -result {bad modifier "visible": must be *} -match glob
+
+test itemdesc-2.25 {modifier above} -body {
+ set res {}
+ for {set n 0} {$n < 9} {incr n} {
+ lappend res [.t item id "$n above"]
+ }
+ set res
+} -result {{} 0 1 2 3 4 5 6 7}
+
+test itemdesc-2.26 {modifier below} -body {
+ set res {}
+ for {set n 0} {$n < 9} {incr n} {
+ lappend res [.t item id "$n below"]
+ }
+ set res
+} -result {1 2 3 4 5 6 7 8 {}}
+
+test itemdesc-2.27 {modifier bottom} -body {
+ set res {}
+ for {set n 0} {$n < 9} {incr n} {
+ lappend res [.t item id "$n bottom"]
+ }
+ set res
+} -result {8 8 8 8 8 8 8 8 8}
+
+test itemdesc-2.28 {modifier child} -body {
+ set res {}
+ for {set n 0} {$n < 6} {incr n} {
+ for {set c 0} {$c < 3} {incr c} {
+ lappend res [.t item id "$n child $c"]
+ }
+ }
+ set res
+} -result {1 5 8 2 3 {} {} {} {} 4 {} {} {} {} {} 6 7 {}}
+
+test itemdesc-2.29 {modifier firstchild} -body {
+ set res {}
+ for {set n 0} {$n < 9} {incr n} {
+ lappend res [.t item id "$n firstchild"]
+ }
+ set res
+} -result {1 2 {} 4 {} 6 {} {} {}}
+
+test itemdesc-2.30 {modifier lastchild} -body {
+ set res {}
+ for {set n 0} {$n < 9} {incr n} {
+ lappend res [.t item id "$n lastchild"]
+ }
+ set res
+} -result {8 3 {} 4 {} 7 {} {} {}}
+
+test itemdesc-2.30 {modifier left, leftmost, right, and rightmost} -body {
+ list [.t item id "1 left"] [.t item id "1 right"] \
+ [.t item id "2 leftmost"] [.t item id "3 rightmost"]
+} -result {{} {} 2 3}
+
+test itemdesc-2.31 {modifier next} -body {
+ set res {}
+ for {set n 0} {$n < 9} {incr n} {
+ lappend res [.t item id "$n next"]
+ }
+ set res
+} -result {1 2 3 4 5 6 7 8 {}}
+
+test itemdesc-2.32 {modifier nextsibling} -body {
+ set res {}
+ for {set n 0} {$n < 9} {incr n} {
+ lappend res [.t item id "$n nextsibling"]
+ }
+ set res
+} -result {{} 5 3 {} {} 8 7 {} {}}
+
+test itemdesc-2.33 {modifier parent} -body {
+ set res {}
+ for {set n 0} {$n < 9} {incr n} {
+ lappend res [.t item id "$n parent"]
+ }
+ set res
+} -result {{} 0 1 1 3 0 5 5 0}
+
+test itemdesc-2.34 {modifier prev} -body {
+ set res {}
+ for {set n 0} {$n < 9} {incr n} {
+ lappend res [.t item id "$n prev"]
+ }
+ set res
+} -result {{} 0 1 2 3 4 5 6 7}
+
+test itemdesc-2.34 {modifier prevsibling} -body {
+ set res {}
+ for {set n 0} {$n < 9} {incr n} {
+ lappend res [.t item id "$n prevsibling"]
+ }
+ set res
+} -result {{} {} {} 2 {} 1 {} 6 5}
+
+test itemdesc-2.35 {modifier sibling} -body {
+ set res {}
+ for {set n 0} {$n < 7} {incr n} {
+ for {set c 0} {$c < 3} {incr c} {
+ lappend res [.t item id "$n sibling $c"]
+ }
+ }
+ set res
+} -result {{} {} {} 1 5 8 2 3 {} 2 3 {} 4 {} {} 1 5 8 6 7 {}}
+
+test itemdesc-2.36 {modifier top} -body {
+ set res {}
+ for {set n 0} {$n < 9} {incr n} {
+ lappend res [.t item id "$n top"]
+ }
+ set res
+} -result {0 0 0 0 0 0 0 0 0}
+
+test itemdesc-2.37 {modifier cocktail} -body {
+ set res {}
+ set itemDesc 7
+ foreach mod {
+ bottom rightmost sibling 0 nextsibling prev parent
+ prevsibling prev nextsibling lastchild next
+ } {
+ lappend itemDesc $mod
+ catch {lappend res [.t item id $itemDesc]}
+ }
+ set res
+} -result {8 8 1 5 4 3 2 1 5 7 8}
+
+test itemdesc-2.38 {multiple items: list} -body {
+ .t item id "list {3 8 8}"
+} -result {3 8 8}
+
+test itemdesc-2.39 {multiple items: range} -body {
+ .t item id "range 1 6"
+} -result {1 2 3 4 5 6}
+
+test itemdesc-2.40 {multiple items: range reversed} -body {
+ .t item id "range 6 1"
+} -result {1 2 3 4 5 6}
+
+test itemdesc-2.41 {multiple items: ancestors} -body {
+ .t item id "4 ancestors"
+} -result {3 1 0}
+
+test itemdesc-2.42 {multiple items: children} -body {
+ .t item id "root children"
+} -result {1 5 8}
+
+test itemdesc-2.43 {multiple items: nested list} -body {
+ .t item id "list {3 {list {1 root}} 4}"
+} -result {3 1 0 4}
+
+test itemdesc-2.44 {multiple items: descendants} -body {
+ .t item id "1 descendants"
+} -result {2 3 4}
+
+# qualifiers in item descriptions
+test itemdesc-3.1 {where visible is allowed} -body {
+ .t item collapse 3
+ .t item collapse 5
+ set res {}
+ foreach index {
+ first last
+ } {
+ lappend res [.t item id "$index visible"]
+ }
+ foreach modifier {
+ next prev firstchild lastchild {child 1}
+ nextsibling prevsibling {sibling 0}
+ } {
+ lappend res [.t item id "5 $modifier visible"]
+ }
+ set res
+} -result {0 8 8 3 {} {} {} 8 1 1}
+
+test itemdesc-3.2 {where state is allowed} -body {
+ set res {}
+ foreach index {
+ first last
+ } {
+ lappend res [.t item id "$index state enabled"]
+ }
+ foreach modifier {
+ next prev firstchild lastchild {child 0}
+ nextsibling prevsibling {sibling 0}
+ } {
+ lappend res [.t item id "5 $modifier state enabled"]
+ }
+ set res
+} -result {0 8 6 4 6 7 6 8 1 1}
+
+test itemdesc-3.3 {qualifier state: missing args} -body {
+ .t item id "first state"
+} -returnCodes error -result {missing arguments to "state" qualifier}
+
+test itemdesc-3.4 {qualifier state: unknown state} -body {
+ .t item id "first state foo"
+} -returnCodes error -result {unknown state "foo"}
+
+test itemdesc-3.5 {qualifier state: toggle not allowed} -body {
+ .t item id "first state ~open"
+} -returnCodes error -result {can't specify '~' for this command}
+
+test itemdesc-3.6 {qualifier state: open ok} -body {
+ .t item id "first state open"
+} -result {0}
+
+test itemdesc-3.7 {qualifier state: !open ok} -body {
+ set res {}
+ lappend res [.t item id "first state !open"]
+ lappend res [.t item id "last state !open"]
+} -result {3 5}
+
+test itemdesc-3.8 {qualifier state: multiple states} -body {
+ .t item id "last state {open enabled active}"
+} -result {0}
+
+test itemdesc-3.9 {qualifier after index and modifier} -body {
+ .t item id "first state !open next state !open"
+} -result {5}
+
+test itemdesc-3.10 {qualifier state: following each modifier} -body {
+ set res {}
+ foreach modifier {
+ firstchild lastchild {child 0}
+ } {
+ lappend res [.t item id "root $modifier state !open"]
+ }
+ foreach modifier {
+ next prev nextsibling prevsibling {sibling 0}
+ } {
+ lappend res [.t item id "1 $modifier state !open"]
+ }
+ .t item expand 3
+ .t item expand 5
+ set res
+} -result {5 5 5 3 {} 5 {} 5}
+
+test itemdesc-4.1 {modifiers following multiple items is forbidden} -body {
+ .t item id "all children"
+} -returnCodes error -result {unexpected arguments after "all"}
+
+test itemdesc-4.2 {modifiers following multiple items is forbidden} -body {
+ .t item id "all visible children"
+} -returnCodes error -result {unexpected arguments after "all visible"}
+
+test itemdesc-4.3 {modifiers following multiple items is forbidden} -body {
+ .t item id "range 1 2 next"
+} -returnCodes error -result {unexpected arguments after "range 1 2"}
+
+test itemdesc-4.4 {modifiers following multiple items is forbidden} -body {
+ .t item id "1 descendants next"
+} -returnCodes error -result {unexpected arguments after "1 descendants"}
+
+test itemdesc-4.5 {modifiers following multiple items is forbidden} -setup {
+ .t item tag add "1 descendants" tagA
+} -body {
+ lsort -integer [.t item id "tagA above"]
+} -cleanup {
+ .t item tag remove all tagA
+} -returnCodes error -result {unexpected arguments after "tagA"}
+
+test itemdesc-4.10 {modifiers following single item ok} -setup {
+ .t item tag add 3 tagA
+} -body {
+ lsort -integer [.t item id "tagA above"]
+} -cleanup {
+ .t item tag remove all tagA
+} -result {2}
+
+test itemdesc-5.1 {qualifiers may be first} -body {
+ lsort -integer [.t item id "depth 1"]
+} -result {1 5 8}
+
+test itemdesc-5.2 {qualifiers may be first} -body {
+ lsort -integer [.t item id "visible"]
+} -result {0 1 2 3 4 5 6 7 8}
+
+test itemdesc-5.3 {qualifiers may be first} -setup {
+ .t item collapse 3
+} -body {
+ lsort -integer [.t item id "!visible"]
+} -cleanup {
+ .t item expand 3
+} -result {4}
+
+test itemdesc-5.4 {qualifiers may be first} -setup {
+ .t item tag add "1 descendants" a
+} -body {
+ lsort -integer [.t item id "tag a"]
+} -cleanup {
+ .t item tag remove all a
+} -result {2 3 4}
+
+test itemdesc-5.5 {qualifiers may be first} -setup {
+ .t item collapse {list {3 5}}
+} -body {
+ lsort -integer [.t item id "state !open"]
+} -cleanup {
+ .t item expand {list {3 5}}
+} -result {3 5}
+
+test itemdesc-6.1 {-itemprefix} -setup {
+ .t configure -itemprefix item
+} -body {
+ lsort -dictionary [.t item id "item1 descendants"]
+} -cleanup {
+ .t configure -itemprefix ""
+} -result {item2 item3 item4}
+
+test itemdesc-6.2 {-itemprefix same as a tag} -setup {
+ .t configure -itemprefix item
+ .t item tag add all item1
+} -body {
+ lsort -dictionary [.t item id "item1 descendants"]
+} -cleanup {
+ .t configure -itemprefix ""
+ .t item tag remove all item1
+} -result {item2 item3 item4}
+
+test itemdesc-99.1 {some needed cleanup} -body {
+ destroy .t
+} -result {}
+
+# cleanup
+::tcltest::cleanupTests
+return