summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorstanton <stanton>1999-05-04 01:33:10 (GMT)
committerstanton <stanton>1999-05-04 01:33:10 (GMT)
commitcbfd4003a1395d9f6ec97acf62eb239f7c3fafca (patch)
treeeaaa5805340e4ca7c3da51d93e2076081ec153e5 /tests
parent1b188bce8407ab0d9d83e72177b9fada135782d2 (diff)
downloadtcl-cbfd4003a1395d9f6ec97acf62eb239f7c3fafca.zip
tcl-cbfd4003a1395d9f6ec97acf62eb239f7c3fafca.tar.gz
tcl-cbfd4003a1395d9f6ec97acf62eb239f7c3fafca.tar.bz2
* tests/cmdIL.test:
* tests/cmdMZ.test: * tests/error.test: * tests/lindex.test: * tests/linsert.test: * tests/lrange.test: * tests/lreplace.test: * tests/string.test: * generic/tclCmdMZ.c (Tcl_StringObjCmd): * generic/tclUtil.c (TclGetIntForIndex): Applied Jeff Hobbs's string patch which includes the following changes [Bug: 1845]:
Diffstat (limited to 'tests')
-rw-r--r--tests/cmdIL.test4
-rw-r--r--tests/cmdMZ.test38
-rw-r--r--tests/error.test6
-rw-r--r--tests/lindex.test4
-rw-r--r--tests/linsert.test4
-rw-r--r--tests/lrange.test6
-rw-r--r--tests/lreplace.test8
-rw-r--r--tests/string.test318
8 files changed, 295 insertions, 93 deletions
diff --git a/tests/cmdIL.test b/tests/cmdIL.test
index ac39ec0..2f5d62e 100644
--- a/tests/cmdIL.test
+++ b/tests/cmdIL.test
@@ -8,7 +8,7 @@
# See the file "license.terms" for information on usage and redistribution
# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
#
-# RCS: @(#) $Id: cmdIL.test,v 1.6 1999/04/16 00:47:24 stanton Exp $
+# RCS: @(#) $Id: cmdIL.test,v 1.7 1999/05/04 01:33:11 stanton Exp $
if {[lsearch [namespace children] ::tcltest] == -1} {
source [file join [pwd] [file dirname [info script]] defs.tcl]
@@ -52,7 +52,7 @@ test cmdIL-1.11 {Tcl_LsortObjCmd procedure, -index option} {
} {1 {"-index" option must be followed by list index}}
test cmdIL-1.12 {Tcl_LsortObjCmd procedure, -index option} {
list [catch {lsort -index foo {1 3 2 5}} msg] $msg
-} {1 {bad index "foo": must be integer or "end"}}
+} {1 {syntax error in expression "foo"}}
test cmdIL-1.13 {Tcl_LsortObjCmd procedure, -index option} {
lsort -index end -integer {{2 25} {10 20 50 100} {3 16 42} 1}
} {1 {2 25} {3 16 42} {10 20 50 100}}
diff --git a/tests/cmdMZ.test b/tests/cmdMZ.test
index 4cd72d2..c9ead57 100644
--- a/tests/cmdMZ.test
+++ b/tests/cmdMZ.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: cmdMZ.test,v 1.2 1999/04/16 00:47:24 stanton Exp $
+# RCS: @(#) $Id: cmdMZ.test,v 1.3 1999/05/04 01:33:11 stanton Exp $
if {[lsearch [namespace children] ::tcltest] == -1} {
source [file join [pwd] [file dirname [info script]] defs.tcl]
@@ -159,14 +159,14 @@ test cmdMZ-5.1 {Tcl_StringObjCmd: error conditions} {
} {1 {wrong # args: should be "string option arg ?arg ...?"}}
test cmdMZ-5.2 {Tcl_StringObjCmd: error conditions} {
list [catch {string gorp a b} msg] $msg
-} {1 {bad option "gorp": must be compare, first, index, last, length, match, range, tolower, toupper, totitle, trim, trimleft, trimright, wordend, or wordstart}}
+} {1 {bad option "gorp": must be bytes, compare, equal, first, icompare, iequal, index, last, length, map, match, range, repeat, replace, tolower, toupper, totitle, trim, trimleft, trimright, wordend, or wordstart}}
test cmdMZ-6.1 {Tcl_StringObjCmd: string compare} {
list [catch {string compare a} msg] $msg
-} {1 {wrong # args: should be "string compare string1 string2"}}
+} {1 {wrong # args: should be "string compare string1 string2 ?length?"}}
test cmdMZ-6.2 {Tcl_StringObjCmd: string compare} {
list [catch {string compare a b c} msg] $msg
-} {1 {wrong # args: should be "string compare string1 string2"}}
+} {1 {expected integer but got "c"}}
test cmdMZ-6.3 {Tcl_StringObjCmd: string compare} {
string compare abcde abdef
} -1
@@ -237,12 +237,12 @@ test cmdMZ-8.2 {Tcl_StringObjCmd: string index} {
} {1 {wrong # args: should be "string index string charIndex"}}
test cmdMZ-8.3 {Tcl_StringObjCmd: string index} {
list [catch {string index a xyz} msg] $msg
-} {1 {expected integer but got "xyz"}}
+} {1 {syntax error in expression "xyz"}}
test cmdMZ-8.4 {Tcl_StringObjCmd: string index} {
string index abcde 0
} a
test cmdMZ-8.5 {Tcl_StringObjCmd: string index} {
- string i abcde 4
+ string in abcde 4
} e
test cmdMZ-8.6 {Tcl_StringObjCmd: string index} {
string index abcde 5
@@ -305,7 +305,7 @@ test cmdMZ-11.3 {Tcl_StringObjCmd: string match} {
string match abc abc
} 1
test cmdMZ-11.4 {Tcl_StringObjCmd: string match} {
- string m abc abd
+ string mat abc abd
} 0
test cmdMZ-12.1 {Tcl_StringObjCmd: string range} {
@@ -319,10 +319,10 @@ test cmdMZ-12.3 {Tcl_StringObjCmd: string range} {
} {1 {wrong # args: should be "string range string first last"}}
test cmdMZ-12.4 {Tcl_StringObjCmd: string range} {
list [catch {string range abc abc 1} msg] $msg
-} {1 {bad index "abc": must be integer or "end"}}
+} {1 {syntax error in expression "abc"}}
test cmdMZ-12.5 {Tcl_StringObjCmd: string range} {
list [catch {string range abc 1 eof} msg] $msg
-} {1 {bad index "eof": must be integer or "end"}}
+} {1 {syntax error in expression "eof"}}
test cmdMZ-12.6 {Tcl_StringObjCmd: string range, first < 0} {
string range abcdefghijklmnop -3 2
} {abc}
@@ -362,10 +362,10 @@ test cmdMZ-12.17 {Tcl_StringObjCmd: string range, unicode} {
test cmdMZ-13.1 {Tcl_StringObjCmd: string tolower} {
list [catch {string tolower} msg] $msg
-} {1 {wrong # args: should be "string tolower string"}}
+} {1 {wrong # args: should be "string tolower string ?first? ?last?"}}
test cmdMZ-13.2 {Tcl_StringObjCmd: string tolower} {
list [catch {string tolower a b} msg] $msg
-} {1 {wrong # args: should be "string tolower string"}}
+} {1 {syntax error in expression "b"}}
test cmdMZ-13.3 {Tcl_StringObjCmd: string tolower} {
string tolower ABCDeF
} {abcdef}
@@ -381,10 +381,10 @@ test cmdMZ-13.6 {Tcl_StringObjCmd: string tolower, unicode} {
test cmdMZ-14.1 {Tcl_StringObjCmd: string toupper} {
list [catch {string toupper} msg] $msg
-} {1 {wrong # args: should be "string toupper string"}}
+} {1 {wrong # args: should be "string toupper string ?first? ?last?"}}
test cmdMZ-14.2 {Tcl_StringObjCmd: string toupper} {
list [catch {string toupper a b} msg] $msg
-} {1 {wrong # args: should be "string toupper string"}}
+} {1 {syntax error in expression "b"}}
test cmdMZ-14.3 {Tcl_StringObjCmd: string toupper} {
string toupper abCDEf
} {ABCDEF}
@@ -400,10 +400,10 @@ test cmdMZ-14.6 {Tcl_StringObjCmd: string toupper, unicode} {
test cmdMZ-15.1 {Tcl_StringObjCmd: string totitle} {
list [catch {string totitle} msg] $msg
-} {1 {wrong # args: should be "string totitle string"}}
+} {1 {wrong # args: should be "string totitle string ?first? ?last?"}}
test cmdMZ-15.2 {Tcl_StringObjCmd: string totitle} {
list [catch {string totitle a b} msg] $msg
-} {1 {wrong # args: should be "string totitle string"}}
+} {1 {syntax error in expression "b"}}
test cmdMZ-15.3 {Tcl_StringObjCmd: string totitle} {
string totitle abCDEf
} {Abcdef}
@@ -478,7 +478,7 @@ test cmdMZ-18.4 {Tcl_StringObjCmd: string trimright errors} {
} {1 {wrong # args: should be "string trimright string ?chars?"}}
test cmdMZ-18.5 {Tcl_StringObjCmd: string trimright errors} {
list [catch {string trimg a} msg] $msg
-} {1 {bad option "trimg": must be compare, first, index, last, length, match, range, tolower, toupper, totitle, trim, trimleft, trimright, wordend, or wordstart}}
+} {1 {bad option "trimg": must be bytes, compare, equal, first, icompare, iequal, index, last, length, map, match, range, repeat, replace, tolower, toupper, totitle, trim, trimleft, trimright, wordend, or wordstart}}
test cmdMZ-19.1 {Tcl_StringObjCmd: string wordend} {
list [catch {string wordend a} msg] $msg
@@ -488,7 +488,7 @@ test cmdMZ-19.2 {Tcl_StringObjCmd: string wordend} {
} {1 {wrong # args: should be "string wordend string index"}}
test cmdMZ-19.3 {Tcl_StringObjCmd: string wordend} {
list [catch {string wordend a gorp} msg] $msg
-} {1 {expected integer but got "gorp"}}
+} {1 {syntax error in expression "gorp"}}
test cmdMZ-19.4 {Tcl_StringObjCmd: string wordend} {
string wordend abc. -1
} 3
@@ -522,7 +522,7 @@ test cmdMZ-19.13 {Tcl_StringObjCmd: string wordend, unicode} {
test cmdMZ-20.1 {Tcl_StringObjCmd: string wordstart} {
list [catch {string word a} msg] $msg
-} {1 {ambiguous option "word": must be compare, first, index, last, length, match, range, tolower, toupper, totitle, trim, trimleft, trimright, wordend, or wordstart}}
+} {1 {ambiguous option "word": must be bytes, compare, equal, first, icompare, iequal, index, last, length, map, match, range, repeat, replace, tolower, toupper, totitle, trim, trimleft, trimright, wordend, or wordstart}}
test cmdMZ-20.2 {Tcl_StringObjCmd: string wordstart} {
list [catch {string wordstart a} msg] $msg
} {1 {wrong # args: should be "string wordstart string index"}}
@@ -531,7 +531,7 @@ test cmdMZ-20.3 {Tcl_StringObjCmd: string wordstart} {
} {1 {wrong # args: should be "string wordstart string index"}}
test cmdMZ-20.4 {Tcl_StringObjCmd: string wordstart} {
list [catch {string wordstart a gorp} msg] $msg
-} {1 {expected integer but got "gorp"}}
+} {1 {syntax error in expression "gorp"}}
test cmdMZ-20.5 {Tcl_StringObjCmd: string wordstart} {
string wordstart "one two three_words" 400
} 8
diff --git a/tests/error.test b/tests/error.test
index 45e8f1d..a4d311f 100644
--- a/tests/error.test
+++ b/tests/error.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: error.test,v 1.3 1999/04/16 00:47:26 stanton Exp $
+# RCS: @(#) $Id: error.test,v 1.4 1999/05/04 01:33:12 stanton Exp $
if {[lsearch [namespace children] ::tcltest] == -1} {
source [file join [pwd] [file dirname [info script]] defs.tcl]
@@ -38,12 +38,12 @@ test error-1.1 {simple errors from commands} {
test error-1.2 {simple errors from commands} {
catch {format [string compare]} b
set b
-} {wrong # args: should be "string compare string1 string2"}
+} {wrong # args: should be "string compare string1 string2 ?length?"}
test error-1.3 {simple errors from commands} {
catch {format [string compare]} b
set errorInfo
-} {wrong # args: should be "string compare string1 string2"
+} {wrong # args: should be "string compare string1 string2 ?length?"
while executing
"string compare"}
diff --git a/tests/lindex.test b/tests/lindex.test
index c7e5fb8..ed79c31 100644
--- a/tests/lindex.test
+++ b/tests/lindex.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: lindex.test,v 1.3 1999/04/16 00:47:30 stanton Exp $
+# RCS: @(#) $Id: lindex.test,v 1.4 1999/05/04 01:33:12 stanton Exp $
if {[lsearch [namespace children] ::tcltest] == -1} {
source [file join [pwd] [file dirname [info script]] defs.tcl]
@@ -52,7 +52,7 @@ test lindex-2.2 {error conditions} {
} {1 {wrong # args: should be "lindex list index"}}
test lindex-2.3 {error conditions} {
list [catch {lindex 1 2a2} msg] $msg
-} {1 {bad index "2a2": must be integer or "end"}}
+} {1 {syntax error in expression "2a2"}}
test lindex-2.4 {error conditions} {
list [catch {lindex "a \{" 2} msg] $msg
} {1 {unmatched open brace in list}}
diff --git a/tests/linsert.test b/tests/linsert.test
index 5c54d92..456ea3e 100644
--- a/tests/linsert.test
+++ b/tests/linsert.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: linsert.test,v 1.3 1999/04/16 00:47:30 stanton Exp $
+# RCS: @(#) $Id: linsert.test,v 1.4 1999/05/04 01:33:12 stanton Exp $
if {[lsearch [namespace children] ::tcltest] == -1} {
source [file join [pwd] [file dirname [info script]] defs.tcl]
@@ -86,7 +86,7 @@ test linsert-2.2 {linsert errors} {
} {1 {wrong # args: should be "linsert list index element ?element ...?"}}
test linsert-2.3 {linsert errors} {
list [catch {linsert a 12x 2} msg] $msg
-} {1 {bad index "12x": must be integer or "end"}}
+} {1 {syntax error in expression "12x"}}
test linsert-2.4 {linsert errors} {
list [catch {linsert \{ 12 2} msg] $msg
} {1 {unmatched open brace in list}}
diff --git a/tests/lrange.test b/tests/lrange.test
index 4132969..4dc70f8 100644
--- a/tests/lrange.test
+++ b/tests/lrange.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: lrange.test,v 1.3 1999/04/16 00:47:30 stanton Exp $
+# RCS: @(#) $Id: lrange.test,v 1.4 1999/05/04 01:33:12 stanton Exp $
if {[lsearch [namespace children] ::tcltest] == -1} {
source [file join [pwd] [file dirname [info script]] defs.tcl]
@@ -74,10 +74,10 @@ test lrange-2.2 {error conditions} {
} {1 {wrong # args: should be "lrange list first last"}}
test lrange-2.3 {error conditions} {
list [catch {lrange a b 6} msg] $msg
-} {1 {bad index "b": must be integer or "end"}}
+} {1 {syntax error in expression "b"}}
test lrange-2.4 {error conditions} {
list [catch {lrange a 0 enigma} msg] $msg
-} {1 {bad index "enigma": must be integer or "end"}}
+} {1 {syntax error in expression "enigma"}}
test lrange-2.5 {error conditions} {
list [catch {lrange "a \{b c" 3 4} msg] $msg
} {1 {unmatched open brace in list}}
diff --git a/tests/lreplace.test b/tests/lreplace.test
index d0743eb..b1f0657 100644
--- a/tests/lreplace.test
+++ b/tests/lreplace.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: lreplace.test,v 1.3 1999/04/16 00:47:30 stanton Exp $
+# RCS: @(#) $Id: lreplace.test,v 1.4 1999/05/04 01:33:12 stanton Exp $
if {[lsearch [namespace children] ::tcltest] == -1} {
source [file join [pwd] [file dirname [info script]] defs.tcl]
@@ -109,13 +109,13 @@ test lreplace-2.2 {lreplace errors} {
} {1 {wrong # args: should be "lreplace list first last ?element element ...?"}}
test lreplace-2.3 {lreplace errors} {
list [catch {lreplace x a 10} msg] $msg
-} {1 {bad index "a": must be integer or "end"}}
+} {1 {syntax error in expression "a"}}
test lreplace-2.4 {lreplace errors} {
list [catch {lreplace x 10 x} msg] $msg
-} {1 {bad index "x": must be integer or "end"}}
+} {1 {syntax error in expression "x"}}
test lreplace-2.5 {lreplace errors} {
list [catch {lreplace x 10 1x} msg] $msg
-} {1 {bad index "1x": must be integer or "end"}}
+} {1 {syntax error in expression "1x"}}
test lreplace-2.6 {lreplace errors} {
list [catch {lreplace x 3 2} msg] $msg
} {1 {list doesn't contain element 3}}
diff --git a/tests/string.test b/tests/string.test
index 1648dc4..013cde4 100644
--- a/tests/string.test
+++ b/tests/string.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: string.test,v 1.5 1999/04/30 16:22:25 hershey Exp $
+# RCS: @(#) $Id: string.test,v 1.6 1999/05/04 01:33:12 stanton Exp $
if {[lsearch [namespace children] ::tcltest] == -1} {
source [file join [pwd] [file dirname [info script]] defs.tcl]
@@ -20,18 +20,27 @@ if {[lsearch [namespace children] ::tcltest] == -1} {
test string-1.1 {string compare} {
string compare abcde abdef
} -1
-test string-1.2 {string compare} {
+test string-1.2 {string compare, shortest method name} {
string c abcde ABCDE
} 1
test string-1.3 {string compare} {
string compare abcde abcde
} 0
-test string-1.4 {string compare} {
+test string-1.4 {string compare too few args} {
list [catch {string compare a} msg] $msg
-} {1 {wrong # args: should be "string compare string1 string2"}}
-test string-1.5 {string compare} {
+} {1 {wrong # args: should be "string compare string1 string2 ?length?"}}
+test string-1.5 {string compare bad args} {
list [catch {string compare a b c} msg] $msg
-} {1 {wrong # args: should be "string compare string1 string2"}}
+} {1 {expected integer but got "c"}}
+test string-1.6 {string compare too many args} {
+ list [catch {string compare a b 1 c} msg] $msg
+} {1 {wrong # args: should be "string compare string1 string2 ?length?"}}
+test string-1.7 {string compare with length} {
+ string compare abcde abxyz 2
+} 0
+test string-1.8 {string compare with special index} {
+ list [catch {string compare abcde abxyz end-3} msg] $msg
+} {1 {expected integer but got "end-3"}}
test string-2.1 {string first} {
string first bq abcdefgbcefgbqrs
@@ -59,7 +68,7 @@ test string-3.1 {string index} {
string index abcde 0
} a
test string-3.2 {string index} {
- string i abcde 4
+ string in abcde 4
} e
test string-3.3 {string index} {
string index abcde 5
@@ -75,7 +84,13 @@ test string-3.6 {string index} {
} {1 {wrong # args: should be "string index string charIndex"}}
test string-3.7 {string index} {
list [catch {string index a xyz} msg] $msg
-} {1 {expected integer but got "xyz"}}
+} {1 {syntax error in expression "xyz"}}
+test string-3.8 {string index} {
+ string index abc end
+} c
+test string-3.9 {string index} {
+ string index abc end-1
+} b
test string-4.1 {string last} {
string la xxx xxxx123xx345x678
@@ -110,7 +125,7 @@ test string-6.1 {string match} {
string match abc abc
} 1
test string-6.2 {string match} {
- string m abc abd
+ string mat abc abd
} 0
test string-6.3 {string match} {
string match ab*c abc
@@ -229,16 +244,19 @@ test string-7.11 {string range} {
} {1 {wrong # args: should be "string range string first last"}}
test string-7.12 {string range} {
list [catch {string range abc abc 1} msg] $msg
-} {1 {bad index "abc": must be integer or "end"}}
+} {1 {syntax error in expression "abc"}}
test string-7.13 {string range} {
list [catch {string range abc 1 eof} msg] $msg
-} {1 {bad index "eof": must be integer or "end"}}
+} {1 {syntax error in expression "eof"}}
test string-7.14 {string range} {
- string range abcdefghijklmnop end end
-} {p}
+ string range abcdefghijklmnop end-1 end
+} {op}
test string-7.15 {string range} {
string range abcdefghijklmnop e 1000
} {p}
+test string-7.16 {string range} {
+ string range abcdefghijklmnop end end-1
+} {}
test string-8.1 {string trim} {
string trim " XYZ "
@@ -292,7 +310,7 @@ test string-10.4 {string trimright errors} {
} {1 {wrong # args: should be "string trimright string ?chars?"}}
test string-10.5 {string trimright errors} {
list [catch {string trimg a} msg] $msg
-} {1 {bad option "trimg": must be compare, first, index, last, length, match, range, tolower, toupper, totitle, trim, trimleft, trimright, wordend, or wordstart}}
+} {1 {bad option "trimg": must be bytes, compare, equal, first, icompare, iequal, index, last, length, map, match, range, repeat, replace, tolower, toupper, totitle, trim, trimleft, trimright, wordend, or wordstart}}
test string-11.1 {string tolower} {
string tolower ABCDeF
@@ -303,114 +321,295 @@ test string-11.2 {string tolower} {
test string-11.3 {string tolower} {
string tolower {123#$&*()}
} {123#$&*()}
-test string-11.4 {string tolower} {
+test string-11.4 {string tolower too few args} {
list [catch {string tolower} msg] $msg
-} {1 {wrong # args: should be "string tolower string"}}
-test string-11.5 {string tolower} {
+} {1 {wrong # args: should be "string tolower string ?first? ?last?"}}
+test string-11.5 {string tolower bad args} {
list [catch {string tolower a b} msg] $msg
-} {1 {wrong # args: should be "string tolower string"}}
-test string-11.6 {string tolower called with badly formed Utf string} {
+} {1 {syntax error in expression "b"}}
+test string-11.6 {string tolower too many args} {
+ list [catch {string tolower ABC 1 end oops} msg] $msg
+} {1 {wrong # args: should be "string tolower string ?first? ?last?"}}
+test string-11.7 {string tolower} {
+ string tolower ABC 1
+} AbC
+test string-11.8 {string tolower} {
+ string tolower ABC 1 end
+} Abc
+test string-11.9 {string tolower} {
+ string tolower ABC 0 end-1
+} abC
+test string-11.10 {string tolower called with badly formed Utf string} {
string tolower [bytestring "\u00fcBER"]
} [bytestring "\u00fcber"]
-test string-11.7 {string totitle} {
+test string-12.1 {string totitle} {
string totitle ABCDeF
} {Abcdef}
-test string-11.8 {string totitle} {
+test string-12.2 {string totitle} {
string totitle "aBC d Hij xyZ"
} {Abc d hij xyz}
-test string-11.9 {string totitle} {
+test string-12.3 {string totitle} {
string totitle {123#$&*()}
} {123#$&*()}
-test string-11.10 {string totitle} {
+test string-12.4 {string totitle} {
list [catch {string totitle} msg] $msg
-} {1 {wrong # args: should be "string totitle string"}}
-test string-11.11 {string totitle} {
+} {1 {wrong # args: should be "string totitle string ?first? ?last?"}}
+test string-12.5 {string totitle} {
list [catch {string totitle a b} msg] $msg
-} {1 {wrong # args: should be "string totitle string"}}
-test string-11.12 {string totitle called with badly formed Utf string} {
+} {1 {syntax error in expression "b"}}
+test string-12.6 {string totitle too many args} {
+ list [catch {string totitle ABC 1 end oops} msg] $msg
+} {1 {wrong # args: should be "string totitle string ?first? ?last?"}}
+test string-12.7 {string totitle} {
+ string totitle abC 1
+} aBC
+test string-12.8 {string totitle} {
+ string totitle ABC 1 end
+} ABc
+test string-12.9 {string totitle} {
+ string totitle ABC 0 end-1
+} AbC
+test string-12.10 {string totitle called with badly formed Utf string} {
string totitle [bytestring "\u00fcBER"]
} [bytestring "\u00fcber"]
-test string-12.1 {string toupper} {
+test string-13.1 {string toupper} {
string toupper abCDEf
} {ABCDEF}
-test string-12.2 {string toupper} {
+test string-13.2 {string toupper} {
string toupper "abc xYz"
} {ABC XYZ}
-test string-12.3 {string toupper} {
+test string-13.3 {string toupper} {
string toupper {123#$&*()}
} {123#$&*()}
-test string-12.4 {string toupper} {
+test string-13.4 {string toupper} {
list [catch {string toupper} msg] $msg
-} {1 {wrong # args: should be "string toupper string"}}
-test string-12.5 {string toupper} {
+} {1 {wrong # args: should be "string toupper string ?first? ?last?"}}
+test string-13.5 {string toupper} {
list [catch {string toupper a b} msg] $msg
-} {1 {wrong # args: should be "string toupper string"}}
-test string-12.6 {string toupper called with badly formed Utf string} {
+} {1 {syntax error in expression "b"}}
+test string-13.6 {string toupper} {
+ list [catch {string toupper a 1 end oops} msg] $msg
+} {1 {wrong # args: should be "string toupper string ?first? ?last?"}}
+test string-13.7 {string toupper} {
+ string toupper abc 1
+} aBc
+test string-13.8 {string toupper} {
+ string toupper abc 1 end
+} aBC
+test string-13.9 {string toupper} {
+ string toupper abc 0 end-1
+} ABc
+test string-13.10 {string toupper called with badly formed Utf string} {
string toupper [bytestring "\u00fcber"]
} [bytestring "\u00fcBER"]
-test string-13.1 {string wordend} {
+test string-14.1 {string wordend} {
list [catch {string wordend a} msg] $msg
} {1 {wrong # args: should be "string wordend string index"}}
-test string-13.2 {string wordend} {
+test string-14.2 {string wordend} {
list [catch {string wordend a b c} msg] $msg
} {1 {wrong # args: should be "string wordend string index"}}
-test string-13.3 {string wordend} {
+test string-14.3 {string wordend} {
list [catch {string wordend a gorp} msg] $msg
-} {1 {expected integer but got "gorp"}}
-test string-13.4 {string wordend} {
+} {1 {syntax error in expression "gorp"}}
+test string-14.4 {string wordend} {
string wordend abc. -1
} 3
-test string-13.5 {string wordend} {
+test string-14.5 {string wordend} {
string wordend abc. 100
} 4
-test string-13.6 {string wordend} {
+test string-14.6 {string wordend} {
string wordend "word_one two three" 2
} 8
-test string-13.7 {string wordend} {
+test string-14.7 {string wordend} {
string wordend "one .&# three" 5
} 6
-test string-13.8 {string wordend} {
+test string-14.8 {string wordend} {
string worde "x.y" 0
} 1
+test string-14.9 {string wordend} {
+ string worde "x.y" end-1
+} 2
-test string-14.1 {string wordstart} {
+test string-15.1 {string wordstart} {
list [catch {string word a} msg] $msg
-} {1 {ambiguous option "word": must be compare, first, index, last, length, match, range, tolower, toupper, totitle, trim, trimleft, trimright, wordend, or wordstart}}
-test string-14.2 {string wordstart} {
+} {1 {ambiguous option "word": must be bytes, compare, equal, first, icompare, iequal, index, last, length, map, match, range, repeat, replace, tolower, toupper, totitle, trim, trimleft, trimright, wordend, or wordstart}}
+test string-15.2 {string wordstart} {
list [catch {string wordstart a} msg] $msg
} {1 {wrong # args: should be "string wordstart string index"}}
-test string-14.3 {string wordstart} {
+test string-15.3 {string wordstart} {
list [catch {string wordstart a b c} msg] $msg
} {1 {wrong # args: should be "string wordstart string index"}}
-test string-14.4 {string wordstart} {
+test string-15.4 {string wordstart} {
list [catch {string wordstart a gorp} msg] $msg
-} {1 {expected integer but got "gorp"}}
-test string-14.5 {string wordstart} {
+} {1 {syntax error in expression "gorp"}}
+test string-15.5 {string wordstart} {
string wordstart "one two three_words" 400
} 8
-test string-14.6 {string wordstart} {
+test string-15.6 {string wordstart} {
string wordstart "one two three_words" 2
} 0
-test string-14.7 {string wordend} {
+test string-15.7 {string wordstart} {
string wordstart "one two three_words" -2
} 0
-test string-14.8 {string wordend} {
+test string-15.8 {string wordstart} {
string wordstart "one .*&^ three" 6
} 6
-test string-14.9 {string wordend} {
+test string-15.9 {string wordstart} {
string wordstart "one two three" 4
} 4
+test string-15.10 {string wordstart} {
+ string wordstart "one two three" end-5
+} 7
-test string-15.1 {error conditions} {
+test string-16.1 {error conditions} {
list [catch {string gorp a b} msg] $msg
-} {1 {bad option "gorp": must be compare, first, index, last, length, match, range, tolower, toupper, totitle, trim, trimleft, trimright, wordend, or wordstart}}
-test string-15.2 {error conditions} {
+} {1 {bad option "gorp": must be bytes, compare, equal, first, icompare, iequal, index, last, length, map, match, range, repeat, replace, tolower, toupper, totitle, trim, trimleft, trimright, wordend, or wordstart}}
+test string-16.2 {error conditions} {
list [catch {string} msg] $msg
} {1 {wrong # args: should be "string option arg ?arg ...?"}}
+# only need a few tests on equal, since it uses the same code as
+# string compare, but just modifies the return output
+test string-17.1 {string equal} {
+ string equal abcde abdef
+} 0
+test string-17.2 {string equal} {
+ string eq abcde ABCDE
+} 0
+test string-17.3 {string equal} {
+ string equal abcde abcde
+} 1
+
+test string-18.1 {string icompare} {
+ string icompare abcde abdef
+} -1
+test string-18.2 {string icompare} {
+ string ic abcde ABCDE
+} 0
+test string-18.3 {string icompare} {
+ string icompare abcde abcde
+} 0
+test string-18.4 {string icompare too few args} {
+ list [catch {string icompare a} msg] $msg
+} {1 {wrong # args: should be "string icompare string1 string2 ?length?"}}
+test string-18.5 {string icompare bad args} {
+ list [catch {string icompare a b c} msg] $msg
+} {1 {expected integer but got "c"}}
+test string-18.6 {string icompare too many args} {
+ list [catch {string icompare a b 1 c} msg] $msg
+} {1 {wrong # args: should be "string icompare string1 string2 ?length?"}}
+test string-18.7 {string icompare with length} {
+ string icompare abcde Abxyz 2
+} 0
+test string-18.8 {string icompare with special index} {
+ list [catch {string icompare Abcde abxyz end-3} msg] $msg
+} {1 {expected integer but got "end-3"}}
+
+test string-19.1 {string iequal} {
+ string iequal abcde abdef
+} 0
+test string-19.2 {string iequal} {
+ string ieq abcde ABCDE
+} 1
+test string-19.3 {string iequal} {
+ string iequal abcde abcde
+} 1
+
+test string-20.1 {string map} {
+ list [catch {string map} msg] $msg
+} {1 {wrong # args: should be "string map charMap string"}}
+test string-20.2 {string map} {
+ list [catch {string map {a b} abba oops} msg] $msg
+} {1 {wrong # args: should be "string map charMap string"}}
+test string-20.3 {string map} {
+ string map {a b} abba
+} {bbbb}
+test string-20.4 {string map} {
+ string map {abc 321 ab * a A} aabcabaababcab
+} {A321*A*321*}
+test string-20.5 {string map} {
+ list [catch {string map {a b c} abba} msg] $msg
+} {1 {char map list unbalanced}}
+test string-20.6 {string map} {
+ string map {\x00 NULL blah \x00nix} {qwerty}
+} {qwerty}
+
+test string-21.1 {string repeat} {
+ list [catch {string repeat} msg] $msg
+} {1 {wrong # args: should be "string repeat string count"}}
+test string-21.2 {string repeat} {
+ list [catch {string repeat abc 10 oops} msg] $msg
+} {1 {wrong # args: should be "string repeat string count"}}
+test string-21.3 {string repeat} {
+ string repeat {} 100
+} {}
+test string-21.4 {string repeat} {
+ string repeat { } 5
+} { }
+test string-21.5 {string repeat} {
+ string repeat abc 3
+} {abcabcabc}
+test string-21.6 {string repeat} {
+ string repeat abc -1
+} {}
+test string-21.7 {string repeat} {
+ list [catch {string repeat abc end} msg] $msg
+} {1 {expected integer but got "end"}}
+
+test string-22.1 {string replace} {
+} {}
+test string-22.2 {string replace} {
+ string replace abcdefghijklmnop 2 14
+} {abp}
+test string-22.3 {string replace} {
+ string replace abcdefghijklmnop 7 1000
+} {abcdefg}
+test string-22.4 {string replace} {
+ string replace abcdefghijklmnop 10 e
+} {abcdefghij}
+test string-22.5 {string replace} {
+ string replace abcdefghijklmnop 10 9
+} {abcdefghijklmnop}
+test string-22.6 {string replace} {
+ string replace abcdefghijklmnop -3 2
+} {defghijklmnop}
+test string-22.7 {string replace} {
+ string replace abcdefghijklmnop -3 -2
+} {abcdefghijklmnop}
+test string-22.8 {string replace} {
+ string replace abcdefghijklmnop 1000 1010
+} {abcdefghijklmnop}
+test string-22.9 {string replace} {
+ string replace abcdefghijklmnop -100 end
+} {}
+test string-22.10 {string replace} {
+ list [catch {string replace} msg] $msg
+} {1 {wrong # args: should be "string replace string first last ?string?"}}
+test string-22.11 {string replace} {
+ list [catch {string replace a 1} msg] $msg
+} {1 {wrong # args: should be "string replace string first last ?string?"}}
+test string-22.12 {string replace} {
+ list [catch {string replace a 1 2 3 4} msg] $msg
+} {1 {wrong # args: should be "string replace string first last ?string?"}}
+test string-22.13 {string replace} {
+ list [catch {string replace abc abc 1} msg] $msg
+} {1 {syntax error in expression "abc"}}
+test string-22.14 {string replace} {
+ list [catch {string replace abc 1 eof} msg] $msg
+} {1 {syntax error in expression "eof"}}
+test string-22.15 {string replace} {
+ string replace abcdefghijklmnop end-10 end-2 NEW
+} {abcdeNEWop}
+test string-22.16 {string replace} {
+ string replace abcdefghijklmnop 0 e foo
+} {foo}
+test string-22.17 {string replace} {
+ string replace abcdefghijklmnop end end-1
+} {abcdefghijklmnop}
+
# cleanup
::tcltest::cleanupTests
return
@@ -426,3 +625,6 @@ return
+
+
+