Pratt 1.5.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.exrc +61 -0
- data/.gitignore +4 -0
- data/History.txt +6 -0
- data/Manifest.txt +46 -0
- data/Pratt.gemspec +351 -0
- data/README.txt +66 -0
- data/Rakefile +85 -0
- data/TODO +54 -0
- data/VERSION +1 -0
- data/bin/pratt.rb +13 -0
- data/config.rb +34 -0
- data/lib/pratt.rb +527 -0
- data/lib/pratt/array.rb +11 -0
- data/lib/pratt/string.rb +18 -0
- data/models/app.rb +40 -0
- data/models/customer.rb +24 -0
- data/models/payment.rb +22 -0
- data/models/pratt.rb +19 -0
- data/models/project.rb +82 -0
- data/models/whence.rb +70 -0
- data/pkgs/tile-0.8.2.tar.gz +0 -0
- data/pkgs/tile-0.8.2/ANNOUNCE.txt +95 -0
- data/pkgs/tile-0.8.2/ChangeLog +4651 -0
- data/pkgs/tile-0.8.2/Makefile +250 -0
- data/pkgs/tile-0.8.2/Makefile.in +250 -0
- data/pkgs/tile-0.8.2/README.txt +86 -0
- data/pkgs/tile-0.8.2/aclocal.m4 +2 -0
- data/pkgs/tile-0.8.2/altTheme.o +0 -0
- data/pkgs/tile-0.8.2/blink.o +0 -0
- data/pkgs/tile-0.8.2/button.o +0 -0
- data/pkgs/tile-0.8.2/cache.o +0 -0
- data/pkgs/tile-0.8.2/clamTheme.o +0 -0
- data/pkgs/tile-0.8.2/classicTheme.o +0 -0
- data/pkgs/tile-0.8.2/config.log +1330 -0
- data/pkgs/tile-0.8.2/config.status +795 -0
- data/pkgs/tile-0.8.2/configure +15248 -0
- data/pkgs/tile-0.8.2/configure.in +89 -0
- data/pkgs/tile-0.8.2/demos/autocomplete.tcl +59 -0
- data/pkgs/tile-0.8.2/demos/demo.tcl +870 -0
- data/pkgs/tile-0.8.2/demos/dirbrowser.tcl +167 -0
- data/pkgs/tile-0.8.2/demos/dlgtest.tcl +97 -0
- data/pkgs/tile-0.8.2/demos/iconlib.tcl +110 -0
- data/pkgs/tile-0.8.2/demos/repeater.tcl +117 -0
- data/pkgs/tile-0.8.2/demos/toolbutton.tcl +101 -0
- data/pkgs/tile-0.8.2/doc/Geometry.3 +230 -0
- data/pkgs/tile-0.8.2/doc/INDEX.MAP +153 -0
- data/pkgs/tile-0.8.2/doc/Makefile +36 -0
- data/pkgs/tile-0.8.2/doc/TILE.XML +45 -0
- data/pkgs/tile-0.8.2/doc/Theme.3 +34 -0
- data/pkgs/tile-0.8.2/doc/button.n +75 -0
- data/pkgs/tile-0.8.2/doc/checkbutton.n +61 -0
- data/pkgs/tile-0.8.2/doc/combobox.n +98 -0
- data/pkgs/tile-0.8.2/doc/converting.txt +97 -0
- data/pkgs/tile-0.8.2/doc/dialog.n +122 -0
- data/pkgs/tile-0.8.2/doc/entry.n +438 -0
- data/pkgs/tile-0.8.2/doc/frame.n +43 -0
- data/pkgs/tile-0.8.2/doc/html/Geometry.html +304 -0
- data/pkgs/tile-0.8.2/doc/html/Theme.html +48 -0
- data/pkgs/tile-0.8.2/doc/html/button.html +120 -0
- data/pkgs/tile-0.8.2/doc/html/category-index.html +18 -0
- data/pkgs/tile-0.8.2/doc/html/checkbutton.html +94 -0
- data/pkgs/tile-0.8.2/doc/html/combobox.html +164 -0
- data/pkgs/tile-0.8.2/doc/html/converting.txt +97 -0
- data/pkgs/tile-0.8.2/doc/html/dialog.html +159 -0
- data/pkgs/tile-0.8.2/doc/html/entry.html +613 -0
- data/pkgs/tile-0.8.2/doc/html/frame.html +76 -0
- data/pkgs/tile-0.8.2/doc/html/image.html +100 -0
- data/pkgs/tile-0.8.2/doc/html/index.html +25 -0
- data/pkgs/tile-0.8.2/doc/html/keyword-index.html +228 -0
- data/pkgs/tile-0.8.2/doc/html/label.html +133 -0
- data/pkgs/tile-0.8.2/doc/html/labelframe.html +91 -0
- data/pkgs/tile-0.8.2/doc/html/manpage.css +212 -0
- data/pkgs/tile-0.8.2/doc/html/menubutton.html +63 -0
- data/pkgs/tile-0.8.2/doc/html/notebook.html +280 -0
- data/pkgs/tile-0.8.2/doc/html/paned.html +149 -0
- data/pkgs/tile-0.8.2/doc/html/progressbar.html +138 -0
- data/pkgs/tile-0.8.2/doc/html/radiobutton.html +89 -0
- data/pkgs/tile-0.8.2/doc/html/scrollbar.html +221 -0
- data/pkgs/tile-0.8.2/doc/html/separator.html +48 -0
- data/pkgs/tile-0.8.2/doc/html/sizegrip.html +62 -0
- data/pkgs/tile-0.8.2/doc/html/style.html +172 -0
- data/pkgs/tile-0.8.2/doc/html/tile-intro.html +164 -0
- data/pkgs/tile-0.8.2/doc/html/treeview.html +634 -0
- data/pkgs/tile-0.8.2/doc/html/widget.html +342 -0
- data/pkgs/tile-0.8.2/doc/image.n +81 -0
- data/pkgs/tile-0.8.2/doc/internals.txt +409 -0
- data/pkgs/tile-0.8.2/doc/label.n +75 -0
- data/pkgs/tile-0.8.2/doc/labelframe.n +64 -0
- data/pkgs/tile-0.8.2/doc/man.macros +239 -0
- data/pkgs/tile-0.8.2/doc/menubutton.n +41 -0
- data/pkgs/tile-0.8.2/doc/notebook.n +188 -0
- data/pkgs/tile-0.8.2/doc/paned.n +95 -0
- data/pkgs/tile-0.8.2/doc/progressbar.n +79 -0
- data/pkgs/tile-0.8.2/doc/radiobutton.n +57 -0
- data/pkgs/tile-0.8.2/doc/scrollbar.n +160 -0
- data/pkgs/tile-0.8.2/doc/separator.n +30 -0
- data/pkgs/tile-0.8.2/doc/sizegrip.n +53 -0
- data/pkgs/tile-0.8.2/doc/style.n +119 -0
- data/pkgs/tile-0.8.2/doc/tile-intro.n +165 -0
- data/pkgs/tile-0.8.2/doc/tmml.options +4 -0
- data/pkgs/tile-0.8.2/doc/treeview.n +415 -0
- data/pkgs/tile-0.8.2/doc/widget.n +227 -0
- data/pkgs/tile-0.8.2/doc/xml/Geometry.tmml +379 -0
- data/pkgs/tile-0.8.2/doc/xml/INDEX.MAP +153 -0
- data/pkgs/tile-0.8.2/doc/xml/Theme.tmml +63 -0
- data/pkgs/tile-0.8.2/doc/xml/button.tmml +134 -0
- data/pkgs/tile-0.8.2/doc/xml/checkbutton.tmml +119 -0
- data/pkgs/tile-0.8.2/doc/xml/combobox.tmml +184 -0
- data/pkgs/tile-0.8.2/doc/xml/dialog.tmml +195 -0
- data/pkgs/tile-0.8.2/doc/xml/entry.tmml +630 -0
- data/pkgs/tile-0.8.2/doc/xml/frame.tmml +98 -0
- data/pkgs/tile-0.8.2/doc/xml/image.tmml +101 -0
- data/pkgs/tile-0.8.2/doc/xml/label.tmml +154 -0
- data/pkgs/tile-0.8.2/doc/xml/labelframe.tmml +116 -0
- data/pkgs/tile-0.8.2/doc/xml/menubutton.tmml +80 -0
- data/pkgs/tile-0.8.2/doc/xml/notebook.tmml +306 -0
- data/pkgs/tile-0.8.2/doc/xml/paned.tmml +154 -0
- data/pkgs/tile-0.8.2/doc/xml/progressbar.tmml +151 -0
- data/pkgs/tile-0.8.2/doc/xml/radiobutton.tmml +109 -0
- data/pkgs/tile-0.8.2/doc/xml/scrollbar.tmml +233 -0
- data/pkgs/tile-0.8.2/doc/xml/separator.tmml +59 -0
- data/pkgs/tile-0.8.2/doc/xml/sizegrip.tmml +82 -0
- data/pkgs/tile-0.8.2/doc/xml/style.tmml +171 -0
- data/pkgs/tile-0.8.2/doc/xml/tile-intro.tmml +192 -0
- data/pkgs/tile-0.8.2/doc/xml/treeview.tmml +604 -0
- data/pkgs/tile-0.8.2/doc/xml/widget.tmml +372 -0
- data/pkgs/tile-0.8.2/entry.o +0 -0
- data/pkgs/tile-0.8.2/frame.o +0 -0
- data/pkgs/tile-0.8.2/generic/Makefile.in +221 -0
- data/pkgs/tile-0.8.2/generic/TODO +493 -0
- data/pkgs/tile-0.8.2/generic/altTheme.c +1172 -0
- data/pkgs/tile-0.8.2/generic/blink.c +168 -0
- data/pkgs/tile-0.8.2/generic/button.c +858 -0
- data/pkgs/tile-0.8.2/generic/cache.c +354 -0
- data/pkgs/tile-0.8.2/generic/clamTheme.c +974 -0
- data/pkgs/tile-0.8.2/generic/classicTheme.c +518 -0
- data/pkgs/tile-0.8.2/generic/configure +10334 -0
- data/pkgs/tile-0.8.2/generic/configure.in +100 -0
- data/pkgs/tile-0.8.2/generic/entry.c +1922 -0
- data/pkgs/tile-0.8.2/generic/frame.c +648 -0
- data/pkgs/tile-0.8.2/generic/gunk.h +44 -0
- data/pkgs/tile-0.8.2/generic/image.c +416 -0
- data/pkgs/tile-0.8.2/generic/label.c +663 -0
- data/pkgs/tile-0.8.2/generic/layout.c +1215 -0
- data/pkgs/tile-0.8.2/generic/manager.c +554 -0
- data/pkgs/tile-0.8.2/generic/manager.h +91 -0
- data/pkgs/tile-0.8.2/generic/notebook.c +1380 -0
- data/pkgs/tile-0.8.2/generic/paned.c +958 -0
- data/pkgs/tile-0.8.2/generic/pkgIndex.tcl.in +7 -0
- data/pkgs/tile-0.8.2/generic/progress.c +549 -0
- data/pkgs/tile-0.8.2/generic/scale.c +526 -0
- data/pkgs/tile-0.8.2/generic/scroll.c +253 -0
- data/pkgs/tile-0.8.2/generic/scrollbar.c +346 -0
- data/pkgs/tile-0.8.2/generic/separator.c +132 -0
- data/pkgs/tile-0.8.2/generic/square.c +306 -0
- data/pkgs/tile-0.8.2/generic/tagset.c +147 -0
- data/pkgs/tile-0.8.2/generic/tile.c +296 -0
- data/pkgs/tile-0.8.2/generic/tkElements.c +1280 -0
- data/pkgs/tile-0.8.2/generic/tkTheme.c +1708 -0
- data/pkgs/tile-0.8.2/generic/tkTheme.h +419 -0
- data/pkgs/tile-0.8.2/generic/tkThemeInt.h +45 -0
- data/pkgs/tile-0.8.2/generic/tkstate.c +268 -0
- data/pkgs/tile-0.8.2/generic/trace.c +145 -0
- data/pkgs/tile-0.8.2/generic/track.c +174 -0
- data/pkgs/tile-0.8.2/generic/treeview.c +3211 -0
- data/pkgs/tile-0.8.2/generic/ttk.decls +154 -0
- data/pkgs/tile-0.8.2/generic/ttkDecls.h +340 -0
- data/pkgs/tile-0.8.2/generic/ttkStubInit.c +61 -0
- data/pkgs/tile-0.8.2/generic/ttkStubLib.c +70 -0
- data/pkgs/tile-0.8.2/generic/widget.c +785 -0
- data/pkgs/tile-0.8.2/generic/widget.h +263 -0
- data/pkgs/tile-0.8.2/image.o +0 -0
- data/pkgs/tile-0.8.2/label.o +0 -0
- data/pkgs/tile-0.8.2/layout.o +0 -0
- data/pkgs/tile-0.8.2/library/altTheme.tcl +101 -0
- data/pkgs/tile-0.8.2/library/aquaTheme.tcl +62 -0
- data/pkgs/tile-0.8.2/library/button.tcl +85 -0
- data/pkgs/tile-0.8.2/library/clamTheme.tcl +139 -0
- data/pkgs/tile-0.8.2/library/classicTheme.tcl +108 -0
- data/pkgs/tile-0.8.2/library/combobox.tcl +439 -0
- data/pkgs/tile-0.8.2/library/cursors.tcl +36 -0
- data/pkgs/tile-0.8.2/library/defaults.tcl +118 -0
- data/pkgs/tile-0.8.2/library/dialog.tcl +274 -0
- data/pkgs/tile-0.8.2/library/entry.tcl +580 -0
- data/pkgs/tile-0.8.2/library/fonts.tcl +153 -0
- data/pkgs/tile-0.8.2/library/icons.tcl +105 -0
- data/pkgs/tile-0.8.2/library/keynav.tcl +192 -0
- data/pkgs/tile-0.8.2/library/menubutton.tcl +171 -0
- data/pkgs/tile-0.8.2/library/notebook.tcl +193 -0
- data/pkgs/tile-0.8.2/library/paned.tcl +87 -0
- data/pkgs/tile-0.8.2/library/progress.tcl +51 -0
- data/pkgs/tile-0.8.2/library/scale.tcl +54 -0
- data/pkgs/tile-0.8.2/library/scrollbar.tcl +125 -0
- data/pkgs/tile-0.8.2/library/sizegrip.tcl +77 -0
- data/pkgs/tile-0.8.2/library/tile.tcl +211 -0
- data/pkgs/tile-0.8.2/library/treeview.tcl +382 -0
- data/pkgs/tile-0.8.2/library/utils.tcl +254 -0
- data/pkgs/tile-0.8.2/library/winTheme.tcl +77 -0
- data/pkgs/tile-0.8.2/library/xpTheme.tcl +63 -0
- data/pkgs/tile-0.8.2/libtile0.8.2.so +0 -0
- data/pkgs/tile-0.8.2/libttkstub.a +0 -0
- data/pkgs/tile-0.8.2/license.terms +24 -0
- data/pkgs/tile-0.8.2/macosx/aquaTheme.c +1076 -0
- data/pkgs/tile-0.8.2/manager.o +0 -0
- data/pkgs/tile-0.8.2/notebook.o +0 -0
- data/pkgs/tile-0.8.2/paned.o +0 -0
- data/pkgs/tile-0.8.2/pkgIndex.tcl +3 -0
- data/pkgs/tile-0.8.2/progress.o +0 -0
- data/pkgs/tile-0.8.2/scale.o +0 -0
- data/pkgs/tile-0.8.2/scroll.o +0 -0
- data/pkgs/tile-0.8.2/scrollbar.o +0 -0
- data/pkgs/tile-0.8.2/separator.o +0 -0
- data/pkgs/tile-0.8.2/tagset.o +0 -0
- data/pkgs/tile-0.8.2/tclconfig/install-sh +119 -0
- data/pkgs/tile-0.8.2/tclconfig/tcl.m4 +4069 -0
- data/pkgs/tile-0.8.2/tclconfig/teax.m4 +109 -0
- data/pkgs/tile-0.8.2/tests/all.tcl +18 -0
- data/pkgs/tile-0.8.2/tests/bwidget.test +103 -0
- data/pkgs/tile-0.8.2/tests/cbtest.tcl +125 -0
- data/pkgs/tile-0.8.2/tests/combobox.test +51 -0
- data/pkgs/tile-0.8.2/tests/compound.tcl +92 -0
- data/pkgs/tile-0.8.2/tests/entry.test +285 -0
- data/pkgs/tile-0.8.2/tests/entrytest.tcl +78 -0
- data/pkgs/tile-0.8.2/tests/image.test +94 -0
- data/pkgs/tile-0.8.2/tests/labelframe.tcl +41 -0
- data/pkgs/tile-0.8.2/tests/labelframe.test +137 -0
- data/pkgs/tile-0.8.2/tests/layout.test +33 -0
- data/pkgs/tile-0.8.2/tests/misc.test +35 -0
- data/pkgs/tile-0.8.2/tests/nbtest.tcl +66 -0
- data/pkgs/tile-0.8.2/tests/notebook.test +500 -0
- data/pkgs/tile-0.8.2/tests/paned.test +298 -0
- data/pkgs/tile-0.8.2/tests/progress.test +92 -0
- data/pkgs/tile-0.8.2/tests/pwtest.tcl +90 -0
- data/pkgs/tile-0.8.2/tests/sbtest.tcl +79 -0
- data/pkgs/tile-0.8.2/tests/scrollbar.test +77 -0
- data/pkgs/tile-0.8.2/tests/sgtest.tcl +52 -0
- data/pkgs/tile-0.8.2/tests/testutils.tcl +20 -0
- data/pkgs/tile-0.8.2/tests/tile.test +674 -0
- data/pkgs/tile-0.8.2/tests/treetags.test +78 -0
- data/pkgs/tile-0.8.2/tests/treeview.test +563 -0
- data/pkgs/tile-0.8.2/tests/tvtest.tcl +332 -0
- data/pkgs/tile-0.8.2/tests/validate.test +278 -0
- data/pkgs/tile-0.8.2/tile.o +0 -0
- data/pkgs/tile-0.8.2/tkElements.o +0 -0
- data/pkgs/tile-0.8.2/tkTheme.o +0 -0
- data/pkgs/tile-0.8.2/tkstate.o +0 -0
- data/pkgs/tile-0.8.2/tools/genStubs.tcl +861 -0
- data/pkgs/tile-0.8.2/trace.o +0 -0
- data/pkgs/tile-0.8.2/track.o +0 -0
- data/pkgs/tile-0.8.2/treeview.o +0 -0
- data/pkgs/tile-0.8.2/ttkStubInit.o +0 -0
- data/pkgs/tile-0.8.2/ttkStubLib.o +0 -0
- data/pkgs/tile-0.8.2/widget.o +0 -0
- data/pkgs/tile-0.8.2/win/Tile.dsp +261 -0
- data/pkgs/tile-0.8.2/win/makefile.vc +527 -0
- data/pkgs/tile-0.8.2/win/monitor.c +164 -0
- data/pkgs/tile-0.8.2/win/nmakehlp.c +483 -0
- data/pkgs/tile-0.8.2/win/rules.vc +512 -0
- data/pkgs/tile-0.8.2/win/tile.rc +40 -0
- data/pkgs/tile-0.8.2/win/winTheme.c +734 -0
- data/pkgs/tile-0.8.2/win/xpTheme.c +1029 -0
- data/spec/app_spec.rb +48 -0
- data/spec/customer_spec.rb +31 -0
- data/spec/fixtures/graph.expectation +18 -0
- data/spec/payment_spec.rb +19 -0
- data/spec/pratt_spec.rb +148 -0
- data/spec/project_spec.rb +163 -0
- data/spec/rcov.opts +0 -0
- data/spec/spec.opts +1 -0
- data/spec/spec_helper.rb +21 -0
- data/spec/whence_spec.rb +54 -0
- data/tasks/pratt.rb +84 -0
- data/templates/model.eruby +12 -0
- data/templates/spec.eruby +8 -0
- data/views/env.rb +22 -0
- data/views/graph.eruby +20 -0
- data/views/invoice.eruby +148 -0
- data/views/main.rb +92 -0
- data/views/pid.eruby +3 -0
- data/views/pop.rb +94 -0
- data/views/pop2.rb +75 -0
- data/views/raw.eruby +11 -0
- metadata +390 -0
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
#
|
|
2
|
+
# treetags.test,v 1.2 2007/05/21 22:28:18 jenglish Exp
|
|
3
|
+
#
|
|
4
|
+
package require Tk
|
|
5
|
+
package require tcltest ; namespace import -force tcltest::*
|
|
6
|
+
loadTestedCommands
|
|
7
|
+
tk useinputmethods 0
|
|
8
|
+
|
|
9
|
+
set auto_path [linsert $auto_path 0 .] ; package require tile
|
|
10
|
+
|
|
11
|
+
testConstraint nyi 0
|
|
12
|
+
|
|
13
|
+
test treetags-1.0 "Setup" -body {
|
|
14
|
+
set tv [ttk::treeview .tv]
|
|
15
|
+
.tv insert {} end -id item1 -text "Item 1"
|
|
16
|
+
pack .tv
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
test treetags-1.1 "Bad tag list" -body {
|
|
20
|
+
$tv item item1 -tags {bad {list}here bad}
|
|
21
|
+
} -returnCodes error -result "list element in braces *" -match glob
|
|
22
|
+
|
|
23
|
+
test treetags-1.2 "Good tag list" -body {
|
|
24
|
+
$tv item item1 -tags tag1
|
|
25
|
+
$tv item item1 -tags
|
|
26
|
+
} -result [list tag1]
|
|
27
|
+
|
|
28
|
+
test treetags-1.3 "Bad events" -body {
|
|
29
|
+
$tv tag bind bad <Enter> { puts "Entered!" }
|
|
30
|
+
} -returnCodes 1 -result "unsupported event <Enter>*" -match glob
|
|
31
|
+
|
|
32
|
+
test treetags-2.0 "tag bind" -body {
|
|
33
|
+
$tv tag bind tag1 <KeyPress> {set ::KEY %A}
|
|
34
|
+
$tv tag bind tag1 <KeyPress>
|
|
35
|
+
} -result {set ::KEY %A}
|
|
36
|
+
|
|
37
|
+
test treetags-2.1 "Events delivered to tags" -body {
|
|
38
|
+
focus -force $tv ; update ;# needed so [event generate] delivers KeyPress
|
|
39
|
+
$tv focus item1
|
|
40
|
+
event generate .tv <KeyPress-a>
|
|
41
|
+
set ::KEY
|
|
42
|
+
} -result a
|
|
43
|
+
|
|
44
|
+
test treetags-2.2 "Events delivered to correct tags" -body {
|
|
45
|
+
$tv insert {} end -id item2 -tags tag2
|
|
46
|
+
$tv tag bind tag2 <KeyPress> [list set ::KEY2 %A]
|
|
47
|
+
|
|
48
|
+
$tv focus item1
|
|
49
|
+
event generate $tv <KeyPress-b>
|
|
50
|
+
$tv focus item2
|
|
51
|
+
event generate $tv <KeyPress-c>
|
|
52
|
+
|
|
53
|
+
list $::KEY $::KEY2
|
|
54
|
+
} -result [list b c]
|
|
55
|
+
|
|
56
|
+
test treetags-2.3 "Virtual events delivered to focus item" -body {
|
|
57
|
+
set ::bong 0
|
|
58
|
+
$tv tag bind tag2 <<Bing>> { incr bong }
|
|
59
|
+
$tv focus item2
|
|
60
|
+
event generate $tv <<Bing>>
|
|
61
|
+
$tv focus item1
|
|
62
|
+
event generate $tv <<Bing>>
|
|
63
|
+
set bong
|
|
64
|
+
} -result 1
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
test treetags-3.0 "tag configure" -body {
|
|
68
|
+
$tv tag configure tag1 -foreground blue -background red
|
|
69
|
+
} -result {}
|
|
70
|
+
|
|
71
|
+
test treetags-3.1 "tag configure" -body {
|
|
72
|
+
$tv tag configure tag1 -foreground
|
|
73
|
+
} -result [list blue]
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
test treetags-end "Cleanup" -body { destroy .tv }
|
|
77
|
+
|
|
78
|
+
tcltest::cleanupTests
|
|
@@ -0,0 +1,563 @@
|
|
|
1
|
+
#
|
|
2
|
+
# treeview.test,v 1.9 2006/12/18 19:03:33 jenglish Exp
|
|
3
|
+
#
|
|
4
|
+
# [7Jun2005] TO CHECK: [$tv see {}] -- shouldn't work (at least, shouldn't do
|
|
5
|
+
# what it currently does)
|
|
6
|
+
#
|
|
7
|
+
|
|
8
|
+
package require Tk
|
|
9
|
+
package require tcltest ; namespace import -force tcltest::*
|
|
10
|
+
loadTestedCommands
|
|
11
|
+
|
|
12
|
+
lappend auto_path .
|
|
13
|
+
package require tile
|
|
14
|
+
|
|
15
|
+
# consistencyCheck --
|
|
16
|
+
# Traverse the tree to make sure the item data structures
|
|
17
|
+
# are properly linked.
|
|
18
|
+
#
|
|
19
|
+
# Since [$tv children] follows ->next links and [$tv index]
|
|
20
|
+
# follows ->prev links, this should cover all invariants.
|
|
21
|
+
#
|
|
22
|
+
proc consistencyCheck {tv {item {}}} {
|
|
23
|
+
set i 0;
|
|
24
|
+
foreach child [$tv children $item] {
|
|
25
|
+
assert {[$tv parent $child] == $item} "parent $child = $item"
|
|
26
|
+
assert {[$tv index $child] == $i} "index $child [$tv index $child]=$i"
|
|
27
|
+
incr i
|
|
28
|
+
consistencyCheck $tv $child
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
proc assert {expr {message ""}} {
|
|
33
|
+
if {![uplevel 1 [list expr $expr]]} {
|
|
34
|
+
set error "PANIC! PANIC! PANIC: $message ($expr failed)"
|
|
35
|
+
puts stderr $error
|
|
36
|
+
error $error
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
test treeview-0 "treeview test - setup" -body {
|
|
41
|
+
ttk::treeview .tv -columns {a b c}
|
|
42
|
+
pack .tv -expand true -fill both
|
|
43
|
+
update
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
test treeview-1.1 "columns" -body {
|
|
47
|
+
.tv configure -columns {a b c}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
test treeview-1.2 "Bad columns" -body {
|
|
51
|
+
#.tv configure -columns {illegal "list"value}
|
|
52
|
+
ttk::treeview .badtv -columns {illegal "list"value}
|
|
53
|
+
} -returnCodes 1 -result "list element in quotes followed by*" -match glob
|
|
54
|
+
|
|
55
|
+
test treeview-1.3 "bad displaycolumns" -body {
|
|
56
|
+
.tv configure -displaycolumns {a b d}
|
|
57
|
+
} -returnCodes 1 -result "Invalid column index d"
|
|
58
|
+
|
|
59
|
+
test treeview-1.4 "more bad displaycolumns" -body {
|
|
60
|
+
.tv configure -displaycolumns {1 2 3}
|
|
61
|
+
} -returnCodes 1 -result "Column index 3 out of bounds"
|
|
62
|
+
|
|
63
|
+
test treeview-1.5 "Don't forget to check negative numbers" -body {
|
|
64
|
+
.tv configure -displaycolumns {1 -2 3}
|
|
65
|
+
} -returnCodes 1 -result "Column index -2 out of bounds"
|
|
66
|
+
|
|
67
|
+
# Item creation.
|
|
68
|
+
#
|
|
69
|
+
test treeview-2.1 "insert -- not enough args" -body {
|
|
70
|
+
.tv insert
|
|
71
|
+
} -returnCodes 1 -result "wrong # args: *" -match glob
|
|
72
|
+
|
|
73
|
+
test treeview-2.3 "insert -- bad integer index" -body {
|
|
74
|
+
.tv insert {} badindex
|
|
75
|
+
} -returnCodes 1 -result "expected integer *" -match glob
|
|
76
|
+
|
|
77
|
+
test treeview-2.4 "insert -- bad parent node" -body {
|
|
78
|
+
.tv insert badparent end
|
|
79
|
+
} -returnCodes 1 -result "Item badparent not found" -match glob
|
|
80
|
+
|
|
81
|
+
test treeview-2.5 "insert -- finaly insert a node" -body {
|
|
82
|
+
.tv insert {} end -id newnode -text "New node"
|
|
83
|
+
} -result newnode
|
|
84
|
+
|
|
85
|
+
test treeview-2.6 "insert -- make sure node was inserted" -body {
|
|
86
|
+
.tv children {}
|
|
87
|
+
} -result [list newnode]
|
|
88
|
+
|
|
89
|
+
test treeview-2.7 "insert -- prevent duplicate node names" -body {
|
|
90
|
+
.tv insert {} end -id newnode
|
|
91
|
+
} -returnCodes 1 -result "Item newnode already exists"
|
|
92
|
+
|
|
93
|
+
test treeview-2.8 "insert -- new node at end" -body {
|
|
94
|
+
.tv insert {} end -id lastnode
|
|
95
|
+
consistencyCheck .tv
|
|
96
|
+
.tv children {}
|
|
97
|
+
} -result [list newnode lastnode]
|
|
98
|
+
|
|
99
|
+
consistencyCheck .tv
|
|
100
|
+
|
|
101
|
+
test treeview-2.9 "insert -- new node at beginning" -body {
|
|
102
|
+
.tv insert {} 0 -id firstnode
|
|
103
|
+
consistencyCheck .tv
|
|
104
|
+
.tv children {}
|
|
105
|
+
} -result [list firstnode newnode lastnode]
|
|
106
|
+
|
|
107
|
+
test treeview-2.10 "insert -- one more node" -body {
|
|
108
|
+
.tv insert {} 2 -id onemore
|
|
109
|
+
consistencyCheck .tv
|
|
110
|
+
.tv children {}
|
|
111
|
+
} -result [list firstnode newnode onemore lastnode]
|
|
112
|
+
|
|
113
|
+
test treeview-2.11 "insert -- and another one" -body {
|
|
114
|
+
.tv insert {} 2 -id anotherone
|
|
115
|
+
consistencyCheck .tv
|
|
116
|
+
.tv children {}
|
|
117
|
+
} -result [list firstnode newnode anotherone onemore lastnode]
|
|
118
|
+
|
|
119
|
+
test treeview-2.12 "insert -- one more at end" -body {
|
|
120
|
+
.tv insert {} end -id newlastone
|
|
121
|
+
consistencyCheck .tv
|
|
122
|
+
.tv children {}
|
|
123
|
+
} -result [list firstnode newnode anotherone onemore lastnode newlastone]
|
|
124
|
+
|
|
125
|
+
test treeview-2.13 "insert -- one more at beginning" -body {
|
|
126
|
+
.tv insert {} 0 -id newfirstone
|
|
127
|
+
consistencyCheck .tv
|
|
128
|
+
.tv children {}
|
|
129
|
+
} -result [list newfirstone firstnode newnode anotherone onemore lastnode newlastone]
|
|
130
|
+
|
|
131
|
+
test treeview-2.14 "insert -- bad options" -body {
|
|
132
|
+
.tv insert {} end -badoption foo
|
|
133
|
+
} -returnCodes 1 -result {unknown option "-badoption"}
|
|
134
|
+
|
|
135
|
+
test treeview-2.15 "insert -- at position 0 w/no children" -body {
|
|
136
|
+
.tv insert newnode 0 -id newnode.n2 -text "Foo"
|
|
137
|
+
.tv children newnode
|
|
138
|
+
} -result newnode.n2 ;# don't crash
|
|
139
|
+
|
|
140
|
+
test treeview-2.16 "insert -- insert way past end" -body {
|
|
141
|
+
.tv insert newnode 99 -id newnode.n3 -text "Foo"
|
|
142
|
+
consistencyCheck .tv
|
|
143
|
+
.tv children newnode
|
|
144
|
+
} -result [list newnode.n2 newnode.n3]
|
|
145
|
+
|
|
146
|
+
test treeview-2.17 "insert -- insert before beginning" -body {
|
|
147
|
+
.tv insert newnode -1 -id newnode.n1 -text "Foo"
|
|
148
|
+
consistencyCheck .tv
|
|
149
|
+
.tv children newnode
|
|
150
|
+
} -result [list newnode.n1 newnode.n2 newnode.n3]
|
|
151
|
+
|
|
152
|
+
###
|
|
153
|
+
#
|
|
154
|
+
test treeview-3.1 "parent" -body {
|
|
155
|
+
.tv parent newnode.n1
|
|
156
|
+
} -result newnode
|
|
157
|
+
test treeview-3.2 "parent - top-level node" -body {
|
|
158
|
+
.tv parent newnode
|
|
159
|
+
} -result {}
|
|
160
|
+
test treeview-3.3 "parent - root node" -body {
|
|
161
|
+
.tv parent {}
|
|
162
|
+
} -result {}
|
|
163
|
+
test treeview-3.4 "index" -body {
|
|
164
|
+
list [.tv index newnode.n3] [.tv index newnode.n2] [.tv index newnode.n1]
|
|
165
|
+
} -result [list 2 1 0]
|
|
166
|
+
test treeview-3.5 "index - exhaustive test" -body {
|
|
167
|
+
set result [list]
|
|
168
|
+
foreach item [.tv children {}] {
|
|
169
|
+
lappend result [.tv index $item]
|
|
170
|
+
}
|
|
171
|
+
set result
|
|
172
|
+
} -result [list 0 1 2 3 4 5 6]
|
|
173
|
+
|
|
174
|
+
test treeview-3.6 "detach" -body {
|
|
175
|
+
.tv detach newnode
|
|
176
|
+
consistencyCheck .tv
|
|
177
|
+
.tv children {}
|
|
178
|
+
} -result [list newfirstone firstnode anotherone onemore lastnode newlastone]
|
|
179
|
+
# XREF: treeview-2.13
|
|
180
|
+
|
|
181
|
+
test treeview-3.7 "detach didn't screw up internal links" -body {
|
|
182
|
+
consistencyCheck .tv
|
|
183
|
+
set result [list]
|
|
184
|
+
foreach item [.tv children {}] {
|
|
185
|
+
lappend result [.tv index $item]
|
|
186
|
+
}
|
|
187
|
+
set result
|
|
188
|
+
} -result [list 0 1 2 3 4 5]
|
|
189
|
+
|
|
190
|
+
test treeview-3.8 "detached node has no parent, index 0" -body {
|
|
191
|
+
list [.tv parent newnode] [.tv index newnode]
|
|
192
|
+
} -result [list {} 0]
|
|
193
|
+
# @@@ Can't distinguish detached nodes from first root node
|
|
194
|
+
|
|
195
|
+
test treeview-3.9 "detached node's children undisturbed" -body {
|
|
196
|
+
.tv children newnode
|
|
197
|
+
} -result [list newnode.n1 newnode.n2 newnode.n3]
|
|
198
|
+
|
|
199
|
+
test treeview-3.10 "detach is idempotent" -body {
|
|
200
|
+
.tv detach newnode
|
|
201
|
+
consistencyCheck .tv
|
|
202
|
+
.tv children {}
|
|
203
|
+
} -result [list newfirstone firstnode anotherone onemore lastnode newlastone]
|
|
204
|
+
|
|
205
|
+
test treeview-3.11 "Can't detach root item" -body {
|
|
206
|
+
.tv detach [list {}]
|
|
207
|
+
update
|
|
208
|
+
consistencyCheck .tv
|
|
209
|
+
} -returnCodes 1 -result "Cannot detach root item"
|
|
210
|
+
consistencyCheck .tv
|
|
211
|
+
|
|
212
|
+
test treeview-3.12 "Reattach" -body {
|
|
213
|
+
.tv move newnode {} end
|
|
214
|
+
consistencyCheck .tv
|
|
215
|
+
.tv children {}
|
|
216
|
+
} -result [list newfirstone firstnode anotherone onemore lastnode newlastone newnode]
|
|
217
|
+
|
|
218
|
+
# Bug # ?????
|
|
219
|
+
test treeview-3.13 "Re-reattach" -body {
|
|
220
|
+
.tv move newnode {} end
|
|
221
|
+
consistencyCheck .tv
|
|
222
|
+
.tv children {}
|
|
223
|
+
} -result [list newfirstone firstnode anotherone onemore lastnode newlastone newnode]
|
|
224
|
+
|
|
225
|
+
.tv insert newfirstone end -id x1
|
|
226
|
+
.tv insert newfirstone end -id x2
|
|
227
|
+
.tv insert newfirstone end -id x3
|
|
228
|
+
|
|
229
|
+
test treeview-3.14 "Duplicated entry in children list" -body {
|
|
230
|
+
.tv children newfirstone [list x3 x1 x2 x3]
|
|
231
|
+
# ??? Maybe this should raise an error?
|
|
232
|
+
consistencyCheck .tv
|
|
233
|
+
.tv children newfirstone
|
|
234
|
+
} -result [list x3 x1 x2]
|
|
235
|
+
|
|
236
|
+
test treeview-3.14.1 "Duplicated entry in children list" -body {
|
|
237
|
+
.tv children newfirstone [list x1 x2 x3 x3 x2 x1]
|
|
238
|
+
consistencyCheck .tv
|
|
239
|
+
.tv children newfirstone
|
|
240
|
+
} -result [list x1 x2 x3]
|
|
241
|
+
|
|
242
|
+
test treeview-3.15 "Consecutive duplicate entries in children list" -body {
|
|
243
|
+
.tv children newfirstone [list x1 x2 x2 x3]
|
|
244
|
+
consistencyCheck .tv
|
|
245
|
+
.tv children newfirstone
|
|
246
|
+
} -result [list x1 x2 x3]
|
|
247
|
+
|
|
248
|
+
test treeview-3.16 "Insert child after self" -body {
|
|
249
|
+
.tv move x2 newfirstone 1
|
|
250
|
+
consistencyCheck .tv
|
|
251
|
+
.tv children newfirstone
|
|
252
|
+
} -result [list x1 x2 x3]
|
|
253
|
+
|
|
254
|
+
test treeview-3.17 "Insert last child after self" -body {
|
|
255
|
+
.tv move x3 newfirstone 2
|
|
256
|
+
consistencyCheck .tv
|
|
257
|
+
.tv children newfirstone
|
|
258
|
+
} -result [list x1 x2 x3]
|
|
259
|
+
|
|
260
|
+
test treeview-3.18 "Insert last child after end" -body {
|
|
261
|
+
.tv move x3 newfirstone 3
|
|
262
|
+
consistencyCheck .tv
|
|
263
|
+
.tv children newfirstone
|
|
264
|
+
} -result [list x1 x2 x3]
|
|
265
|
+
|
|
266
|
+
|
|
267
|
+
test treeview-4.1 "opened - initial state" -body {
|
|
268
|
+
.tv item newnode -open
|
|
269
|
+
} -result 0
|
|
270
|
+
test treeview-4.2 "opened - open node" -body {
|
|
271
|
+
.tv item newnode -open 1
|
|
272
|
+
.tv item newnode -open
|
|
273
|
+
} -result 1
|
|
274
|
+
test treeview-4.3 "opened - closed node" -body {
|
|
275
|
+
.tv item newnode -open 0
|
|
276
|
+
.tv item newnode -open
|
|
277
|
+
} -result 0
|
|
278
|
+
|
|
279
|
+
test treeview-5.1 "item -- error checks" -body {
|
|
280
|
+
.tv item newnode -text "Bad values" -values "{bad}list"
|
|
281
|
+
} -returnCodes 1 -result "list element in braces followed by*" -match glob
|
|
282
|
+
|
|
283
|
+
test treeview-5.2 "item -- error leaves options unchanged " -body {
|
|
284
|
+
.tv item newnode -text
|
|
285
|
+
} -result "New node"
|
|
286
|
+
|
|
287
|
+
test treeview-5.3 "Heading" -body {
|
|
288
|
+
.tv heading #0 -text "Heading"
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
test treeview-5.4 "get cell" -body {
|
|
292
|
+
set l [list a b c]
|
|
293
|
+
.tv item newnode -values $l
|
|
294
|
+
.tv set newnode 1
|
|
295
|
+
} -result b
|
|
296
|
+
|
|
297
|
+
test treeview-5.5 "set cell" -body {
|
|
298
|
+
.tv set newnode 1 XXX
|
|
299
|
+
.tv item newnode -values
|
|
300
|
+
} -result [list a XXX c]
|
|
301
|
+
|
|
302
|
+
test treeview-5.6 "set illegal cell" -body {
|
|
303
|
+
.tv set newnode #0 YYY
|
|
304
|
+
} -returnCodes 1 -result "Display column #0 cannot be set"
|
|
305
|
+
|
|
306
|
+
test treeview-5.7 "set illegal cell" -body {
|
|
307
|
+
.tv set newnode 3 YY ;# 3 == current #columns
|
|
308
|
+
} -returnCodes 1 -result "Column index 3 out of bounds"
|
|
309
|
+
|
|
310
|
+
test treeview-5.8 "set display columns" -body {
|
|
311
|
+
.tv configure -displaycolumns [list 2 1 0]
|
|
312
|
+
.tv set newnode #1 X
|
|
313
|
+
.tv set newnode #2 Y
|
|
314
|
+
.tv set newnode #3 Z
|
|
315
|
+
.tv item newnode -values
|
|
316
|
+
} -result [list Z Y X]
|
|
317
|
+
|
|
318
|
+
test treeview-5.9 "display columns part 2" -body {
|
|
319
|
+
list [.tv column #1 -id] [.tv column #2 -id] [.tv column #3 -id]
|
|
320
|
+
} -result [list c b a]
|
|
321
|
+
|
|
322
|
+
test treeview-5.10 "cannot set column -id" -body {
|
|
323
|
+
.tv column #1 -id X
|
|
324
|
+
} -returnCodes 1 -result "Attempt to change read-only option"
|
|
325
|
+
|
|
326
|
+
test treeview-5.11 "get" -body {
|
|
327
|
+
.tv set newnode #1
|
|
328
|
+
} -result X
|
|
329
|
+
|
|
330
|
+
test treeview-5.12 "get dictionary" -body {
|
|
331
|
+
.tv set newnode
|
|
332
|
+
} -result [list a Z b Y c X]
|
|
333
|
+
|
|
334
|
+
test treeview-5.13 "get, no value" -body {
|
|
335
|
+
set newitem [.tv insert {} end]
|
|
336
|
+
set result [.tv set $newitem #1]
|
|
337
|
+
.tv delete $newitem
|
|
338
|
+
set result
|
|
339
|
+
} -result {}
|
|
340
|
+
|
|
341
|
+
test treeview-5.14 "-displaycolumns #all" -body {
|
|
342
|
+
.tv configure -displaycolumns "#all"
|
|
343
|
+
list [.tv column #1 -id] [.tv column #2 -id] [.tv column #3 -id]
|
|
344
|
+
} -result [.tv cget -columns]
|
|
345
|
+
|
|
346
|
+
test treeview-5.15 "-displaycolumns empty" -body {
|
|
347
|
+
.tv configure -displaycolumns [list]
|
|
348
|
+
list [.tv column #1 -id] [.tv column #2 -id] [.tv column #3 -id]
|
|
349
|
+
} -returnCodes error -result "Column #1 out of range"
|
|
350
|
+
|
|
351
|
+
test treeview-6.1 "deletion - setup" -body {
|
|
352
|
+
.tv insert {} end -id dtest
|
|
353
|
+
foreach id [list a b c d e] {
|
|
354
|
+
.tv insert dtest end -id $id
|
|
355
|
+
}
|
|
356
|
+
.tv children dtest
|
|
357
|
+
} -result [list a b c d e]
|
|
358
|
+
|
|
359
|
+
test treeview-6.1 "delete" -body {
|
|
360
|
+
.tv delete b
|
|
361
|
+
consistencyCheck .tv
|
|
362
|
+
list [.tv exists b] [.tv children dtest]
|
|
363
|
+
} -result [list 0 [list a c d e]]
|
|
364
|
+
|
|
365
|
+
consistencyCheck .tv
|
|
366
|
+
|
|
367
|
+
test treeview-6.2 "delete - duplicate items in list" -body {
|
|
368
|
+
.tv delete [list a e a e]
|
|
369
|
+
consistencyCheck .tv
|
|
370
|
+
.tv children dtest
|
|
371
|
+
} -result [list c d]
|
|
372
|
+
|
|
373
|
+
test treeview-6.3 "delete - descendants removed" -body {
|
|
374
|
+
.tv insert c end -id c1
|
|
375
|
+
.tv insert c end -id c2
|
|
376
|
+
.tv insert c1 end -id c11
|
|
377
|
+
consistencyCheck .tv
|
|
378
|
+
.tv delete c
|
|
379
|
+
consistencyCheck .tv
|
|
380
|
+
list [.tv exists c] [.tv exists c1] [.tv exists c2] [.tv exists c11]
|
|
381
|
+
} -result [list 0 0 0 0]
|
|
382
|
+
|
|
383
|
+
test treeview-6.4 "delete - delete parent and descendants" -body {
|
|
384
|
+
.tv insert dtest end -id c
|
|
385
|
+
.tv insert c end -id c1
|
|
386
|
+
.tv insert c end -id c2
|
|
387
|
+
.tv insert c1 end -id c11
|
|
388
|
+
consistencyCheck .tv
|
|
389
|
+
.tv delete [list c c1 c2 c11]
|
|
390
|
+
consistencyCheck .tv
|
|
391
|
+
list [.tv exists c] [.tv exists c1] [.tv exists c2] [.tv exists c11]
|
|
392
|
+
} -result [list 0 0 0 0]
|
|
393
|
+
|
|
394
|
+
test treeview-6.5 "delete - delete descendants and parent" -body {
|
|
395
|
+
.tv insert dtest end -id c
|
|
396
|
+
.tv insert c end -id c1
|
|
397
|
+
.tv insert c end -id c2
|
|
398
|
+
.tv insert c1 end -id c11
|
|
399
|
+
consistencyCheck .tv
|
|
400
|
+
.tv delete [list c11 c1 c2 c]
|
|
401
|
+
consistencyCheck .tv
|
|
402
|
+
list [.tv exists c] [.tv exists c1] [.tv exists c2] [.tv exists c11]
|
|
403
|
+
} -result [list 0 0 0 0]
|
|
404
|
+
|
|
405
|
+
test treeview-6.6 "delete - end" -body {
|
|
406
|
+
consistencyCheck .tv
|
|
407
|
+
.tv children dtest
|
|
408
|
+
} -result [list d]
|
|
409
|
+
|
|
410
|
+
test treeview-7.1 "move" -body {
|
|
411
|
+
.tv insert d end -id d1
|
|
412
|
+
.tv insert d end -id d2
|
|
413
|
+
.tv insert d end -id d3
|
|
414
|
+
.tv move d3 d 0
|
|
415
|
+
consistencyCheck .tv
|
|
416
|
+
.tv children d
|
|
417
|
+
} -result [list d3 d1 d2]
|
|
418
|
+
|
|
419
|
+
test treeview-7.2 "illegal move" -body {
|
|
420
|
+
.tv move d d2 end
|
|
421
|
+
} -returnCodes 1 -result "Cannot insert d as a descendant of d2"
|
|
422
|
+
|
|
423
|
+
test treeview-7.3 "illegal move has no effect" -body {
|
|
424
|
+
consistencyCheck .tv
|
|
425
|
+
.tv children d
|
|
426
|
+
} -result [list d3 d1 d2]
|
|
427
|
+
|
|
428
|
+
test treeview-7.4 "Replace children" -body {
|
|
429
|
+
.tv children d [list d3 d2 d1]
|
|
430
|
+
consistencyCheck .tv
|
|
431
|
+
.tv children d
|
|
432
|
+
} -result [list d3 d2 d1]
|
|
433
|
+
|
|
434
|
+
test treeview-7.5 "replace children - precondition" -body {
|
|
435
|
+
# Just check to make sure the test suite so far has left
|
|
436
|
+
# us in the state we expect to be in:
|
|
437
|
+
list [.tv parent newnode] [.tv children newnode]
|
|
438
|
+
} -result [list {} [list newnode.n1 newnode.n2 newnode.n3]]
|
|
439
|
+
|
|
440
|
+
test treeview-7.6 "Replace children - illegal move" -body {
|
|
441
|
+
.tv children newnode.n1 [list newnode.n1 newnode.n2 newnode.n3]
|
|
442
|
+
} -returnCodes 1 -result "Cannot insert newnode.n1 as a descendant of newnode.n1"
|
|
443
|
+
|
|
444
|
+
proc lmove {l from to} {
|
|
445
|
+
linsert [lreplace $l $from $from] $to [lindex $l $from]
|
|
446
|
+
}
|
|
447
|
+
|
|
448
|
+
test treeview-7.7 "Exhaustive moves" -setup {
|
|
449
|
+
set r [.tv insert newnode 0]
|
|
450
|
+
set l [list m1 m2 m3 m4 m5]
|
|
451
|
+
foreach c $l {
|
|
452
|
+
.tv insert $r end -id $c
|
|
453
|
+
}
|
|
454
|
+
} -cleanup {
|
|
455
|
+
.tv delete $r
|
|
456
|
+
} -body {
|
|
457
|
+
set n [llength $l]
|
|
458
|
+
set errors [list]
|
|
459
|
+
for {set i 0} {$i < $n} {incr i} {
|
|
460
|
+
for {set j 0} {$j < $n} {incr j} {
|
|
461
|
+
|
|
462
|
+
.tv children $r $l ; consistencyCheck .tv
|
|
463
|
+
.tv move [lindex $l $i] $r $j ; consistencyCheck .tv
|
|
464
|
+
|
|
465
|
+
set expect [lmove $l $i $j]
|
|
466
|
+
set result [.tv children $r]
|
|
467
|
+
foreach x $expect y $result {
|
|
468
|
+
if {$x ne $y} {
|
|
469
|
+
lappend errors \
|
|
470
|
+
"move $i -> $j: got '$result', expected '$expect'"
|
|
471
|
+
break;
|
|
472
|
+
}
|
|
473
|
+
}
|
|
474
|
+
}
|
|
475
|
+
}
|
|
476
|
+
join $errors \n
|
|
477
|
+
} -result ""
|
|
478
|
+
|
|
479
|
+
test treeview-7.8 "Exhaustive inserts" -setup {
|
|
480
|
+
set r [.tv insert newnode 0]
|
|
481
|
+
set l [list i1 i2 i3 i4]
|
|
482
|
+
foreach c $l {
|
|
483
|
+
.tv insert $r end -id $c
|
|
484
|
+
}
|
|
485
|
+
} -cleanup {
|
|
486
|
+
.tv delete $r
|
|
487
|
+
} -body {
|
|
488
|
+
set n [llength $l]
|
|
489
|
+
set errors [list]
|
|
490
|
+
for {set i -1} {$i <= $n+1} {incr i} {
|
|
491
|
+
consistencyCheck .tv
|
|
492
|
+
|
|
493
|
+
.tv insert $r $i -id X ; consistencyCheck .tv
|
|
494
|
+
set expect [linsert $l $i X]
|
|
495
|
+
set result [.tv children $r]
|
|
496
|
+
foreach x $expect y $result {
|
|
497
|
+
if {$x ne $y} {
|
|
498
|
+
lappend errors "insert $i: got '$result', expected '$expect'"
|
|
499
|
+
break;
|
|
500
|
+
}
|
|
501
|
+
}
|
|
502
|
+
.tv delete X ; consistencyCheck .tv
|
|
503
|
+
}
|
|
504
|
+
join $errors \n
|
|
505
|
+
} -result ""
|
|
506
|
+
consistencyCheck .tv
|
|
507
|
+
|
|
508
|
+
test treeview-8.0 "Selection set" -body {
|
|
509
|
+
.tv selection set [list newnode.n1 newnode.n3 newnode.n2]
|
|
510
|
+
.tv selection
|
|
511
|
+
} -result [list newnode.n1 newnode.n2 newnode.n3]
|
|
512
|
+
|
|
513
|
+
test treeview-8.1 "Selection add" -body {
|
|
514
|
+
.tv selection add [list newnode]
|
|
515
|
+
.tv selection
|
|
516
|
+
} -result [list newnode newnode.n1 newnode.n2 newnode.n3]
|
|
517
|
+
|
|
518
|
+
test treeview-8.2 "Selection toggle" -body {
|
|
519
|
+
.tv selection toggle [list newnode.n2 d3]
|
|
520
|
+
.tv selection
|
|
521
|
+
} -result [list newnode newnode.n1 newnode.n3 d3]
|
|
522
|
+
|
|
523
|
+
test treeview-8.3 "Selection remove" -body {
|
|
524
|
+
.tv selection remove [list newnode.n2 d3]
|
|
525
|
+
.tv selection
|
|
526
|
+
} -result [list newnode newnode.n1 newnode.n3]
|
|
527
|
+
|
|
528
|
+
test treeview-8.4 "Selection - clear" -body {
|
|
529
|
+
.tv selection set {}
|
|
530
|
+
.tv selection
|
|
531
|
+
} -result {}
|
|
532
|
+
|
|
533
|
+
test treeview-8.5 "Selection - bad operation" -body {
|
|
534
|
+
.tv selection badop foo
|
|
535
|
+
} -returnCodes 1 -match glob -result {bad selection operation "badop": must be *}
|
|
536
|
+
|
|
537
|
+
### NEED: more tests for see/yview/scrolling
|
|
538
|
+
|
|
539
|
+
proc scrollcallback {args} {
|
|
540
|
+
set ::scrolldata $args
|
|
541
|
+
}
|
|
542
|
+
test treeview-9.0 "scroll callback - empty tree" -body {
|
|
543
|
+
.tv configure -yscrollcommand scrollcallback
|
|
544
|
+
.tv delete [.tv children {}]
|
|
545
|
+
update
|
|
546
|
+
set ::scrolldata
|
|
547
|
+
} -result [list 0 1]
|
|
548
|
+
|
|
549
|
+
### NEED: tests for focus item, selection
|
|
550
|
+
|
|
551
|
+
|
|
552
|
+
### Misc. tests:
|
|
553
|
+
|
|
554
|
+
destroy .tv
|
|
555
|
+
test treeview-10.1 "Root node properly initialized (#1541739)" -setup {
|
|
556
|
+
ttk::treeview .tv
|
|
557
|
+
.tv insert {} end -id a
|
|
558
|
+
.tv see a
|
|
559
|
+
} -cleanup {
|
|
560
|
+
destroy .tv
|
|
561
|
+
}
|
|
562
|
+
|
|
563
|
+
tcltest::cleanupTests
|