diff options
author | dkf <donal.k.fellows@manchester.ac.uk> | 2002-03-06 11:28:08 (GMT) |
---|---|---|
committer | dkf <donal.k.fellows@manchester.ac.uk> | 2002-03-06 11:28:08 (GMT) |
commit | e4b884c4fa1756e7818c02382f806000cd2ea5e5 (patch) | |
tree | 78d571981bb53b263276bc091d7bb36d14992feb /tests/lsearch.test | |
parent | e74b0de3694e8841aa1312d1b6bd69cad7a87a97 (diff) | |
download | tcl-e4b884c4fa1756e7818c02382f806000cd2ea5e5.zip tcl-e4b884c4fa1756e7818c02382f806000cd2ea5e5.tar.gz tcl-e4b884c4fa1756e7818c02382f806000cd2ea5e5.tar.bz2 |
TIP#81 implementation, tests and docs
Diffstat (limited to 'tests/lsearch.test')
-rw-r--r-- | tests/lsearch.test | 100 |
1 files changed, 84 insertions, 16 deletions
diff --git a/tests/lsearch.test b/tests/lsearch.test index 44ec96e..887edb9 100644 --- a/tests/lsearch.test +++ b/tests/lsearch.test @@ -11,7 +11,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: lsearch.test,v 1.7 2001/09/12 20:28:50 dgp Exp $ +# RCS: @(#) $Id: lsearch.test,v 1.8 2002/03/06 11:28:08 dkf Exp $ if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest @@ -61,7 +61,7 @@ test lsearch-2.9 {search modes} { } 1 test lsearch-2.10 {search modes} { list [catch {lsearch -glib {b.x bx xy bcx} b.x} msg] $msg -} {1 {bad option "-glib": must be -ascii, -decreasing, -dictionary, -exact, -increasing, -integer, -glob, -real, -regexp, or -sorted}} +} {1 {bad option "-glib": must be -all, -ascii, -decreasing, -dictionary, -exact, -glob, -increasing, -inline, -integer, -not, -real, -regexp, -sorted, or -start}} test lsearch-3.1 {lsearch errors} { list [catch lsearch msg] $msg @@ -71,10 +71,10 @@ test lsearch-3.2 {lsearch errors} { } {1 {wrong # args: should be "lsearch ?options? list pattern"}} test lsearch-3.3 {lsearch errors} { list [catch {lsearch a b c} msg] $msg -} {1 {bad option "a": must be -ascii, -decreasing, -dictionary, -exact, -increasing, -integer, -glob, -real, -regexp, or -sorted}} +} {1 {bad option "a": must be -all, -ascii, -decreasing, -dictionary, -exact, -glob, -increasing, -inline, -integer, -not, -real, -regexp, -sorted, or -start}} test lsearch-3.4 {lsearch errors} { list [catch {lsearch a b c d} msg] $msg -} {1 {bad option "a": must be -ascii, -decreasing, -dictionary, -exact, -increasing, -integer, -glob, -real, -regexp, or -sorted}} +} {1 {bad option "a": must be -all, -ascii, -decreasing, -dictionary, -exact, -glob, -increasing, -inline, -integer, -not, -real, -regexp, -sorted, or -start}} test lsearch-3.5 {lsearch errors} { list [catch {lsearch "\{" b} msg] $msg } {1 {unmatched open brace in list}} @@ -267,21 +267,89 @@ test lsearch-9.4 {decreasing sorted ascii search} { set res } [list 6 5 4 3 2 1 0] +test lsearch-10.1 {offset searching} { + lsearch -start 2 {a b c a b c} a +} 3 +test lsearch-10.2 {offset searching} { + lsearch -start 2 {a b c d e f} a +} -1 +test lsearch-10.3 {offset searching} { + lsearch -start end-4 {a b c a b c} a +} 3 +test lsearch-10.4 {offset searching} { + list [catch {lsearch -start foobar {a b c a b c} a} msg] $msg +} {1 {bad index "foobar": must be integer or end?-integer?}} +test lsearch-10.5 {offset searching} { + list [catch {lsearch -start 1 2} msg] $msg +} {1 {missing starting index}} +test lsearch-10.6 {binary search with offset} { + set res {} + for {set i 0} {$i < 100} {incr i} { + lappend res [lsearch -integer -start 2 -sorted $increasingIntegers $i] + } + set res +} [concat -1 -1 [lrange $increasingIntegers 2 end]] +test lsearch-11.1 {negated searches} { + lsearch -not {a a a b a a a} a +} 3 +test lsearch-11.2 {negated searches} { + lsearch -not {a a a a a a a} a +} -1 -# cleanup -catch {unset res} -::tcltest::cleanupTests -return - - - - - - - - +test lsearch-12.1 {return values instead of indices} { + lsearch -glob -inline {a1 b2 c3 d4} c* +} c3 +test lsearch-12.2 {return values instead of indices} { + lsearch -glob -inline {a1 b2 c3 d4} e* +} {} +test lsearch-13.1 {search for all matches} { + lsearch -all {a b a c a d} 1 +} {} +test lsearch-13.2 {search for all matches} { + lsearch -all {a b a c a d} a +} {0 2 4} +test lsearch-13.1 {combinations: -all and -inline} { + lsearch -all -inline -glob {a1 b2 a3 c4 a5 d6} a* +} {a1 a3 a5} +test lsearch-13.2 {combinations: -all, -inline and -not} { + lsearch -all -inline -not -glob {a1 b2 a3 c4 a5 d6} a* +} {b2 c4 d6} +test lsearch-13.3 {combinations: -all and -not} { + lsearch -all -not -glob {a1 b2 a3 c4 a5 d6} a* +} {1 3 5} +test lsearch-13.4 {combinations: -inline and -not} { + lsearch -inline -not -glob {a1 b2 a3 c4 a5 d6} a* +} {b2} +test lsearch-13.5 {combinations: -start, -all and -inline} { + lsearch -start 2 -all -inline -glob {a1 b2 a3 c4 a5 d6} a* +} {a3 a5} +test lsearch-13.6 {combinations: -start, -all, -inline and -not} { + lsearch -start 2 -all -inline -not -glob {a1 b2 a3 c4 a5 d6} a* +} {c4 d6} +test lsearch-13.7 {combinations: -start, -all and -not} { + lsearch -start 2 -all -not -glob {a1 b2 a3 c4 a5 d6} a* +} {3 5} +test lsearch-13.8 {combinations: -start, -inline and -not} { + lsearch -start 2 -inline -not -glob {a1 b2 a3 c4 a5 d6} a* +} {c4} +test lsearch-14.1 {make sure no shimmering occurs} { + set x [expr int(sin(0))] + lsearch -start $x $x $x +} 0 +# cleanup +catch {unset res} +catch {unset increasingIntegers} +catch {unset decreasingIntegers} +catch {unset increasingDoubles} +catch {unset decreasingDoubles} +catch {unset increasingStrings} +catch {unset decreasingStrings} +catch {unset increasingDictionary} +catch {unset decreasingDictionary} +::tcltest::cleanupTests +return |