# Commands covered: treectrl's widget command column # # This file contains a collection of tests for the column 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: column.test,v 1.3 2003/01/04 13:18:30 krischan Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest 2 namespace import ::tcltest::* } package require Tk package_require treectrl test column-0.1 {some needed preparations} -body { pack [treectrl .t] } -result {} test column-0.2 {create an image} -body { image create photo emptyImg } -result {emptyImg} test column-1.1 {missing args} -body { .t column } -returnCodes error -result {wrong # args: should be ".t column command ?arg arg...?"} test column-1.2 {unknown command} -body { .t column foo } -returnCodes error -result {bad command "foo": must be bbox, cget, configure, delete, index, move, neededwidth, or width} test column-1.3 {configure: no column exists with numerical index} -body { .t column configure 0 } -returnCodes error -result {bad column index "0": there are no columns} test column-1.4 {configure: no column exists with tag} -body { .t column configure column0 } -returnCodes error -result {column with tag "column0" doesn't exist} test column-1.5 {configure: create and fill a column} -body { .t column configure 0 -tag column0 .t element create e rect -width 482 .t style create s .t style elements s e set i [.t item create] .t item style set $i 0 s .t item lastchild root $i } -result {1} test column-1.6 {configure: create another column} -body { .t column configure 1 -tag column1 } -result {} test column-2.1 {column bbox: missing args} -body { .t column bbox } -returnCodes error -result {wrong # args: should be ".t column bbox column"} test column-2.2 {column bbox: invalid column} -body { .t column bbox foo } -returnCodes error -result {column with tag "foo" doesn't exist} test column-2.3 {column bbox: tree doesn't show headers} -body { .t configure -showheader 0 .t column bbox column0 } -result {} test column-2.4 {column bbox} -body { .t configure -showheader 1 .t column bbox 0 } -result {0 3 501 7} test column-2.5 {column bbox: tail column not allowed} -body { .t column bbox tail } -returnCodes error -result {can't specify "tail" for this command} test column-3.1 {column configure: missing args} -body { .t column configure } -returnCodes error -result {wrong # args: should be ".t column configure column ?option? ?value?"} test column-3.2 {column configure: invalid column} -body { .t column configure foo } -returnCodes error -result {column with tag "foo" doesn't exist} test column-3.3 {column configure: list all options} -body { .t column configure column1 } -result {{-arrow {} {} none none} {-arrowside {} {} right right} {-arrowgravity {} {} left left} {-arrowpad {} {} 6 6} {-bitmap {} {} {} {}} {-background {} {} #d9d9d9 #d9d9d9} {-borderwidth {} {} 2 2} {-button {} {} 1 1} {-expand {} {} 0 0} {-font {} {} {} {}} {-image {} {} {} {}} {-imagepadx {} {} 6 6} {-imagepady {} {} 0 0} {-itembackground {} {} {} {}} {-justify {} {} left left} {-minwidth {} {} {} {}} {-relief {} {} raised raised} {-stepwidth {} {} {} {}} {-sunken {} {} 0 0} {-tag {} {} {} column1} {-text {} {} {} {}} {-textcolor {} {} Black Black} {-textpadx {} {} 6 6} {-textpady {} {} 0 0} {-width {} {} {} {}} {-visible {} {} 1 1} {-widthhack {} {} 0 0}} test column-3.4 {column configure: tail column} -body { .t column configure tail } -result {{-arrow {} {} none none} {-arrowside {} {} right right} {-arrowgravity {} {} left left} {-arrowpad {} {} 6 6} {-bitmap {} {} {} {}} {-background {} {} #d9d9d9 #d9d9d9} {-borderwidth {} {} 2 2} {-button {} {} 1 1} {-expand {} {} 0 0} {-font {} {} {} {}} {-image {} {} {} {}} {-imagepadx {} {} 6 6} {-imagepady {} {} 0 0} {-itembackground {} {} {} {}} {-justify {} {} left left} {-minwidth {} {} {} {}} {-relief {} {} raised raised} {-stepwidth {} {} {} {}} {-sunken {} {} 0 0} {-tag {} {} {} tail} {-text {} {} {} {}} {-textcolor {} {} Black Black} {-textpadx {} {} 6 6} {-textpady {} {} 0 0} {-width {} {} {} {}} {-visible {} {} 1 1} {-widthhack {} {} 0 0}} test column-3.5 {column configure: invalid -arrow} -body { .t column configure column1 -arrow straight } -returnCodes error -result {bad arrow "straight": must be none, up, or down} test column-3.6 {column configure/cget: -arrow} -body { .t column configure column1 -arrow up .t column cget column1 -arrow } -result {up} test column-3.7 {column configure: invalid -arrowside} -body { .t column configure column1 -arrowside up } -returnCodes error -result {bad arrowside "up": must be left or right} test column-3.8 {column configure/cget: -arrowside} -body { .t column configure column1 -arrowside left .t column cget column1 -arrowside } -result {left} test column-3.9 {column configure: invalid -arrowgravity} -body { .t column configure column1 -arrowgravity both } -returnCodes error -result {bad arrowgravity "both": must be left or right} test column-3.10 {column configure/cget: -arrowgravity} -body { .t column configure column1 -arrowgravity right .t column cget column1 -arrowgravity } -result {right} test column-3.11 {column configure: invalid -arrowpad} -body { .t column configure column1 -arrowpad x } -returnCodes error -result {bad pad amount "x": must be a list of 1 or 2 positive screen distances} test column-3.11a {column configure: invalid 2 element -arrowpad} -body { .t column configure column1 -arrowpad {3 x} } -returnCodes error -result {bad pad amount "3 x": must be a list of 1 or 2 positive screen distances} test column-3.12 {column configure/cget: -arrowpad} -body { .t column configure column1 -arrowpad 8 .t column cget column1 -arrowpad } -result {8} test column-3.12a {column configure/cget: 2 element -arrowpad} -body { .t column configure column1 -arrowpad {8 5} .t column cget column1 -arrowpad } -result {8 5} test column-3.13 {column configure: invalid -bitmap} -body { .t column configure column1 -bitmap foo } -returnCodes error -result {bitmap "foo" not defined} test column-3.14 {column configure/cget: -bitmap} -body { .t column configure column1 -bitmap questhead .t column cget column1 -bitmap } -result {questhead} test column-3.15 {column configure: invalid -background} -body { .t column configure column1 -background foo } -returnCodes error -result {unknown color name "foo"} test column-3.16 {column configure/cget: -background} -body { .t column configure column1 -background magenta .t column cget column1 -background } -result {magenta} test column-3.17 {column configure: invalid -borderwidth} -body { .t column configure column1 -borderwidth x } -returnCodes error -result {bad screen distance "x"} test column-3.18 {column configure/cget: -borderwidth} -body { .t column configure column1 -borderwidth 4 .t column cget column1 -borderwidth } -result {4} test column-3.19 {column configure: invalid -button} -body { .t column configure column1 -button "" } -returnCodes error -result {expected boolean value but got ""} test column-3.20 {column configure/cget: -button} -body { .t column configure column1 -button off .t column cget column1 -button } -result {0} test column-3.21 {column configure: invalid -expand} -body { .t column configure column1 -expand ew } -returnCodes error -result {expected boolean value but got "ew"} test column-3.22 {column configure/cget: -expand} -body { .t column configure column1 -expand true .t column cget column1 -expand } -result {1} test column-3.23 {column configure: invalid -image} -body { .t column configure column1 -image questhead } -returnCodes error -result {image "questhead" doesn't exist} test column-3.24 {column configure/cget: -image} -body { .t column configure column1 -image emptyImg .t column cget column1 -image } -result {emptyImg} test column-3.25 {column configure: invalid -imagepadx} -body { .t column configure column1 -imagepadx y } -returnCodes error -result {bad pad amount "y": must be a list of 1 or 2 positive screen distances} test column-3.25a {column configure: invalid 2 element -imagepadx} -body { .t column configure column1 -imagepadx "y \{" } -returnCodes error -result {unmatched open brace in list} test column-3.26 {column configure/cget: -imagepadx} -body { .t column configure column1 -imagepadx 9 -imagepady 4 list [.t column cget column1 -imagepadx] \ [.t column cget column1 -imagepady] } -result {9 4} test column-3.26a {column configure/cget: 2 element -imagepadx/y} -body { .t column configure column1 -imagepadx {9 0} -imagepady {4 3} list [.t column cget column1 -imagepadx] \ [.t column cget column1 -imagepady] } -result {{9 0} {4 3}} test column-3.27 {column configure: invalid -itembackground} -body { .t column configure column1 -itembackground no } -returnCodes error -result {unknown color name "no"} test column-3.28 {column configure/cget: simple -itembackground} -body { .t column configure column1 -itembackground blue .t column cget column1 -itembackground } -result {blue} test column-3.29 {column configure: invalid -itembackground list} -body { .t column configure column1 -itembackground {blue selected green active} } -returnCodes error -result {unknown color name "selected"} test column-3.30 {column configure/cget: -itembackground list} -body { .t column configure column1 -itembackground {blue green magenta red} .t column cget column1 -itembackground } -result {blue green magenta red} test column-3.31 {column configure: invalid -justify} -body { .t column configure column1 -justify no } -returnCodes error -result {bad justification "no": must be left, right, or center} test column-3.32 {column configure/cget: simple -justify} -body { .t column configure column1 -justify center .t column cget column1 -justify } -result {center} test column-3.33 {column configure: invalid -minwidth} -body { .t column configure column1 -minwidth z } -returnCodes error -result {bad screen distance "z"} test column-3.34 {column configure/cget: -minwidth} -body { .t column configure column1 -minwidth 25 .t column cget column1 -minwidth } -result {25} test column-3.35 {column configure: invalid -relief} -body { .t column configure column1 -relief yes } -returnCodes error -result {bad relief "yes": must be flat, groove, raised, ridge, solid, or sunken} test column-3.36 {column configure/cget: -relief} -body { .t column configure column1 -relief sunken .t column cget column1 -relief } -result {sunken} test column-3.37 {column configure: invalid -stepwidth} -body { .t column configure column1 -stepwidth "\t" } -returnCodes error -result {bad screen distance " "} test column-3.38 {column configure/cget: -stepwidth} -body { .t column configure column1 -stepwidth 125 .t column cget column1 -stepwidth } -result {125} test column-3.39 {column configure: invalid -sunken} -body { .t column configure column1 -sunken groove } -returnCodes error -result {expected boolean value but got "groove"} test column-3.40 {column configure/cget: -sunken} -body { .t column configure column1 -sunken on .t column cget column1 -sunken } -result {1} test column-3.41 {column configure: -text} -body { .t column configure column1 -text "Text above Column 1" .t column cget column1 -text } -result {Text above Column 1} test column-3.42 {column configure: invalid -textpadx} -body { .t column configure column1 -textpadx baz } -returnCodes error -result {bad pad amount "baz": must be a list of 1 or 2 positive screen distances} test column-3.42a {column configure: invalid 2 element -textpadx} -body { .t column configure column1 -textpadx {foo bar baz} } -returnCodes error -result {bad pad amount "foo bar baz": must be a list of 1 or 2 positive screen distances} test column-3.43 {column configure/cget: -textpadx/y} -body { .t column configure column1 -textpadx 8 -textpady 5 list [.t column cget column1 -textpadx] \ [.t column cget column1 -textpady] } -result {8 5} test column-3.43a {column configure/cget: 2 element -textpadx/y} -body { .t column configure column1 -textpadx {8 4} -textpady {4 5} list [.t column cget column1 -textpadx] \ [.t column cget column1 -textpady] } -result {{8 4} {4 5}} test column-3.44 {column configure: invalid -width} -body { .t column configure column1 -width all } -returnCodes error -result {bad screen distance "all"} test column-3.45 {column configure/cget: -width} -body { .t column configure column1 -width 250 .t column cget column1 -width } -result {250} test column-3.46 {column configure: invalid -visible} -body { .t column configure column1 -visible never } -returnCodes error -result {expected boolean value but got "never"} test column-3.47 {column configure/cget: -visible} -body { .t column configure column1 -visible no .t column cget column1 -visible } -result {0} test column-3.48 {column configure: invalid -widthhack} -body { .t column configure column1 -widthhack ok } -returnCodes error -result {expected boolean value but got "ok"} test column-3.49 {column configure/cget: -widthhack} -body { .t column configure column1 -widthhack yes .t column cget column1 -widthhack } -result {1} test column-4.1 {column configure: -tag} -body { .t column configure column1 -tag column2 .t column cget column1 -tag } -returnCodes error -result {column with tag "column1" doesn't exist} test column-4.2 {column configure: -tag} -body { .t column cget column2 -tag } -result {column2} test column-4.3 {column cget: -tag of tail} -body { .t column cget tail -tag } -result {tail} test column-4.4 {column configure/cget: -tag of tail} -body { .t column configure tail -tag head } -returnCodes error -result {can't change tag of tail column} test column-4.5 {column cget: specify tail by its tag} -body { .t column cget head -tag } -returnCodes error -result {column with tag "head" doesn't exist} test column-5.1 {column delete: missing args} -body { .t column delete } -returnCodes error -result {wrong # args: should be ".t column delete column"} test column-5.2 {column delete: column tail} -body { .t column delete tail } -returnCodes error -result {can't specify "tail" for this command} test column-5.3 {column delete: first column} -body { .t column delete 0 } -result {} test column-5.4 {suprise, surprise: column 0 still exists} -body { .t column cget 0 -tag } -result {column2} test column-6.1 {column index: missing args} -body { .t column index } -returnCodes error -result {wrong # args: should be ".t column index column"} test column-6.2 {column index: the easy case} -body { .t column index 0 } -result {0} test column-6.3 {column index} -body { .t column index column2 } -result {0} test column-6.4 {column index: tail column} -body { .t column index tail } -result {1} test column-7.1 {column move: missing args} -body { .t column move } -returnCodes error -result {wrong # args: should be ".t column move column before"} test column-7.2 {column move: invalid column} -body { .t column move 0 2 } -returnCodes error -result {bad column index "2": must be from 0 to 0} test column-7.3 {column move: invalid column} -body { .t column configure 1 -tag column1 .t column configure 2 -tag column3 .t column move 0 2 .t column index column2 } -result {1} test column-7.4 {correct moved?} -body { set res {} for {set x 0} {$x < [.t numcolumns]} {incr x} { lappend res [.t column cget $x -tag] } set res } -result {column1 column2 column3} test column-7.5 {column move: tail to the left} -body { .t column move tail 0 } -returnCodes error -result {can't specify "tail" for this command} test column-7.6 {column move: tail as before is ok} -body { .t column move 0 tail .t column index column1 } -result {2} test column-8.1 {column width: missing args} -body { .t column width } -returnCodes error -result {wrong # args: should be ".t column width column"} test column-8.2 {column width: invalid column} -body { .t column width foo } -returnCodes error -result {column with tag "foo" doesn't exist} test column-8.3 {column width: tail column returns always 0} -body { .t column width tail } -result {0} test column-8.4 {column width} -body { .t element create eText2 text -font {{courier -12}} -text "Hello World" .t style create testStyle3 .t style elements testStyle3 eText2 .t item style set 1 column1 testStyle3 update idletasks list [.t column width column1] [font measure {courier -12} "Hello World"] } -result {77 77} test column-9.1 {column neededwidth: missing args} -body { .t column neededwidth } -returnCodes error -result {wrong # args: should be ".t column neededwidth column"} test column-9.2 {column neededwidth: invalid column} -body { .t column neededwidth foo } -returnCodes error -result {column with tag "foo" doesn't exist} test column-9.3 {column neededwidth: tail column returns always 0} -body { .t column neededwidth tail } -result {0} test column-9.4 {column neededwidth} -body { .t column neededwidth column1 } -result {77} test column-99.1 {some needed cleanup} -body { destroy .t } -result {} # cleanup image delete emptyImg ::tcltest::cleanupTests return