summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authordgp <dgp@users.sourceforge.net>2018-04-25 15:00:53 (GMT)
committerdgp <dgp@users.sourceforge.net>2018-04-25 15:00:53 (GMT)
commit13bcd282e3970b483fe00aa53e58ccf456d17bbc (patch)
tree4dbc707399a6e334148c8704fdf5b5450c204d3a /tests
parent26e714137a987c67af5a932fdaf7bd1138d97a2d (diff)
parent859bcc9f868c96444e50001dac785edb3e889156 (diff)
downloadtcl-13bcd282e3970b483fe00aa53e58ccf456d17bbc.zip
tcl-13bcd282e3970b483fe00aa53e58ccf456d17bbc.tar.gz
tcl-13bcd282e3970b483fe00aa53e58ccf456d17bbc.tar.bz2
merge 8.7
Diffstat (limited to 'tests')
-rw-r--r--tests/basic.test2
-rw-r--r--tests/compile.test3
-rw-r--r--tests/lrange.test102
-rw-r--r--tests/msgcat.test16
-rw-r--r--tests/set-old.test2
-rw-r--r--tests/string.test2546
-rw-r--r--tests/stringComp.test801
-rw-r--r--tests/var.test207
8 files changed, 1716 insertions, 1963 deletions
diff --git a/tests/basic.test b/tests/basic.test
index 0e4ddea..2332994 100644
--- a/tests/basic.test
+++ b/tests/basic.test
@@ -670,7 +670,7 @@ proc l3 {} {
}
# Do all tests once byte compiled and once with direct string evaluation
-for {set noComp 0} {$noComp <= 1} {incr noComp} {
+foreach noComp {0 1} {
if $noComp {
interp alias {} run {} testevalex
diff --git a/tests/compile.test b/tests/compile.test
index 2fa4147..fb9a87a 100644
--- a/tests/compile.test
+++ b/tests/compile.test
@@ -499,7 +499,8 @@ test compile-15.5 {proper TCL_RETURN code from [return]} {
apply {{} {catch {set a 1}; return}}
} ""
-for {set noComp 0} {$noComp <= 1} {incr noComp} {
+# Do all tests once byte compiled and once with direct string evaluation
+foreach noComp {0 1} {
if $noComp {
interp alias {} run {} testevalex
diff --git a/tests/lrange.test b/tests/lrange.test
index a5367a4..3077d91 100644
--- a/tests/lrange.test
+++ b/tests/lrange.test
@@ -90,7 +90,6 @@ test lrange-3.1 {Bug 3588366: end-offsets before start} {
lrange $l 0 end-5
}} {1 2 3 4 5}
} {}
-
test lrange-3.2 {compiled with static indices out of range, negative} {
list [lrange {a b c} -1 -2] [lrange {a b c} -2 -1] [lrange {a b c} -3 -2] [lrange {a b c} -2 -3]
} [lrepeat 4 {}]
@@ -108,6 +107,107 @@ test lrange-3.6 {compiled with calculated indices, end out of range (after end)}
list [lrange {a b c} 1 end+1] [lrange {a b c} 1+0 2+1] [lrange {a b c} 1 end+1] [lrange {a b c} end-1 3+1]
} [lrepeat 4 {b c}]
+test lrange-4.1 {lrange pure promise} -body {
+ set ll1 [list $tcl_version 2 3 4]
+ # Shared
+ set ll2 $ll1
+ # With string rep
+ string length $ll1
+ set rep1 [tcl::unsupported::representation $ll1]
+ # Get new pure object
+ set x [lrange $ll1 0 end]
+ set rep2 [tcl::unsupported::representation $x]
+ regexp {object pointer at (\S+)} $rep1 -> obj1
+ regexp {object pointer at (\S+)} $rep2 -> obj2
+ list $rep1 $rep2 [string equal $obj1 $obj2]
+ # Check for a new clean object
+} -match glob -result {*value is *refcount of 3,*, string rep*value is*refcount of 2,* no string rep* 0}
+
+test lrange-4.2 {lrange pure promise} -body {
+ set ll1 [list $tcl_version 2 3 4]
+ # Shared
+ set ll2 $ll1
+ # With string rep
+ string length $ll1
+ set rep1 [tcl::unsupported::representation $ll1]
+ # Get new pure object, not compiled
+ set x [[string cat l range] $ll1 0 end]
+ set rep2 [tcl::unsupported::representation $x]
+ regexp {object pointer at (\S+)} $rep1 -> obj1
+ regexp {object pointer at (\S+)} $rep2 -> obj2
+ list $rep1 $rep2 [string equal $obj1 $obj2]
+ # Check for a new clean object
+} -match glob -result {*value is *refcount of 3,*, string rep*value is*refcount of 2,* no string rep* 0}
+
+test lrange-4.3 {lrange pure promise} -body {
+ set ll1 [list $tcl_version 2 3 4]
+ # With string rep
+ string length $ll1
+ set rep1 [tcl::unsupported::representation $ll1]
+ # Get pure object, unshared
+ set ll2 [lrange $ll1[set ll1 {}] 0 end]
+ set rep2 [tcl::unsupported::representation $ll2]
+ regexp {object pointer at (\S+)} $rep1 -> obj1
+ regexp {object pointer at (\S+)} $rep2 -> obj2
+ list $rep1 $rep2 [string equal $obj1 $obj2]
+ # Internal optimisations should keep the same object
+} -match glob -result {*value is *refcount of 2,*, string rep*value is*refcount of 2,* no string rep* 1}
+
+test lrange-4.4 {lrange pure promise} -body {
+ set ll1 [list $tcl_version 2 3 4]
+ # With string rep
+ string length $ll1
+ set rep1 [tcl::unsupported::representation $ll1]
+ # Get pure object, unshared, not compiled
+ set ll2 [[string cat l range] $ll1[set ll1 {}] 0 end]
+ set rep2 [tcl::unsupported::representation $ll2]
+ regexp {object pointer at (\S+)} $rep1 -> obj1
+ regexp {object pointer at (\S+)} $rep2 -> obj2
+ list $rep1 $rep2 [string equal $obj1 $obj2]
+ # Internal optimisations should keep the same object
+} -match glob -result {*value is *refcount of 2,*, string rep*value is*refcount of 2,* no string rep* 1}
+
+# Testing for compiled vs non-compiled behaviour, and shared vs non-shared.
+# Far too many variations to check with spelt-out tests.
+# Note that this *just* checks whether the different versions are the same
+# not whether any of them is correct.
+apply {{} {
+ set lss {{} {a} {a b c} {a b c d}}
+ set idxs {-2 -1 0 1 2 3 end-3 end-2 end-1 end end+1 end+2}
+ set lrange lrange
+
+ foreach ls $lss {
+ foreach a $idxs {
+ foreach b $idxs {
+ # Shared, uncompiled
+ set ls2 $ls
+ set expected [list [catch {$lrange $ls $a $b} m] $m]
+ # Shared, compiled
+ set tester [list lrange $ls $a $b]
+ set script [list catch $tester m]
+ set script "list \[$script\] \$m"
+ test lrange-5.[incr n].1 {lrange shared compiled} \
+ [list apply [list {} $script]] $expected
+ # Unshared, uncompiled
+ set tester [string map [list %l [list $ls] %a $a %b $b] {
+ [string cat l range] [lrange %l 0 end] %a %b
+ }]
+ set script [list catch $tester m]
+ set script "list \[$script\] \$m"
+ test lrange-5.$n.2 {lrange unshared uncompiled} \
+ [list apply [list {} $script]] $expected
+ # Unshared, compiled
+ set tester [string map [list %l [list $ls] %a $a %b $b] {
+ lrange [lrange %l 0 end] %a %b
+ }]
+ set script [list catch $tester m]
+ set script "list \[$script\] \$m"
+ test lrange-5.$n.3 {lrange unshared compiled} \
+ [list apply [list {} $script]] $expected
+ }
+ }
+ }
+}}
# cleanup
::tcltest::cleanupTests
diff --git a/tests/msgcat.test b/tests/msgcat.test
index 0d2f928..12030fb 100644
--- a/tests/msgcat.test
+++ b/tests/msgcat.test
@@ -1317,33 +1317,33 @@ if {[package vsatisfies [package provide msgcat] 1.7]} {
interp bgerror {} $bgerrorsaved
- # Tests msgcat-15.*: [mcutil]
+ # Tests msgcat-18.*: [mcutil]
- test msgcat-15.1 {mcutil - no argument} -body {
+ test msgcat-18.1 {mcutil - no argument} -body {
mcutil
} -returnCodes 1\
-result {wrong # args: should be "mcutil subcommand ?arg ...?"}
- test msgcat-15.2 {mcutil - wrong argument} -body {
+ test msgcat-18.2 {mcutil - wrong argument} -body {
mcutil junk
} -returnCodes 1\
-result {unknown subcommand "junk": must be getpreferences, or getsystemlocale}
- test msgcat-15.3 {mcutil - partial argument} -body {
+ test msgcat-18.3 {mcutil - partial argument} -body {
mcutil getsystem
} -returnCodes 1\
-result {unknown subcommand "getsystem": must be getpreferences, or getsystemlocale}
- test msgcat-15.4 {mcutil getpreferences - no argument} -body {
+ test msgcat-18.4 {mcutil getpreferences - no argument} -body {
mcutil getpreferences
} -returnCodes 1\
-result {wrong # args: should be "mcutil getpreferences locale"}
- test msgcat-15.5 {mcutil getpreferences - DE_de} -body {
+ test msgcat-18.5 {mcutil getpreferences - DE_de} -body {
mcutil getpreferences DE_de
} -result {de_de de {}}
- test msgcat-15.6 {mcutil getsystemlocale - wrong argument} -body {
+ test msgcat-18.6 {mcutil getsystemlocale - wrong argument} -body {
mcutil getsystemlocale DE_de
} -returnCodes 1\
-result {wrong # args: should be "mcutil getsystemlocale"}
@@ -1351,7 +1351,7 @@ if {[package vsatisfies [package provide msgcat] 1.7]} {
# The result is system dependent
# So just test if it runs
# The environment variable version was test with test 0.x
- test msgcat-15.7 {mcutil getsystemlocale} -body {
+ test msgcat-18.7 {mcutil getsystemlocale} -body {
mcutil getsystemlocale
set ok ok
} -result {ok}
diff --git a/tests/set-old.test b/tests/set-old.test
index 309abaf..b2e7aa6 100644
--- a/tests/set-old.test
+++ b/tests/set-old.test
@@ -340,7 +340,7 @@ test set-old-8.6 {array command} {
catch {unset a}
set a(22) 3
list [catch {array gorp a} msg] $msg
-} {1 {unknown or ambiguous subcommand "gorp": must be anymore, donesearch, exists, get, names, nextelement, set, size, startsearch, statistics, or unset}}
+} {1 {unknown or ambiguous subcommand "gorp": must be anymore, donesearch, exists, for, get, names, nextelement, set, size, startsearch, statistics, or unset}}
test set-old-8.7 {array command, anymore option} {
catch {unset a}
list [catch {array anymore a x} msg] $msg
diff --git a/tests/string.test b/tests/string.test
index f4b94de..0cbafae 100644
--- a/tests/string.test
+++ b/tests/string.test
@@ -20,289 +20,476 @@ if {[lsearch [namespace children] ::tcltest] == -1} {
::tcltest::loadTestedCommands
catch [list package require -exact Tcltest [info patchlevel]]
+# Helper commands to test various optimizations, code paths, and special cases.
+proc makeByteArray {s} {binary format a* $s}
+proc makeUnicode {s} {lindex [regexp -inline .* $s] 0}
+proc makeList {args} {return $args}
+proc makeShared {s} {uplevel 1 [list lappend copy $s]; return $s}
+
# Some tests require the testobj command
-testConstraint testobj [expr {[info commands testobj] != {}}]
-testConstraint testindexobj [expr {[info commands testindexobj] != {}}]
-testConstraint fullutf [expr {[format %c 0x010000] != "\ufffd"}]
+testConstraint testobj [expr {[info commands testobj] ne {}}]
+testConstraint testindexobj [expr {[info commands testindexobj] ne {}}]
+testConstraint testevalex [expr {[info commands testevalex] ne {}}]
+testConstraint tip389 [expr {[string length \U010000] == 2}]
# Used for constraining memory leak tests
testConstraint memory [llength [info commands memory]]
+if {[testConstraint memory]} {
+ proc getbytes {} {
+ set lines [split [memory info] \n]
+ return [lindex $lines 3 3]
+ }
+ proc leaktest {script {iterations 3}} {
+ set end [getbytes]
+ for {set i 0} {$i < $iterations} {incr i} {
+ uplevel 1 $script
+ set tmp $end
+ set end [getbytes]
+ }
+ return [expr {$end - $tmp}]
+ }
+}
proc representationpoke s {
set r [::tcl::unsupported::representation $s]
list [lindex $r 3] [string match {*, string representation "*"} $r]
}
+
+foreach noComp {0 1} {
+
+if {$noComp} {
+ if {[info commands testevalex] eq {}} {
+ test string-0.1.$noComp "show testevalex availability" {testevalex} {list} {}
+ continue
+ }
+ interp alias {} run {} testevalex
+ set constraints testevalex
+} else {
+ interp alias {} run {} try
+ set constraints {}
+}
+
-test string-1.1 {error conditions} {
- list [catch {string gorp a b} msg] $msg
+test string-1.1.$noComp {error conditions} {
+ list [catch {run {string gorp a b}} msg] $msg
} {1 {unknown or ambiguous subcommand "gorp": must be bytelength, cat, compare, equal, first, index, is, last, length, map, match, range, repeat, replace, reverse, tolower, totitle, toupper, trim, trimleft, trimright, wordend, or wordstart}}
-test string-1.2 {error conditions} {
- list [catch {string} msg] $msg
+test string-1.2.$noComp {error conditions} {
+ list [catch {run {string}} msg] $msg
} {1 {wrong # args: should be "string subcommand ?arg ...?"}}
+test stringComp-1.3.$noComp {error condition - undefined method during compile} {
+ # We don't want this to complain about 'never' because it may never
+ # be called, or string may get redefined. This must compile OK.
+ proc foo {str i} {
+ if {"yes" == "no"} { string never called but complains here }
+ string index $str $i
+ }
+ foo abc 0
+} a
-test string-2.1 {string compare, too few args} {
- list [catch {string compare a} msg] $msg
+test string-2.1.$noComp {string compare, too few args} {
+ list [catch {run {string compare a}} msg] $msg
} {1 {wrong # args: should be "string compare ?-nocase? ?-length int? string1 string2"}}
-test string-2.2 {string compare, bad args} {
- list [catch {string compare a b c} msg] $msg
+test string-2.2.$noComp {string compare, bad args} {
+ list [catch {run {string compare a b c}} msg] $msg
} {1 {bad option "a": must be -nocase or -length}}
-test string-2.3 {string compare, bad args} {
- list [catch {string compare -length -nocase str1 str2} msg] $msg
+test string-2.3.$noComp {string compare, bad args} {
+ list [catch {run {string compare -length -nocase str1 str2}} msg] $msg
} {1 {expected integer but got "-nocase"}}
-test string-2.4 {string compare, too many args} {
- list [catch {string compare -length 10 -nocase str1 str2 str3} msg] $msg
+test string-2.4.$noComp {string compare, too many args} {
+ list [catch {run {string compare -length 10 -nocase str1 str2 str3}} msg] $msg
} {1 {wrong # args: should be "string compare ?-nocase? ?-length int? string1 string2"}}
-test string-2.5 {string compare with length unspecified} {
- list [catch {string compare -length 10 10} msg] $msg
+test string-2.5.$noComp {string compare with length unspecified} {
+ list [catch {run {string compare -length 10 10}} msg] $msg
} {1 {wrong # args: should be "string compare ?-nocase? ?-length int? string1 string2"}}
-test string-2.6 {string compare} {
- string compare abcde abdef
+test string-2.6.$noComp {string compare} {
+ run {string compare abcde abdef}
} -1
-test string-2.7 {string compare, shortest method name} {
- string co abcde ABCDE
+test string-2.7.$noComp {string compare, shortest method name} {
+ run {string co abcde ABCDE}
} 1
-test string-2.8 {string compare} {
- string compare abcde abcde
+test string-2.8.$noComp {string compare} {
+ run {string compare abcde abcde}
} 0
-test string-2.9 {string compare with length} {
- string compare -length 2 abcde abxyz
+test string-2.9.$noComp {string compare with length} {
+ run {string compare -length 2 abcde abxyz}
} 0
-test string-2.10 {string compare with special index} {
- list [catch {string compare -length end-3 abcde abxyz} msg] $msg
+test string-2.10.$noComp {string compare with special index} {
+ list [catch {run {string compare -length end-3 abcde abxyz}} msg] $msg
} {1 {expected integer but got "end-3"}}
-test string-2.11 {string compare, unicode} {
- string compare ab\u7266 ab\u7267
+test string-2.11.$noComp {string compare, unicode} {
+ run {string compare ab\u7266 ab\u7267}
+} -1
+test string-2.11.1.$noComp {string compare, unicode} {
+ run {string compare \334 \u00dc}
+} 0
+test string-2.11.2.$noComp {string compare, unicode} {
+ run {string compare \334 \u00fc}
} -1
-test string-2.12 {string compare, high bit} {
+test string-2.11.3.$noComp {string compare, unicode} {
+ run {string compare \334\334\334\374\374 \334\334\334\334\334}
+} 1
+test string-2.12.$noComp {string compare, high bit} {
# This test will fail if the underlying comparaison
# is using signed chars instead of unsigned chars.
# (like SunOS's default memcmp thus the compat/memcmp.c)
- string compare "\x80" "@"
+ run {string compare "\x80" "@"}
# Nb this tests works also in utf8 space because \x80 is
# translated into a 2 or more bytelength but whose first byte has
# the high bit set.
} 1
-test string-2.13 {string compare -nocase} {
- string compare -nocase abcde abdef
+test string-2.13.$noComp {string compare -nocase} {
+ run {string compare -nocase abcde abdef}
+} -1
+test string-2.13.1.$noComp {string compare -nocase} {
+ run {string compare -nocase abcde Abdef}
} -1
-test string-2.14 {string compare -nocase} {
- string compare -nocase abcde ABCDE
+test string-2.14.$noComp {string compare -nocase} {
+ run {string compare -nocase abcde ABCDE}
+} 0
+test string-2.15.$noComp {string compare -nocase} {
+ run {string compare -nocase abcde abcde}
+} 0
+test string-2.15.1.$noComp {string compare -nocase} {
+ run {string compare -nocase \334 \u00dc}
} 0
-test string-2.15 {string compare -nocase} {
- string compare -nocase abcde abcde
+test string-2.15.2.$noComp {string compare -nocase} {
+ run {string compare -nocase \334\334\334\374\u00fc \334\334\334\334\334}
} 0
-test string-2.16 {string compare -nocase with length} {
- string compare -length 2 -nocase abcde Abxyz
+test string-2.16.$noComp {string compare -nocase with length} {
+ run {string compare -length 2 -nocase abcde Abxyz}
} 0
-test string-2.17 {string compare -nocase with length} {
- string compare -nocase -length 3 abcde Abxyz
+test string-2.17.$noComp {string compare -nocase with length} {
+ run {string compare -nocase -length 3 abcde Abxyz}
} -1
-test string-2.18 {string compare -nocase with length <= 0} {
- string compare -nocase -length -1 abcde AbCdEf
+test string-2.18.$noComp {string compare -nocase with length <= 0} {
+ run {string compare -nocase -length -1 abcde AbCdEf}
} -1
-test string-2.19 {string compare -nocase with excessive length} {
- string compare -nocase -length 50 AbCdEf abcde
+test string-2.19.$noComp {string compare -nocase with excessive length} {
+ run {string compare -nocase -length 50 AbCdEf abcde}
} 1
-test string-2.20 {string compare -len unicode} {
+test string-2.20.$noComp {string compare -len unicode} {
# These are strings that are 6 BYTELENGTH long, but the length
# shouldn't make a different because there are actually 3 CHARS long
- string compare -len 5 \334\334\334 \334\334\374
+ run {string compare -len 5 \334\334\334 \334\334\374}
} -1
-test string-2.21 {string compare -nocase with special index} {
- list [catch {string compare -nocase -length end-3 Abcde abxyz} msg] $msg
+test string-2.21.$noComp {string compare -nocase with special index} {
+ list [catch {run {string compare -nocase -length end-3 Abcde abxyz}} msg] $msg
} {1 {expected integer but got "end-3"}}
-test string-2.22 {string compare, null strings} {
- string compare "" ""
+test string-2.22.$noComp {string compare, null strings} {
+ run {string compare "" ""}
} 0
-test string-2.23 {string compare, null strings} {
- string compare "" foo
+test string-2.23.$noComp {string compare, null strings} {
+ run {string compare "" foo}
} -1
-test string-2.24 {string compare, null strings} {
- string compare foo ""
+test string-2.24.$noComp {string compare, null strings} {
+ run {string compare foo ""}
} 1
-test string-2.25 {string compare -nocase, null strings} {
- string compare -nocase "" ""
+test string-2.25.$noComp {string compare -nocase, null strings} {
+ run {string compare -nocase "" ""}
} 0
-test string-2.26 {string compare -nocase, null strings} {
- string compare -nocase "" foo
+test string-2.26.$noComp {string compare -nocase, null strings} {
+ run {string compare -nocase "" foo}
} -1
-test string-2.27 {string compare -nocase, null strings} {
- string compare -nocase foo ""
+test string-2.27.$noComp {string compare -nocase, null strings} {
+ run {string compare -nocase foo ""}
} 1
-test string-2.28 {string compare with length, unequal strings} {
- string compare -length 2 abc abde
+test string-2.28.$noComp {string compare with length, unequal strings} {
+ run {string compare -length 2 abc abde}
} 0
-test string-2.29 {string compare with length, unequal strings} {
- string compare -length 2 ab abde
+test string-2.29.$noComp {string compare with length, unequal strings} {
+ run {string compare -length 2 ab abde}
} 0
-test string-2.30 {string compare with NUL character vs. other ASCII} {
+test string-2.30.$noComp {string compare with NUL character vs. other ASCII} {
# Be careful here, since UTF-8 rep comparison with memcmp() of
# these puts chars in the wrong order
- string compare \x00 \x01
+ run {string compare \x00 \x01}
} -1
-test string-2.31 {string compare, high bit} {
- proc foo {} {string compare "a\x80" "a@"}
- foo
+test string-2.31.$noComp {string compare, high bit} {
+ run {string compare "a\x80" "a@"}
} 1
-test string-2.32 {string compare, high bit} {
- proc foo {} {string compare "a\x00" "a\x01"}
- foo
+test string-2.32.$noComp {string compare, high bit} {
+ run {string compare "a\x00" "a\x01"}
} -1
-test string-2.33 {string compare, high bit} {
- proc foo {} {string compare "\x00\x00" "\x00\x01"}
- foo
+test string-2.33.$noComp {string compare, high bit} {
+ run {string compare "\x00\x00" "\x00\x01"}
} -1
+test string-2.34.$noComp {string compare, binary equal} {
+ run {string compare [binary format a100 0] [binary format a100 0]}
+} 0
+test string-2.35.$noComp {string compare, binary neq} {
+ run {string compare [binary format a100a 0 1] [binary format a100a 0 0]}
+} 1
+test string-2.36.$noComp {string compare, binary neq unequal length} {
+ run {string compare [binary format a20a 0 1] [binary format a100a 0 0]}
+} 1
# only need a few tests on equal, since it uses the same code as
# string compare, but just modifies the return output
-test string-3.1 {string equal} {
- string equal abcde abdef
+test string-3.1.$noComp {string equal} {
+ run {string equal abcde abdef}
+} 0
+test string-3.2.$noComp {string equal} {
+ run {string e abcde ABCDE}
+} 0
+test string-3.3.$noComp {string equal} {
+ run {string equal abcde abcde}
+} 1
+test string-3.4.$noComp {string equal -nocase} {
+ run {string equal -nocase \334\334\334\334\374\374\374\374 \334\334\334\334\334\334\334\334}
+} 1
+test string-3.5.$noComp {string equal -nocase} {
+ run {string equal -nocase abcde abdef}
+} 0
+test string-3.6.$noComp {string equal -nocase} {
+ run {string eq -nocase abcde ABCDE}
+} 1
+test string-3.7.$noComp {string equal -nocase} {
+ run {string equal -nocase abcde abcde}
+} 1
+test string-3.8.$noComp {string equal with length, unequal strings} {
+ run {string equal -length 2 abc abde}
+} 1
+test string-3.9.$noComp {string equal, too few args} {
+ list [catch {run {string equal a}} msg] $msg
+} {1 {wrong # args: should be "string equal ?-nocase? ?-length int? string1 string2"}}
+test string-3.10.$noComp {string equal, bad args} {
+ list [catch {run {string equal a b c}} msg] $msg
+} {1 {bad option "a": must be -nocase or -length}}
+test string-3.11.$noComp {string equal, bad args} {
+ list [catch {run {string equal -length -nocase str1 str2}} msg] $msg
+} {1 {expected integer but got "-nocase"}}
+test string-3.12.$noComp {string equal, too many args} {
+ list [catch {run {string equal -length 10 -nocase str1 str2 str3}} msg] $msg
+} {1 {wrong # args: should be "string equal ?-nocase? ?-length int? string1 string2"}}
+test string-3.13.$noComp {string equal with length unspecified} {
+ list [catch {run {string equal -length 10 10}} msg] $msg
+} {1 {wrong # args: should be "string equal ?-nocase? ?-length int? string1 string2"}}
+test string-3.14.$noComp {string equal with length} {
+ run {string equal -length 2 abcde abxyz}
+} 1
+test string-3.15.$noComp {string equal with special index} {
+ list [catch {run {string equal -length end-3 abcde abxyz}} msg] $msg
+} {1 {expected integer but got "end-3"}}
+
+test string-3.16.$noComp {string equal, unicode} {
+ run {string equal ab\u7266 ab\u7267}
+} 0
+test string-3.17.$noComp {string equal, unicode} {
+ run {string equal \334 \u00dc}
+} 1
+test string-3.18.$noComp {string equal, unicode} {
+ run {string equal \334 \u00fc}
+} 0
+test string-3.19.$noComp {string equal, unicode} {
+ run {string equal \334\334\334\374\374 \334\334\334\334\334}
+} 0
+test string-3.20.$noComp {string equal, high bit} {
+ # This test will fail if the underlying comparaison
+ # is using signed chars instead of unsigned chars.
+ # (like SunOS's default memcmp thus the compat/memcmp.c)
+ run {string equal "\x80" "@"}
+ # Nb this tests works also in utf8 space because \x80 is
+ # translated into a 2 or more bytelength but whose first byte has
+ # the high bit set.
} 0
-test string-3.2 {string equal} {
- string eq abcde ABCDE
+test string-3.21.$noComp {string equal -nocase} {
+ run {string equal -nocase abcde Abdef}
} 0
-test string-3.3 {string equal} {
- string equal abcde abcde
+test string-3.22.$noComp {string equal, -nocase unicode} {
+ run {string equal -nocase \334 \u00dc}
} 1
-test string-3.4 {string equal -nocase} {
- string equal -nocase \334\334\334\334\374\374\374\374 \334\334\334\334\334\334\334\334
+test string-3.23.$noComp {string equal, -nocase unicode} {
+ run {string equal -nocase \334\334\334\374\u00fc \334\334\334\334\334}
} 1
-test string-3.5 {string equal -nocase} {
- string equal -nocase abcde abdef
+test string-3.24.$noComp {string equal -nocase with length} {
+ run {string equal -length 2 -nocase abcde Abxyz}
+} 1
+test string-3.25.$noComp {string equal -nocase with length} {
+ run {string equal -nocase -length 3 abcde Abxyz}
+} 0
+test string-3.26.$noComp {string equal -nocase with length <= 0} {
+ run {string equal -nocase -length -1 abcde AbCdEf}
+} 0
+test string-3.27.$noComp {string equal -nocase with excessive length} {
+ run {string equal -nocase -length 50 AbCdEf abcde}
+} 0
+test string-3.28.$noComp {string equal -len unicode} {
+ # These are strings that are 6 BYTELENGTH long, but the length
+ # shouldn't make a different because there are actually 3 CHARS long
+ run {string equal -len 5 \334\334\334 \334\334\374}
} 0
-test string-3.6 {string equal -nocase} {
- string eq -nocase abcde ABCDE
+test string-3.29.$noComp {string equal -nocase with special index} {
+ list [catch {run {string equal -nocase -length end-3 Abcde abxyz}} msg] $msg
+} {1 {expected integer but got "end-3"}}
+test string-3.30.$noComp {string equal, null strings} {
+ run {string equal "" ""}
} 1
-test string-3.7 {string equal -nocase} {
- string equal -nocase abcde abcde
+test string-3.31.$noComp {string equal, null strings} {
+ run {string equal "" foo}
+} 0
+test string-3.32.$noComp {string equal, null strings} {
+ run {string equal foo ""}
+} 0
+test string-3.33.$noComp {string equal -nocase, null strings} {
+ run {string equal -nocase "" ""}
} 1
-test string-3.8 {string equal with length, unequal strings} {
- string equal -length 2 abc abde
+test string-3.34.$noComp {string equal -nocase, null strings} {
+ run {string equal -nocase "" foo}
+} 0
+test string-3.35.$noComp {string equal -nocase, null strings} {
+ run {string equal -nocase foo ""}
+} 0
+test string-3.36.$noComp {string equal with NUL character vs. other ASCII} {
+ # Be careful here, since UTF-8 rep comparison with memcmp() of
+ # these puts chars in the wrong order
+ run {string equal \x00 \x01}
+} 0
+test string-3.37.$noComp {string equal, high bit} {
+ run {string equal "a\x80" "a@"}
+} 0
+test string-3.38.$noComp {string equal, high bit} {
+ run {string equal "a\x00" "a\x01"}
+} 0
+test string-3.39.$noComp {string equal, high bit} {
+ run {string equal "a\x00\x00" "a\x00\x01"}
+} 0
+test string-3.40.$noComp {string equal, binary equal} {
+ run {string equal [binary format a100 0] [binary format a100 0]}
} 1
+test string-3.41.$noComp {string equal, binary neq} {
+ run {string equal [binary format a100a 0 1] [binary format a100a 0 0]}
+} 0
+test string-3.42.$noComp {string equal, binary neq inequal length} {
+ run {string equal [binary format a20a 0 1] [binary format a100a 0 0]}
+} 0
+
-test string-4.1 {string first, too few args} {
- list [catch {string first a} msg] $msg
+test string-4.1.$noComp {string first, too few args} {
+ list [catch {run {string first a}} msg] $msg
} {1 {wrong # args: should be "string first needleString haystackString ?startIndex?"}}
-test string-4.2 {string first, bad args} {
- list [catch {string first a b c} msg] $msg
+test string-4.2.$noComp {string first, bad args} {
+ list [catch {run {string first a b c}} msg] $msg
} {1 {bad index "c": must be integer?[+-]integer? or end?[+-]integer?}}
-test string-4.3 {string first, too many args} {
- list [catch {string first a b 5 d} msg] $msg
+test string-4.3.$noComp {string first, too many args} {
+ list [catch {run {string first a b 5 d}} msg] $msg
} {1 {wrong # args: should be "string first needleString haystackString ?startIndex?"}}
-test string-4.4 {string first} {
- string first bq abcdefgbcefgbqrs
+test string-4.4.$noComp {string first} {
+ run {string first bq abcdefgbcefgbqrs}
} 12
-test string-4.5 {string first} {
- string fir bcd abcdefgbcefgbqrs
+test string-4.5.$noComp {string first} {
+ run {string fir bcd abcdefgbcefgbqrs}
} 1
-test string-4.6 {string first} {
- string f b abcdefgbcefgbqrs
+test string-4.6.$noComp {string first} {
+ run {string f b abcdefgbcefgbqrs}
} 1
-test string-4.7 {string first} {
- string first xxx x123xx345xxx789xxx012
+test string-4.7.$noComp {string first} {
+ run {string first xxx x123xx345xxx789xxx012}
} 9
-test string-4.8 {string first} {
- string first "" x123xx345xxx789xxx012
+test string-4.8.$noComp {string first} {
+ run {string first "" x123xx345xxx789xxx012}
} -1
-test string-4.9 {string first, unicode} {
- string first x abc\u7266x
+test string-4.9.$noComp {string first, unicode} {
+ run {string first x abc\u7266x}
} 4
-test string-4.10 {string first, unicode} {
- string first \u7266 abc\u7266x
+test string-4.10.$noComp {string first, unicode} {
+ run {string first \u7266 abc\u7266x}
} 3
-test string-4.11 {string first, start index} {
- string first \u7266 abc\u7266x 3
+test string-4.11.$noComp {string first, start index} {
+ run {string first \u7266 abc\u7266x 3}
} 3
-test string-4.12 {string first, start index} {
- string first \u7266 abc\u7266x 4
+test string-4.12.$noComp {string first, start index} {
+ run {string first \u7266 abc\u7266x 4}
} -1
-test string-4.13 {string first, start index} {
- string first \u7266 abc\u7266x end-2
+test string-4.13.$noComp {string first, start index} {
+ run {string first \u7266 abc\u7266x end-2}
} 3
-test string-4.14 {string first, negative start index} {
- string first b abc -1
+test string-4.14.$noComp {string first, negative start index} {
+ run {string first b abc -1}
} 1
-test string-4.15 {string first, ability to two-byte encoded utf-8 chars} {
+test string-4.15.$noComp {string first, ability to two-byte encoded utf-8 chars} {
# Test for a bug in Tcl 8.3 where test for all-single-byte-encoded
# strings was incorrect, leading to an index returned by [string first]
# which pointed past the end of the string.
set uchar \u057e ;# character with two-byte encoding in utf-8
- string first % %#$uchar$uchar#$uchar$uchar#% 3
+ run {string first % %#$uchar$uchar#$uchar$uchar#% 3}
} 8
-test string-4.16 {string first, normal string vs pure unicode string} {
+test string-4.16.$noComp {string first, normal string vs pure unicode string} {
set s hello
regexp ll $s m
# Representation checks are canaries
- list [representationpoke $s] [representationpoke $m] \
- [string first $m $s]
+ run {list [representationpoke $s] [representationpoke $m] \
+ [string first $m $s]}
} {{string 1} {string 0} 2}
-test string-5.1 {string index} {
- list [catch {string index} msg] $msg
+test string-5.1.$noComp {string index} {
+ list [catch {run {string index}} msg] $msg
} {1 {wrong # args: should be "string index string charIndex"}}
-test string-5.2 {string index} {
- list [catch {string index a b c} msg] $msg
+test string-5.2.$noComp {string index} {
+ list [catch {run {string index a b c}} msg] $msg
} {1 {wrong # args: should be "string index string charIndex"}}
-test string-5.3 {string index} {
- string index abcde 0
+test string-5.3.$noComp {string index} {
+ run {string index abcde 0}
} a
-test string-5.4 {string index} {
- string in abcde 4
+test string-5.4.$noComp {string index} {
+ run {string ind abcde 4}
} e
-test string-5.5 {string index} {
- string index abcde 5
+test string-5.5.$noComp {string index} {
+ run {string index abcde 5}
} {}
-test string-5.6 {string index} {
- list [catch {string index abcde -10} msg] $msg
+test string-5.6.$noComp {string index} {
+ list [catch {run {string index abcde -10}} msg] $msg
} {0 {}}
-test string-5.7 {string index} {
- list [catch {string index a xyz} msg] $msg
+test string-5.7.$noComp {string index} {
+ list [catch {run {string index a xyz}} msg] $msg
} {1 {bad index "xyz": must be integer?[+-]integer? or end?[+-]integer?}}
-test string-5.8 {string index} {
- string index abc end
+test string-5.8.$noComp {string index} {
+ run {string index abc end}
} c
-test string-5.9 {string index} {
- string index abc end-1
+test string-5.9.$noComp {string index} {
+ run {string index abc end-1}
} b
-test string-5.10 {string index, unicode} {
- string index abc\u7266d 4
+test string-5.10.$noComp {string index, unicode} {
+ run {string index abc\u7266d 4}
} d
-test string-5.11 {string index, unicode} {
- string index abc\u7266d 3
+test string-5.11.$noComp {string index, unicode} {
+ run {string index abc\u7266d 3}
} \u7266
-test string-5.12 {string index, unicode over char length, under byte length} {
- string index \334\374\334\374 6
+test string-5.12.$noComp {string index, unicode over char length, under byte length} {
+ run {string index \334\374\334\374 6}
} {}
-test string-5.13 {string index, bytearray object} {
- string index [binary format a5 fuz] 0
+test string-5.13.$noComp {string index, bytearray object} {
+ run {string index [binary format a5 fuz] 0}
} f
-test string-5.14 {string index, bytearray object} {
- string index [binary format I* {0x50515253 0x52}] 3
+test string-5.14.$noComp {string index, bytearray object} {
+ run {string index [binary format I* {0x50515253 0x52}] 3}
} S
-test string-5.15 {string index, bytearray object} {
+test string-5.15.$noComp {string index, bytearray object} {
set b [binary format I* {0x50515253 0x52}]
- set i1 [string index $b end-6]
- set i2 [string index $b 1]
- string compare $i1 $i2
+ set i1 [run {string index $b end-6}]
+ set i2 [run {string index $b 1}]
+ run {string compare $i1 $i2}
} 0
-test string-5.16 {string index, bytearray object with string obj shimmering} {
+test string-5.16.$noComp {string index, bytearray object with string obj shimmering} {
set str "0123456789\x00 abcdedfghi"
binary scan $str H* dump
- string compare [string index $str 10] \x00
+ run {string compare [run {string index $str 10}] \x00}
} 0
-test string-5.17 {string index, bad integer} -body {
- list [catch {string index "abc" 0o8} msg] $msg
+test string-5.17.$noComp {string index, bad integer} -body {
+ list [catch {run {string index "abc" 0o8}} msg] $msg
} -match glob -result {1 {*invalid octal number*}}
-test string-5.18 {string index, bad integer} -body {
- list [catch {string index "abc" end-0o0289} msg] $msg
+test string-5.18.$noComp {string index, bad integer} -body {
+ list [catch {run {string index "abc" end-0o0289}} msg] $msg
} -match glob -result {1 {*invalid octal number*}}
-test string-5.19 {string index, bytearray object out of bounds} {
- string index [binary format I* {0x50515253 0x52}] -1
+test string-5.19.$noComp {string index, bytearray object out of bounds} {
+ run {string index [binary format I* {0x50515253 0x52}] -1}
} {}
-test string-5.20 {string index, bytearray object out of bounds} {
- string index [binary format I* {0x50515253 0x52}] 20
+test string-5.20.$noComp {string index, bytearray object out of bounds} {
+ run {string index [binary format I* {0x50515253 0x52}] 20}
} {}
+test string-5.21.$noComp {string index, surrogates, bug [11ae2be95dac9417]} tip389 {
+ run {list [string index a\U100000b 1] [string index a\U100000b 2] [string index a\U100000b 3]}
+} [list \U100000 {} b]
proc largest_int {} {
@@ -314,871 +501,871 @@ proc largest_int {} {
return [expr {$int-1}]
}
-test string-6.1 {string is, too few args} {
- list [catch {string is} msg] $msg
+test string-6.1.$noComp {string is, too few args} {
+ list [catch {run {string is}} msg] $msg
} {1 {wrong # args: should be "string is class ?-strict? ?-failindex var? str"}}
-test string-6.2 {string is, too few args} {
- list [catch {string is alpha} msg] $msg
+test string-6.2.$noComp {string is, too few args} {
+ list [catch {run {string is alpha}} msg] $msg
} {1 {wrong # args: should be "string is class ?-strict? ?-failindex var? str"}}
-test string-6.3 {string is, bad args} {
- list [catch {string is alpha -failin str} msg] $msg
+test string-6.3.$noComp {string is, bad args} {
+ list [catch {run {string is alpha -failin str}} msg] $msg
} {1 {wrong # args: should be "string is alpha ?-strict? ?-failindex var? str"}}
-test string-6.4 {string is, too many args} {
- list [catch {string is alpha -failin var -strict str more} msg] $msg
+test string-6.4.$noComp {string is, too many args} {
+ list [catch {run {string is alpha -failin var -strict str more}} msg] $msg
} {1 {wrong # args: should be "string is class ?-strict? ?-failindex var? str"}}
-test string-6.5 {string is, class check} {
- list [catch {string is bogus str} msg] $msg
+test string-6.5.$noComp {string is, class check} {
+ list [catch {run {string is bogus str}} msg] $msg
} {1 {bad class "bogus": must be alnum, alpha, ascii, control, boolean, digit, double, entier, false, graph, integer, list, lower, print, punct, space, true, upper, wideinteger, wordchar, or xdigit}}
-test string-6.6 {string is, ambiguous class} {
- list [catch {string is al str} msg] $msg
+test string-6.6.$noComp {string is, ambiguous class} {
+ list [catch {run {string is al str}} msg] $msg
} {1 {ambiguous class "al": must be alnum, alpha, ascii, control, boolean, digit, double, entier, false, graph, integer, list, lower, print, punct, space, true, upper, wideinteger, wordchar, or xdigit}}
-test string-6.7 {string is alpha, all ok} {
- string is alpha -strict -failindex var abc
+test string-6.7.$noComp {string is alpha, all ok} {
+ run {string is alpha -strict -failindex var abc}
} 1
-test string-6.8 {string is, error in var} {
- list [string is alpha -failindex var abc5def] $var
+test string-6.8.$noComp {string is, error in var} {
+ list [run {string is alpha -failindex var abc5def}] $var
} {0 3}
-test string-6.9 {string is, var shouldn't get set} {
+test string-6.9.$noComp {string is, var shouldn't get set} {
catch {unset var}
- list [catch {string is alpha -failindex var abc; set var} msg] $msg
+ list [catch {run {string is alpha -failindex var abc; set var}} msg] $msg
} {1 {can't read "var": no such variable}}
-test string-6.10 {string is, ok on empty} {
- string is alpha {}
+test string-6.10.$noComp {string is, ok on empty} {
+ run {string is alpha {}}
} 1
-test string-6.11 {string is, -strict check against empty} {
- string is alpha -strict {}
+test string-6.11.$noComp {string is, -strict check against empty} {
+ run {string is alpha -strict {}}
} 0
-test string-6.12 {string is alnum, true} {
- string is alnum abc123
+test string-6.12.$noComp {string is alnum, true} {
+ run {string is alnum abc123}
} 1
-test string-6.13 {string is alnum, false} {
- list [string is alnum -failindex var abc1.23] $var
+test string-6.13.$noComp {string is alnum, false} {
+ list [run {string is alnum -failindex var abc1.23}] $var
} {0 4}
-test string-6.14 {string is alnum, unicode} "string is alnum abc\xfc" 1
-test string-6.15 {string is alpha, true} {
- string is alpha abc
+test string-6.14.$noComp {string is alnum, unicode} "run {string is alnum abc\xfc}" 1
+test string-6.15.$noComp {string is alpha, true} {
+ run {string is alpha abc}
} 1
-test string-6.16 {string is alpha, false} {
- list [string is alpha -fail var a1bcde] $var
+test string-6.16.$noComp {string is alpha, false} {
+ list [run {string is alpha -fail var a1bcde}] $var
} {0 1}
-test string-6.17 {string is alpha, unicode} {
- string is alpha abc\374
+test string-6.17.$noComp {string is alpha, unicode} {
+ run {string is alpha abc\374}
} 1
-test string-6.18 {string is ascii, true} {
- string is ascii abc\u007Fend\u0000
+test string-6.18.$noComp {string is ascii, true} {
+ run {string is ascii abc\u007Fend\u0000}
} 1
-test string-6.19 {string is ascii, false} {
- list [string is ascii -fail var abc\u0000def\u0080more] $var
+test string-6.19.$noComp {string is ascii, false} {
+ list [run {string is ascii -fail var abc\u0000def\u0080more}] $var
} {0 7}
-test string-6.20 {string is boolean, true} {
- string is boolean true
+test string-6.20.$noComp {string is boolean, true} {
+ run {string is boolean true}
} 1
-test string-6.21 {string is boolean, true} {
- string is boolean f
+test string-6.21.$noComp {string is boolean, true} {
+ run {string is boolean f}
} 1
-test string-6.22 {string is boolean, true based on type} {
- string is bool [string compare a a]
+test string-6.22.$noComp {string is boolean, true based on type} {
+ run {string is bool [run {string compare a a}]}
} 1
-test string-6.23 {string is boolean, false} {
- list [string is bool -fail var yada] $var
+test string-6.23.$noComp {string is boolean, false} {
+ list [run {string is bool -fail var yada}] $var
} {0 0}
-test string-6.24 {string is digit, true} {
- string is digit 0123456789
+test string-6.24.$noComp {string is digit, true} {
+ run {string is digit 0123456789}
} 1
-test string-6.25 {string is digit, false} {
- list [string is digit -fail var 0123\u00dc567] $var
+test string-6.25.$noComp {string is digit, false} {
+ list [run {string is digit -fail var 0123\u00dc567}] $var
} {0 4}
-test string-6.26 {string is digit, false} {
- list [string is digit -fail var +123567] $var
+test string-6.26.$noComp {string is digit, false} {
+ list [run {string is digit -fail var +123567}] $var
} {0 0}
-test string-6.27 {string is double, true} {
- string is double 1
+test string-6.27.$noComp {string is double, true} {
+ run {string is double 1}
} 1
-test string-6.28 {string is double, true} {
- string is double [expr double(1)]
+test string-6.28.$noComp {string is double, true} {
+ run {string is double [expr double(1)]}
} 1
-test string-6.29 {string is double, true} {
- string is double 1.0
+test string-6.29.$noComp {string is double, true} {
+ run {string is double 1.0}
} 1
-test string-6.30 {string is double, true} {
- string is double [string compare a a]
+test string-6.30.$noComp {string is double, true} {
+ run {string is double [run {string compare a a}]}
} 1
-test string-6.31 {string is double, true} {
- string is double " +1.0e-1 "
+test string-6.31.$noComp {string is double, true} {
+ run {string is double " +1.0e-1 "}
} 1
-test string-6.32 {string is double, true} {
- string is double "\n1.0\v"
+test string-6.32.$noComp {string is double, true} {
+ run {string is double "\n1.0\v"}
} 1
-test string-6.33 {string is double, false} {
- list [string is double -fail var 1abc] $var
+test string-6.33.$noComp {string is double, false} {
+ list [run {string is double -fail var 1abc}] $var
} {0 1}
-test string-6.34 {string is double, false} {
- list [string is double -fail var abc] $var
+test string-6.34.$noComp {string is double, false} {
+ list [run {string is double -fail var abc}] $var
} {0 0}
-test string-6.35 {string is double, false} {
- list [string is double -fail var " 1.0e4e4 "] $var
+test string-6.35.$noComp {string is double, false} {
+ list [run {string is double -fail var " 1.0e4e4 "}] $var
} {0 8}
-test string-6.36 {string is double, false} {
- list [string is double -fail var "\n"] $var
+test string-6.36.$noComp {string is double, false} {
+ list [run {string is double -fail var "\n"}] $var
} {0 0}
-test string-6.37 {string is double, false on int overflow} -setup {
+test string-6.37.$noComp {string is double, false on int overflow} -setup {
set var priorValue
} -body {
# Make it the largest int recognizable, with one more digit for overflow
# Since bignums arrived in Tcl 8.5, the sense of this test changed.
# Now integer values that exceed native limits become bignums, and
# bignums can convert to doubles without error.
- list [string is double -fail var [largest_int]0] $var
+ list [run {string is double -fail var [largest_int]0}] $var
} -result {1 priorValue}
# string-6.38 removed, underflow on input is no longer an error.
-test string-6.39 {string is double, false} {
+test string-6.39.$noComp {string is double, false} {
# This test is non-portable because IRIX thinks
# that .e1 is a valid double - this is really a bug
# on IRIX as .e1 should NOT be a valid double
#
# Portable now. Tcl 8.5 does its own double parsing.
- list [string is double -fail var .e1] $var
+ list [run {string is double -fail var .e1}] $var
} {0 0}
-test string-6.40 {string is false, true} {
- string is false false
+test string-6.40.$noComp {string is false, true} {
+ run {string is false false}
} 1
-test string-6.41 {string is false, true} {
- string is false FaLsE
+test string-6.41.$noComp {string is false, true} {
+ run {string is false FaLsE}
} 1
-test string-6.42 {string is false, true} {
- string is false N
+test string-6.42.$noComp {string is false, true} {
+ run {string is false N}
} 1
-test string-6.43 {string is false, true} {
- string is false 0
+test string-6.43.$noComp {string is false, true} {
+ run {string is false 0}
} 1
-test string-6.44 {string is false, true} {
- string is false off
+test string-6.44.$noComp {string is false, true} {
+ run {string is false off}
} 1
-test string-6.45 {string is false, false} {
- list [string is false -fail var abc] $var
+test string-6.45.$noComp {string is false, false} {
+ list [run {string is false -fail var abc}] $var
} {0 0}
-test string-6.46 {string is false, false} {
+test string-6.46.$noComp {string is false, false} {
catch {unset var}
- list [string is false -fail var Y] $var
+ list [run {string is false -fail var Y}] $var
} {0 0}
-test string-6.47 {string is false, false} {
+test string-6.47.$noComp {string is false, false} {
catch {unset var}
- list [string is false -fail var offensive] $var
+ list [run {string is false -fail var offensive}] $var
} {0 0}
-test string-6.48 {string is integer, true} {
- string is integer +1234567890
+test string-6.48.$noComp {string is integer, true} {
+ run {string is integer +1234567890}
} 1
-test string-6.49 {string is integer, true on type} {
- string is integer [expr int(50.0)]
+test string-6.49.$noComp {string is integer, true on type} {
+ run {string is integer [expr int(50.0)]}
} 1
-test string-6.50 {string is integer, true} {
- string is integer [list -10]
+test string-6.50.$noComp {string is integer, true} {
+ run {string is integer [list -10]}
} 1
-test string-6.51 {string is integer, true as hex} {
- string is integer 0xabcdef
+test string-6.51.$noComp {string is integer, true as hex} {
+ run {string is integer 0xabcdef}
} 1
-test string-6.52 {string is integer, true as octal} {
- string is integer 012345
+test string-6.52.$noComp {string is integer, true as octal} {
+ run {string is integer 012345}
} 1
-test string-6.53 {string is integer, true with whitespace} {
- string is integer " \n1234\v"
+test string-6.53.$noComp {string is integer, true with whitespace} {
+ run {string is integer " \n1234\v"}
} 1
-test string-6.54 {string is integer, false} {
- list [string is integer -fail var 123abc] $var
+test string-6.54.$noComp {string is integer, false} {
+ list [run {string is integer -fail var 123abc}] $var
} {0 3}
-test string-6.55 {string is integer, false on overflow} {
- list [string is integer -fail var +[largest_int]0] $var
+test string-6.55.$noComp {string is integer, false on overflow} {
+ list [run {string is integer -fail var +[largest_int]0}] $var
} {0 -1}
-test string-6.56 {string is integer, false} {
- list [string is integer -fail var [expr double(1)]] $var
+test string-6.56.$noComp {string is integer, false} {
+ list [run {string is integer -fail var [expr double(1)]}] $var
} {0 1}
-test string-6.57 {string is integer, false} {
- list [string is integer -fail var " "] $var
+test string-6.57.$noComp {string is integer, false} {
+ list [run {string is integer -fail var " "}] $var
} {0 0}
-test string-6.58 {string is integer, false on bad octal} {
- list [string is integer -fail var 0o36963] $var
+test string-6.58.$noComp {string is integer, false on bad octal} {
+ list [run {string is integer -fail var 0o36963}] $var
} {0 4}
-test string-6.58.1 {string is integer, false on bad octal} {
- list [string is integer -fail var 0o36963] $var
+test string-6.58.1.$noComp {string is integer, false on bad octal} {
+ list [run {string is integer -fail var 0o36963}] $var
} {0 4}
-test string-6.59 {string is integer, false on bad hex} {
- list [string is integer -fail var 0X345XYZ] $var
+test string-6.59.$noComp {string is integer, false on bad hex} {
+ list [run {string is integer -fail var 0X345XYZ}] $var
} {0 5}
-test string-6.60 {string is lower, true} {
- string is lower abc
+test string-6.60.$noComp {string is lower, true} {
+ run {string is lower abc}
} 1
-test string-6.61 {string is lower, unicode true} {
- string is lower abc\u00fcue
+test string-6.61.$noComp {string is lower, unicode true} {
+ run {string is lower abc\u00fcue}
} 1
-test string-6.62 {string is lower, false} {
- list [string is lower -fail var aBc] $var
+test string-6.62.$noComp {string is lower, false} {
+ list [run {string is lower -fail var aBc}] $var
} {0 1}
-test string-6.63 {string is lower, false} {
- list [string is lower -fail var abc1] $var
+test string-6.63.$noComp {string is lower, false} {
+ list [run {string is lower -fail var abc1}] $var
} {0 3}
-test string-6.64 {string is lower, unicode false} {
- list [string is lower -fail var ab\u00dcUE] $var
+test string-6.64.$noComp {string is lower, unicode false} {
+ list [run {string is lower -fail var ab\u00dcUE}] $var
} {0 2}
-test string-6.65 {string is space, true} {
- string is space " \t\n\v\f"
+test string-6.65.$noComp {string is space, true} {
+ run {string is space " \t\n\v\f"}
} 1
-test string-6.66 {string is space, false} {
- list [string is space -fail var " \t\n\v1\f"] $var
+test string-6.66.$noComp {string is space, false} {
+ list [run {string is space -fail var " \t\n\v1\f"}] $var
} {0 4}
-test string-6.67 {string is true, true} {
- string is true true
+test string-6.67.$noComp {string is true, true} {
+ run {string is true true}
} 1
-test string-6.68 {string is true, true} {
- string is true TrU
+test string-6.68.$noComp {string is true, true} {
+ run {string is true TrU}
} 1
-test string-6.69 {string is true, true} {
- string is true ye
+test string-6.69.$noComp {string is true, true} {
+ run {string is true ye}
} 1
-test string-6.70 {string is true, true} {
- string is true 1
+test string-6.70.$noComp {string is true, true} {
+ run {string is true 1}
} 1
-test string-6.71 {string is true, true} {
- string is true on
+test string-6.71.$noComp {string is true, true} {
+ run {string is true on}
} 1
-test string-6.72 {string is true, false} {
- list [string is true -fail var onto] $var
+test string-6.72.$noComp {string is true, false} {
+ list [run {string is true -fail var onto}] $var
} {0 0}
-test string-6.73 {string is true, false} {
+test string-6.73.$noComp {string is true, false} {
catch {unset var}
- list [string is true -fail var 25] $var
+ list [run {string is true -fail var 25}] $var
} {0 0}
-test string-6.74 {string is true, false} {
+test string-6.74.$noComp {string is true, false} {
catch {unset var}
- list [string is true -fail var no] $var
+ list [run {string is true -fail var no}] $var
} {0 0}
-test string-6.75 {string is upper, true} {
- string is upper ABC
+test string-6.75.$noComp {string is upper, true} {
+ run {string is upper ABC}
} 1
-test string-6.76 {string is upper, unicode true} {
- string is upper ABC\u00dcUE
+test string-6.76.$noComp {string is upper, unicode true} {
+ run {string is upper ABC\u00dcUE}
} 1
-test string-6.77 {string is upper, false} {
- list [string is upper -fail var AbC] $var
+test string-6.77.$noComp {string is upper, false} {
+ list [run {string is upper -fail var AbC}] $var
} {0 1}
-test string-6.78 {string is upper, false} {
- list [string is upper -fail var AB2C] $var
+test string-6.78.$noComp {string is upper, false} {
+ list [run {string is upper -fail var AB2C}] $var
} {0 2}
-test string-6.79 {string is upper, unicode false} {
- list [string is upper -fail var ABC\u00fcue] $var
+test string-6.79.$noComp {string is upper, unicode false} {
+ list [run {string is upper -fail var ABC\u00fcue}] $var
} {0 3}
-test string-6.80 {string is wordchar, true} {
- string is wordchar abc_123
+test string-6.80.$noComp {string is wordchar, true} {
+ run {string is wordchar abc_123}
} 1
-test string-6.81 {string is wordchar, unicode true} {
- string is wordchar abc\u00fcab\u00dcAB\u5001
+test string-6.81.$noComp {string is wordchar, unicode true} {
+ run {string is wordchar abc\u00fcab\u00dcAB\u5001}
} 1
-test string-6.82 {string is wordchar, false} {
- list [string is wordchar -fail var abcd.ef] $var
+test string-6.82.$noComp {string is wordchar, false} {
+ list [run {string is wordchar -fail var abcd.ef}] $var
} {0 4}
-test string-6.83 {string is wordchar, unicode false} {
- list [string is wordchar -fail var abc\u0080def] $var
+test string-6.83.$noComp {string is wordchar, unicode false} {
+ list [run {string is wordchar -fail var abc\u0080def}] $var
} {0 3}
-test string-6.84 {string is control} {
+test string-6.84.$noComp {string is control} {
## Control chars are in the ranges
## 00..1F && 7F..9F
- list [string is control -fail var \x00\x01\x10\x1F\x7F\x80\x9F\x60] $var
+ list [run {string is control -fail var \x00\x01\x10\x1F\x7F\x80\x9F\x60}] $var
} {0 7}
-test string-6.85 {string is control} {
- string is control \u0100
+test string-6.85.$noComp {string is control} {
+ run {string is control \u0100}
} 0
-test string-6.86 {string is graph} {
+test string-6.86.$noComp {string is graph} {
## graph is any print char, except space
- list [string is gra -fail var "0123abc!@#\$\u0100\UE0100\UE01EF "] $var
+ list [run {string is gra -fail var "0123abc!@#\$\u0100\UE0100\UE01EF "}] $var
} {0 14}
-test string-6.87 {string is print} {
+test string-6.87.$noComp {string is print} {
## basically any printable char
- list [string is print -fail var "0123abc!@#\$\u0100 \UE0100\UE01EF\u0010"] $var
+ list [run {string is print -fail var "0123abc!@#\$\u0100 \UE0100\UE01EF\u0010"}] $var
} {0 15}
-test string-6.88 {string is punct} {
+test string-6.88.$noComp {string is punct} {
## any graph char that isn't alnum
- list [string is punct -fail var "_!@#\u00beq0"] $var
+ list [run {string is punct -fail var "_!@#\u00beq0"}] $var
} {0 4}
-test string-6.89 {string is xdigit} {
- list [string is xdigit -fail var 0123456789\u0061bcdefABCDEFg] $var
+test string-6.89.$noComp {string is xdigit} {
+ list [run {string is xdigit -fail var 0123456789\u0061bcdefABCDEFg}] $var
} {0 22}
-test string-6.90 {string is integer, bad integers} {
+test string-6.90.$noComp {string is integer, bad integers} {
# SF bug #634856
set result ""
set numbers [list 1 +1 ++1 +-1 -+1 -1 --1 "- +1"]
foreach num $numbers {
- lappend result [string is int -strict $num]
+ lappend result [run {string is int -strict $num}]
}
return $result
} {1 1 0 0 0 1 0 0}
-test string-6.91 {string is double, bad doubles} {
+test string-6.91.$noComp {string is double, bad doubles} {
set result ""
set numbers [list 1.0 +1.0 ++1.0 +-1.0 -+1.0 -1.0 --1.0 "- +1.0"]
foreach num $numbers {
- lappend result [string is double -strict $num]
+ lappend result [run {string is double -strict $num}]
}
return $result
} {1 1 0 0 0 1 0 0}
-test string-6.92 {string is integer, 32-bit overflow} {
+test string-6.92.$noComp {string is integer, 32-bit overflow} {
# Bug 718878
set x 0x100000000
- list [string is integer -failindex var $x] $var
+ list [run {string is integer -failindex var $x}] $var
} {0 -1}
-test string-6.93 {string is integer, 32-bit overflow} {
+test string-6.93.$noComp {string is integer, 32-bit overflow} {
# Bug 718878
set x 0x100000000
append x ""
- list [string is integer -failindex var $x] $var
+ list [run {string is integer -failindex var $x}] $var
} {0 -1}
-test string-6.94 {string is integer, 32-bit overflow} {
+test string-6.94.$noComp {string is integer, 32-bit overflow} {
# Bug 718878
set x 0x100000000
- list [string is integer -failindex var [expr {$x}]] $var
+ list [run {string is integer -failindex var [expr {$x}]}] $var
} {0 -1}
-test string-6.95 {string is wideinteger, true} {
- string is wideinteger +1234567890
+test string-6.95.$noComp {string is wideinteger, true} {
+ run {string is wideinteger +1234567890}
} 1
-test string-6.96 {string is wideinteger, true on type} {
- string is wideinteger [expr wide(50.0)]
+test string-6.96.$noComp {string is wideinteger, true on type} {
+ run {string is wideinteger [expr wide(50.0)]}
} 1
-test string-6.97 {string is wideinteger, true} {
- string is wideinteger [list -10]
+test string-6.97.$noComp {string is wideinteger, true} {
+ run {string is wideinteger [list -10]}
} 1
-test string-6.98 {string is wideinteger, true as hex} {
- string is wideinteger 0xabcdef
+test string-6.98.$noComp {string is wideinteger, true as hex} {
+ run {string is wideinteger 0xabcdef}
} 1
-test string-6.99 {string is wideinteger, true as octal} {
- string is wideinteger 0123456
+test string-6.99.$noComp {string is wideinteger, true as octal} {
+ run {string is wideinteger 0123456}
} 1
-test string-6.100 {string is wideinteger, true with whitespace} {
- string is wideinteger " \n1234\v"
+test string-6.100.$noComp {string is wideinteger, true with whitespace} {
+ run {string is wideinteger " \n1234\v"}
} 1
-test string-6.101 {string is wideinteger, false} {
- list [string is wideinteger -fail var 123abc] $var
+test string-6.101.$noComp {string is wideinteger, false} {
+ list [run {string is wideinteger -fail var 123abc}] $var
} {0 3}
-test string-6.102 {string is wideinteger, false on overflow} {
- list [string is wideinteger -fail var +[largest_int]0] $var
+test string-6.102.$noComp {string is wideinteger, false on overflow} {
+ list [run {string is wideinteger -fail var +[largest_int]0}] $var
} {0 -1}
-test string-6.103 {string is wideinteger, false} {
- list [string is wideinteger -fail var [expr double(1)]] $var
+test string-6.103.$noComp {string is wideinteger, false} {
+ list [run {string is wideinteger -fail var [expr double(1)]}] $var
} {0 1}
-test string-6.104 {string is wideinteger, false} {
- list [string is wideinteger -fail var " "] $var
+test string-6.104.$noComp {string is wideinteger, false} {
+ list [run {string is wideinteger -fail var " "}] $var
} {0 0}
-test string-6.105 {string is wideinteger, false on bad octal} {
- list [string is wideinteger -fail var 0o36963] $var
+test string-6.105.$noComp {string is wideinteger, false on bad octal} {
+ list [run {string is wideinteger -fail var 0o36963}] $var
} {0 4}
-test string-6.105.1 {string is wideinteger, false on bad octal} {
- list [string is wideinteger -fail var 0o36963] $var
+test string-6.105.1.$noComp {string is wideinteger, false on bad octal} {
+ list [run {string is wideinteger -fail var 0o36963}] $var
} {0 4}
-test string-6.106 {string is wideinteger, false on bad hex} {
- list [string is wideinteger -fail var 0X345XYZ] $var
+test string-6.106.$noComp {string is wideinteger, false on bad hex} {
+ list [run {string is wideinteger -fail var 0X345XYZ}] $var
} {0 5}
-test string-6.107 {string is integer, bad integers} {
+test string-6.107.$noComp {string is integer, bad integers} {
# SF bug #634856
set result ""
set numbers [list 1 +1 ++1 +-1 -+1 -1 --1 "- +1"]
foreach num $numbers {
- lappend result [string is wideinteger -strict $num]
+ lappend result [run {string is wideinteger -strict $num}]
}
return $result
} {1 1 0 0 0 1 0 0}
-test string-6.108 {string is double, Bug 1382287} {
+test string-6.108.$noComp {string is double, Bug 1382287} {
set x 2turtledoves
- string is double $x
- string is double $x
+ run {string is double $x}
+ run {string is double $x}
} 0
-test string-6.109 {string is double, Bug 1360532} {
- string is double 1\u00a0
+test string-6.109.$noComp {string is double, Bug 1360532} {
+ run {string is double 1\u00a0}
} 0
-test string-6.110 {string is entier, true} {
- string is entier +1234567890
+test string-6.110.$noComp {string is entier, true} {
+ run {string is entier +1234567890}
} 1
-test string-6.111 {string is entier, true on type} {
- string is entier [expr wide(50.0)]
+test string-6.111.$noComp {string is entier, true on type} {
+ run {string is entier [expr wide(50.0)]}
} 1
-test string-6.112 {string is entier, true} {
- string is entier [list -10]
+test string-6.112.$noComp {string is entier, true} {
+ run {string is entier [list -10]}
} 1
-test string-6.113 {string is entier, true as hex} {
- string is entier 0xabcdef
+test string-6.113.$noComp {string is entier, true as hex} {
+ run {string is entier 0xabcdef}
} 1
-test string-6.114 {string is entier, true as octal} {
- string is entier 0123456
+test string-6.114.$noComp {string is entier, true as octal} {
+ run {string is entier 0123456}
} 1
-test string-6.115 {string is entier, true with whitespace} {
- string is entier " \n1234\v"
+test string-6.115.$noComp {string is entier, true with whitespace} {
+ run {string is entier " \n1234\v"}
} 1
-test string-6.116 {string is entier, false} {
- list [string is entier -fail var 123abc] $var
+test string-6.116.$noComp {string is entier, false} {
+ list [run {string is entier -fail var 123abc}] $var
} {0 3}
-test string-6.117 {string is entier, false} {
- list [string is entier -fail var 123123123123123123123123123123123123123123123123123123123123123123123123123123123123abc] $var
+test string-6.117.$noComp {string is entier, false} {
+ list [run {string is entier -fail var 123123123123123123123123123123123123123123123123123123123123123123123123123123123123abc}] $var
} {0 84}
-test string-6.118 {string is entier, false} {
- list [string is entier -fail var [expr double(1)]] $var
+test string-6.118.$noComp {string is entier, false} {
+ list [run {string is entier -fail var [expr double(1)]}] $var
} {0 1}
-test string-6.119 {string is entier, false} {
- list [string is entier -fail var " "] $var
+test string-6.119.$noComp {string is entier, false} {
+ list [run {string is entier -fail var " "}] $var
} {0 0}
-test string-6.120 {string is entier, false on bad octal} {
- list [string is entier -fail var 0o36963] $var
+test string-6.120.$noComp {string is entier, false on bad octal} {
+ list [run {string is entier -fail var 0o36963}] $var
} {0 4}
-test string-6.121.1 {string is entier, false on bad octal} {
- list [string is entier -fail var 0o36963] $var
+test string-6.121.1.$noComp {string is entier, false on bad octal} {
+ list [run {string is entier -fail var 0o36963}] $var
} {0 4}
-test string-6.122 {string is entier, false on bad hex} {
- list [string is entier -fail var 0X345XYZ] $var
+test string-6.122.$noComp {string is entier, false on bad hex} {
+ list [run {string is entier -fail var 0X345XYZ}] $var
} {0 5}
-test string-6.123 {string is entier, bad integers} {
+test string-6.123.$noComp {string is entier, bad integers} {
# SF bug #634856
set result ""
set numbers [list 1 +1 ++1 +-1 -+1 -1 --1 "- +1"]
foreach num $numbers {
- lappend result [string is entier -strict $num]
+ lappend result [run {string is entier -strict $num}]
}
return $result
} {1 1 0 0 0 1 0 0}
-test string-6.124 {string is entier, true} {
- string is entier +1234567890123456789012345678901234567890
+test string-6.124.$noComp {string is entier, true} {
+ run {string is entier +1234567890123456789012345678901234567890}
} 1
-test string-6.125 {string is entier, true} {
- string is entier [list -10000000000000000000000000000000000000000000000000000000000000000000000000000000000000]
+test string-6.125.$noComp {string is entier, true} {
+ run {string is entier [list -10000000000000000000000000000000000000000000000000000000000000000000000000000000000000]}
} 1
-test string-6.126 {string is entier, true as hex} {
- string is entier 0xabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdef
+test string-6.126.$noComp {string is entier, true as hex} {
+ run {string is entier 0xabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdef}
} 1
-test string-6.127 {string is entier, true as octal} {
- string is entier 0123456112341234561234565623456123456123456123456123456123456123456123456123456123456
+test string-6.127.$noComp {string is entier, true as octal} {
+ run {string is entier 0123456112341234561234565623456123456123456123456123456123456123456123456123456123456}
} 1
-test string-6.128 {string is entier, true with whitespace} {
- string is entier " \n12340000000000000000000000000000000000000000000000000000000000000000000000000000000000000\v"
+test string-6.128.$noComp {string is entier, true with whitespace} {
+ run {string is entier " \n12340000000000000000000000000000000000000000000000000000000000000000000000000000000000000\v"}
} 1
-test string-6.129 {string is entier, false on bad octal} {
- list [string is entier -fail var 0o1234561123412345612345656234561234561234561234561234561234561234561234561234561234536963] $var
+test string-6.129.$noComp {string is entier, false on bad octal} {
+ list [run {string is entier -fail var 0o1234561123412345612345656234561234561234561234561234561234561234561234561234561234536963}] $var
} {0 87}
-test string-6.130.1 {string is entier, false on bad octal} {
- list [string is entier -fail var 0o1234561123412345612345656234561234561234561234561234561234561234561234561234561234536963] $var
+test string-6.130.1.$noComp {string is entier, false on bad octal} {
+ list [run {string is entier -fail var 0o1234561123412345612345656234561234561234561234561234561234561234561234561234561234536963}] $var
} {0 87}
-test string-6.131 {string is entier, false on bad hex} {
- list [string is entier -fail var 0X12345611234123456123456562345612345612345612345612345612345612345612345612345612345345XYZ] $var
+test string-6.131.$noComp {string is entier, false on bad hex} {
+ list [run {string is entier -fail var 0X12345611234123456123456562345612345612345612345612345612345612345612345612345612345345XYZ}] $var
} {0 88}
catch {rename largest_int {}}
-test string-7.1 {string last, too few args} {
- list [catch {string last a} msg] $msg
+test string-7.1.$noComp {string last, too few args} {
+ list [catch {run {string last a}} msg] $msg
} {1 {wrong # args: should be "string last needleString haystackString ?lastIndex?"}}
-test string-7.2 {string last, bad args} {
- list [catch {string last a b c} msg] $msg
+test string-7.2.$noComp {string last, bad args} {
+ list [catch {run {string last a b c}} msg] $msg
} {1 {bad index "c": must be integer?[+-]integer? or end?[+-]integer?}}
-test string-7.3 {string last, too many args} {
- list [catch {string last a b c d} msg] $msg
+test string-7.3.$noComp {string last, too many args} {
+ list [catch {run {string last a b c d}} msg] $msg
} {1 {wrong # args: should be "string last needleString haystackString ?lastIndex?"}}
-test string-7.4 {string last} {
- string la xxx xxxx123xx345x678
+test string-7.4.$noComp {string last} {
+ run {string la xxx xxxx123xx345x678}
} 1
-test string-7.5 {string last} {
- string last xx xxxx123xx345x678
+test string-7.5.$noComp {string last} {
+ run {string last xx xxxx123xx345x678}
} 7
-test string-7.6 {string last} {
- string las x xxxx123xx345x678
+test string-7.6.$noComp {string last} {
+ run {string las x xxxx123xx345x678}
} 12
-test string-7.7 {string last, unicode} {
- string las x xxxx12\u7266xx345x678
+test string-7.7.$noComp {string last, unicode} {
+ run {string las x xxxx12\u7266xx345x678}
} 12
-test string-7.8 {string last, unicode} {
- string las \u7266 xxxx12\u7266xx345x678
+test string-7.8.$noComp {string last, unicode} {
+ run {string las \u7266 xxxx12\u7266xx345x678}
} 6
-test string-7.9 {string last, stop index} {
- string las \u7266 xxxx12\u7266xx345x678
+test string-7.9.$noComp {string last, stop index} {
+ run {string las \u7266 xxxx12\u7266xx345x678}
} 6
-test string-7.10 {string last, unicode} {
- string las \u7266 xxxx12\u7266xx345x678
+test string-7.10.$noComp {string last, unicode} {
+ run {string las \u7266 xxxx12\u7266xx345x678}
} 6
-test string-7.11 {string last, start index} {
- string last \u7266 abc\u7266x 3
+test string-7.11.$noComp {string last, start index} {
+ run {string last \u7266 abc\u7266x 3}
} 3
-test string-7.12 {string last, start index} {
- string last \u7266 abc\u7266x 2
+test string-7.12.$noComp {string last, start index} {
+ run {string last \u7266 abc\u7266x 2}
} -1
-test string-7.13 {string last, start index} {
+test string-7.13.$noComp {string last, start index} {
## Constrain to last 'a' should work
- string last ba badbad end-1
+ run {string last ba badbad end-1}
} 3
-test string-7.14 {string last, start index} {
+test string-7.14.$noComp {string last, start index} {
## Constrain to last 'b' should skip last 'ba'
- string last ba badbad end-2
+ run {string last ba badbad end-2}
} 0
-test string-7.15 {string last, start index} {
- string last \334a \334ad\334ad 0
+test string-7.15.$noComp {string last, start index} {
+ run {string last \334a \334ad\334ad 0}
} -1
-test string-7.16 {string last, start index} {
- string last \334a \334ad\334ad end-1
+test string-7.16.$noComp {string last, start index} {
+ run {string last \334a \334ad\334ad end-1}
} 3
-test string-8.1 {string bytelength} {
- list [catch {string bytelength} msg] $msg
+test string-8.1.$noComp {string bytelength} {
+ list [catch {run {string bytelength}} msg] $msg
} {1 {wrong # args: should be "string bytelength string"}}
-test string-8.2 {string bytelength} {
- list [catch {string bytelength a b} msg] $msg
+test string-8.2.$noComp {string bytelength} {
+ list [catch {run {string bytelength a b}} msg] $msg
} {1 {wrong # args: should be "string bytelength string"}}
-test string-8.3 {string bytelength} {
- string bytelength "\u00c7"
+test string-8.3.$noComp {string bytelength} {
+ run {string bytelength "\u00c7"}
} 2
-test string-8.4 {string bytelength} {
- string b ""
+test string-8.4.$noComp {string bytelength} {
+ run {string b ""}
} 0
-test string-9.1 {string length} {
- list [catch {string length} msg] $msg
+test string-9.1.$noComp {string length} {
+ list [catch {run {string length}} msg] $msg
} {1 {wrong # args: should be "string length string"}}
-test string-9.2 {string length} {
- list [catch {string length a b} msg] $msg
+test string-9.2.$noComp {string length} {
+ list [catch {run {string length a b}} msg] $msg
} {1 {wrong # args: should be "string length string"}}
-test string-9.3 {string length} {
- string length "a little string"
+test string-9.3.$noComp {string length} {
+ run {string length "a little string"}
} 15
-test string-9.4 {string length} {
- string le ""
+test string-9.4.$noComp {string length} {
+ run {string le ""}
} 0
-test string-9.5 {string length, unicode} {
- string le "abcd\u7266"
+test string-9.5.$noComp {string length, unicode} {
+ run {string le "abcd\u7266"}
} 5
-test string-9.6 {string length, bytearray object} {
- string length [binary format a5 foo]
+test string-9.6.$noComp {string length, bytearray object} {
+ run {string length [binary format a5 foo]}
} 5
-test string-9.7 {string length, bytearray object} {
- string length [binary format I* {0x50515253 0x52}]
+test string-9.7.$noComp {string length, bytearray object} {
+ run {string length [binary format I* {0x50515253 0x52}]}
} 8
-test string-10.1 {string map, too few args} {
- list [catch {string map} msg] $msg
+test string-10.1.$noComp {string map, too few args} {
+ list [catch {run {string map}} msg] $msg
} {1 {wrong # args: should be "string map ?-nocase? charMap string"}}
-test string-10.2 {string map, bad args} {
- list [catch {string map {a b} abba oops} msg] $msg
+test string-10.2.$noComp {string map, bad args} {
+ list [catch {run {string map {a b} abba oops}} msg] $msg
} {1 {bad option "a b": must be -nocase}}
-test string-10.3 {string map, too many args} {
- list [catch {string map -nocase {a b} str1 str2} msg] $msg
+test string-10.3.$noComp {string map, too many args} {
+ list [catch {run {string map -nocase {a b} str1 str2}} msg] $msg
} {1 {wrong # args: should be "string map ?-nocase? charMap string"}}
-test string-10.4 {string map} {
- string map {a b} abba
+test string-10.4.$noComp {string map} {
+ run {string map {a b} abba}
} {bbbb}
-test string-10.5 {string map} {
- string map {a b} a
+test string-10.5.$noComp {string map} {
+ run {string map {a b} a}
} {b}
-test string-10.6 {string map -nocase} {
- string map -nocase {a b} Abba
+test string-10.6.$noComp {string map -nocase} {
+ run {string map -nocase {a b} Abba}
} {bbbb}
-test string-10.7 {string map} {
- string map {abc 321 ab * a A} aabcabaababcab
+test string-10.7.$noComp {string map} {
+ run {string map {abc 321 ab * a A} aabcabaababcab}
} {A321*A*321*}
-test string-10.8 {string map -nocase} {
- string map -nocase {aBc 321 Ab * a A} aabcabaababcab
+test string-10.8.$noComp {string map -nocase} {
+ run {string map -nocase {aBc 321 Ab * a A} aabcabaababcab}
} {A321*A*321*}
-test string-10.9 {string map -nocase} {
- string map -no {abc 321 Ab * a A} aAbCaBaAbAbcAb
+test string-10.9.$noComp {string map -nocase} {
+ run {string map -no {abc 321 Ab * a A} aAbCaBaAbAbcAb}
} {A321*A*321*}
-test string-10.10 {string map} {
- list [catch {string map {a b c} abba} msg] $msg
+test string-10.10.$noComp {string map} {
+ list [catch {run {string map {a b c} abba}} msg] $msg
} {1 {char map list unbalanced}}
-test string-10.11 {string map, nulls} {
- string map {\x00 NULL blah \x00nix} {qwerty}
+test string-10.11.$noComp {string map, nulls} {
+ run {string map {\x00 NULL blah \x00nix} {qwerty}}
} {qwerty}
-test string-10.12 {string map, unicode} {
- string map [list \374 ue UE \334] "a\374ueUE\000EU"
+test string-10.12.$noComp {string map, unicode} {
+ run {string map [list \374 ue UE \334] "a\374ueUE\000EU"}
} aueue\334\0EU
-test string-10.13 {string map, -nocase unicode} {
- string map -nocase [list \374 ue UE \334] "a\374ueUE\000EU"
+test string-10.13.$noComp {string map, -nocase unicode} {
+ run {string map -nocase [list \374 ue UE \334] "a\374ueUE\000EU"}
} aue\334\334\0EU
-test string-10.14 {string map, -nocase null arguments} {
- string map -nocase {{} abc} foo
+test string-10.14.$noComp {string map, -nocase null arguments} {
+ run {string map -nocase {{} abc} foo}
} foo
-test string-10.15 {string map, one pair case} {
- string map -nocase {abc 32} aAbCaBaAbAbcAb
+test string-10.15.$noComp {string map, one pair case} {
+ run {string map -nocase {abc 32} aAbCaBaAbAbcAb}
} {a32aBaAb32Ab}
-test string-10.16 {string map, one pair case} {
- string map -nocase {ab 4321} aAbCaBaAbAbcAb
+test string-10.16.$noComp {string map, one pair case} {
+ run {string map -nocase {ab 4321} aAbCaBaAbAbcAb}
} {a4321C4321a43214321c4321}
-test string-10.17 {string map, one pair case} {
- string map {Ab 4321} aAbCaBaAbAbcAb
+test string-10.17.$noComp {string map, one pair case} {
+ run {string map {Ab 4321} aAbCaBaAbAbcAb}
} {a4321CaBa43214321c4321}
-test string-10.18 {string map, empty argument} {
- string map -nocase {{} abc} foo
+test string-10.18.$noComp {string map, empty argument} {
+ run {string map -nocase {{} abc} foo}
} foo
-test string-10.19 {string map, empty arguments} {
- string map -nocase {{} abc f bar {} def} foo
+test string-10.19.$noComp {string map, empty arguments} {
+ run {string map -nocase {{} abc f bar {} def} foo}
} baroo
-test string-10.20 {string map, dictionaries don't alter map ordering} {
+test string-10.20.$noComp {string map, dictionaries don't alter map ordering} {
set map {aa X a Y}
- list [string map [dict create aa X a Y] aaa] [string map $map aaa] [dict size $map] [string map $map aaa]
+ list [run {string map [dict create aa X a Y] aaa}] [run {string map $map aaa}] [dict size $map] [run {string map $map aaa}]
} {XY XY 2 XY}
-test string-10.20.1 {string map, dictionaries don't alter map ordering} {
+test string-10.20.1.$noComp {string map, dictionaries don't alter map ordering} {
set map {a X b Y a Z}
- list [string map [dict create a X b Y a Z] aaa] [string map $map aaa] [dict size $map] [string map $map aaa]
+ list [run {string map [dict create a X b Y a Z] aaa}] [run {string map $map aaa}] [dict size $map] [run {string map $map aaa}]
} {ZZZ XXX 2 XXX}
-test string-10.21 {string map, ABR checks} {
- string map {longstring foob} long
+test string-10.21.$noComp {string map, ABR checks} {
+ run {string map {longstring foob} long}
} long
-test string-10.22 {string map, ABR checks} {
- string map {long foob} long
+test string-10.22.$noComp {string map, ABR checks} {
+ run {string map {long foob} long}
} foob
-test string-10.23 {string map, ABR checks} {
- string map {lon foob} long
+test string-10.23.$noComp {string map, ABR checks} {
+ run {string map {lon foob} long}
} foobg
-test string-10.24 {string map, ABR checks} {
- string map {lon foob} longlo
+test string-10.24.$noComp {string map, ABR checks} {
+ run {string map {lon foob} longlo}
} foobglo
-test string-10.25 {string map, ABR checks} {
- string map {lon foob} longlon
+test string-10.25.$noComp {string map, ABR checks} {
+ run {string map {lon foob} longlon}
} foobgfoob
-test string-10.26 {string map, ABR checks} {
- string map {longstring foob longstring bar} long
+test string-10.26.$noComp {string map, ABR checks} {
+ run {string map {longstring foob longstring bar} long}
} long
-test string-10.27 {string map, ABR checks} {
- string map {long foob longstring bar} long
+test string-10.27.$noComp {string map, ABR checks} {
+ run {string map {long foob longstring bar} long}
} foob
-test string-10.28 {string map, ABR checks} {
- string map {lon foob longstring bar} long
+test string-10.28.$noComp {string map, ABR checks} {
+ run {string map {lon foob longstring bar} long}
} foobg
-test string-10.29 {string map, ABR checks} {
- string map {lon foob longstring bar} longlo
+test string-10.29.$noComp {string map, ABR checks} {
+ run {string map {lon foob longstring bar} longlo}
} foobglo
-test string-10.30 {string map, ABR checks} {
- string map {lon foob longstring bar} longlon
+test string-10.30.$noComp {string map, ABR checks} {
+ run {string map {lon foob longstring bar} longlon}
} foobgfoob
-test string-10.31 {string map, nasty sharing crash from [Bug 1018562]} {
+test string-10.31.$noComp {string map, nasty sharing crash from [Bug 1018562]} {
set a {a b}
- string map $a $a
+ run {string map $a $a}
} {b b}
-test string-11.1 {string match, too few args} {
- list [catch {string match a} msg] $msg
+test string-11.1.$noComp {string match, too few args} {
+ list [catch {run {string match a}} msg] $msg
} {1 {wrong # args: should be "string match ?-nocase? pattern string"}}
-test string-11.2 {string match, too many args} {
- list [catch {string match a b c d} msg] $msg
+test string-11.2.$noComp {string match, too many args} {
+ list [catch {run {string match a b c d}} msg] $msg
} {1 {wrong # args: should be "string match ?-nocase? pattern string"}}
-test string-11.3 {string match} {
- string match abc abc
+test string-11.3.$noComp {string match} {
+ run {string match abc abc}
} 1
-test string-11.4 {string match} {
- string mat abc abd
+test string-11.4.$noComp {string match} {
+ run {string mat abc abd}
} 0
-test string-11.5 {string match} {
- string match ab*c abc
+test string-11.5.$noComp {string match} {
+ run {string match ab*c abc}
} 1
-test string-11.6 {string match} {
- string match ab**c abc
+test string-11.6.$noComp {string match} {
+ run {string match ab**c abc}
} 1
-test string-11.7 {string match} {
- string match ab* abcdef
+test string-11.7.$noComp {string match} {
+ run {string match ab* abcdef}
} 1
-test string-11.8 {string match} {
- string match *c abc
+test string-11.8.$noComp {string match} {
+ run {string match *c abc}
} 1
-test string-11.9 {string match} {
- string match *3*6*9 0123456789
+test string-11.9.$noComp {string match} {
+ run {string match *3*6*9 0123456789}
} 1
-test string-11.9.1 {string match} {
- string match *3*6*89 0123456789
+test string-11.9.1.$noComp {string match} {
+ run {string match *3*6*89 0123456789}
} 1
-test string-11.9.2 {string match} {
- string match *3*456*89 0123456789
+test string-11.9.2.$noComp {string match} {
+ run {string match *3*456*89 0123456789}
} 1
-test string-11.9.3 {string match} {
- string match *3*6* 0123456789
+test string-11.9.3.$noComp {string match} {
+ run {string match *3*6* 0123456789}
} 1
-test string-11.9.4 {string match} {
- string match *3*56* 0123456789
+test string-11.9.4.$noComp {string match} {
+ run {string match *3*56* 0123456789}
} 1
-test string-11.9.5 {string match} {
- string match *3*456*** 0123456789
+test string-11.9.5.$noComp {string match} {
+ run {string match *3*456*** 0123456789}
} 1
-test string-11.9.6 {string match} {
- string match **3*456** 0123456789
+test string-11.9.6.$noComp {string match} {
+ run {string match **3*456** 0123456789}
} 1
-test string-11.9.7 {string match} {
- string match *3***456* 0123456789
+test string-11.9.7.$noComp {string match} {
+ run {string match *3***456* 0123456789}
} 1
-test string-11.9.8 {string match} {
- string match *3***\[456]* 0123456789
+test string-11.9.8.$noComp {string match} {
+ run {string match *3***\[456]* 0123456789}
} 1
-test string-11.9.9 {string match} {
- string match *3***\[4-6]* 0123456789
+test string-11.9.9.$noComp {string match} {
+ run {string match *3***\[4-6]* 0123456789}
} 1
-test string-11.9.10 {string match} {
- string match *3***\[4-6] 0123456789
+test string-11.9.10.$noComp {string match} {
+ run {string match *3***\[4-6] 0123456789}
} 0
-test string-11.9.11 {string match} {
- string match *3***\[4-6] 0123456
+test string-11.9.11.$noComp {string match} {
+ run {string match *3***\[4-6] 0123456}
} 1
-test string-11.10 {string match} {
- string match *3*6*9 01234567890
+test string-11.10.$noComp {string match} {
+ run {string match *3*6*9 01234567890}
} 0
-test string-11.10.1 {string match} {
- string match *3*6*89 01234567890
+test string-11.10.1.$noComp {string match} {
+ run {string match *3*6*89 01234567890}
} 0
-test string-11.10.2 {string match} {
- string match *3*456*89 01234567890
+test string-11.10.2.$noComp {string match} {
+ run {string match *3*456*89 01234567890}
} 0
-test string-11.10.3 {string match} {
- string match **3*456*89 01234567890
+test string-11.10.3.$noComp {string match} {
+ run {string match **3*456*89 01234567890}
} 0
-test string-11.10.4 {string match} {
- string match *3*456***89 01234567890
+test string-11.10.4.$noComp {string match} {
+ run {string match *3*456***89 01234567890}
} 0
-test string-11.11 {string match} {
- string match a?c abc
+test string-11.11.$noComp {string match} {
+ run {string match a?c abc}
} 1
-test string-11.12 {string match} {
- string match a??c abc
+test string-11.12.$noComp {string match} {
+ run {string match a??c abc}
} 0
-test string-11.13 {string match} {
- string match ?1??4???8? 0123456789
+test string-11.13.$noComp {string match} {
+ run {string match ?1??4???8? 0123456789}
} 1
-test string-11.14 {string match} {
- string match {[abc]bc} abc
+test string-11.14.$noComp {string match} {
+ run {string match {[abc]bc} abc}
} 1
-test string-11.15 {string match} {
- string match {a[abc]c} abc
+test string-11.15.$noComp {string match} {
+ run {string match {a[abc]c} abc}
} 1
-test string-11.16 {string match} {
- string match {a[xyz]c} abc
+test string-11.16.$noComp {string match} {
+ run {string match {a[xyz]c} abc}
} 0
-test string-11.17 {string match} {
- string match {12[2-7]45} 12345
+test string-11.17.$noComp {string match} {
+ run {string match {12[2-7]45} 12345}
} 1
-test string-11.18 {string match} {
- string match {12[ab2-4cd]45} 12345
+test string-11.18.$noComp {string match} {
+ run {string match {12[ab2-4cd]45} 12345}
} 1
-test string-11.19 {string match} {
- string match {12[ab2-4cd]45} 12b45
+test string-11.19.$noComp {string match} {
+ run {string match {12[ab2-4cd]45} 12b45}
} 1
-test string-11.20 {string match} {
- string match {12[ab2-4cd]45} 12d45
+test string-11.20.$noComp {string match} {
+ run {string match {12[ab2-4cd]45} 12d45}
} 1
-test string-11.21 {string match} {
- string match {12[ab2-4cd]45} 12145
+test string-11.21.$noComp {string match} {
+ run {string match {12[ab2-4cd]45} 12145}
} 0
-test string-11.22 {string match} {
- string match {12[ab2-4cd]45} 12545
+test string-11.22.$noComp {string match} {
+ run {string match {12[ab2-4cd]45} 12545}
} 0
-test string-11.23 {string match} {
- string match {a\*b} a*b
+test string-11.23.$noComp {string match} {
+ run {string match {a\*b} a*b}
} 1
-test string-11.24 {string match} {
- string match {a\*b} ab
+test string-11.24.$noComp {string match} {
+ run {string match {a\*b} ab}
} 0
-test string-11.25 {string match} {
- string match {a\*\?\[\]\\\x} "a*?\[\]\\x"
+test string-11.25.$noComp {string match} {
+ run {string match {a\*\?\[\]\\\x} "a*?\[\]\\x"}
} 1
-test string-11.26 {string match} {
- string match ** ""
+test string-11.26.$noComp {string match} {
+ run {string match ** ""}
} 1
-test string-11.27 {string match} {
- string match *. ""
+test string-11.27.$noComp {string match} {
+ run {string match *. ""}
} 0
-test string-11.28 {string match} {
- string match "" ""
+test string-11.28.$noComp {string match} {
+ run {string match "" ""}
} 1
-test string-11.29 {string match} {
- string match \[a a
+test string-11.29.$noComp {string match} {
+ run {string match \[a a}
} 1
-test string-11.30 {string match, bad args} {
- list [catch {string match - b c} msg] $msg
+test string-11.30.$noComp {string match, bad args} {
+ list [catch {run {string match - b c}} msg] $msg
} {1 {bad option "-": must be -nocase}}
-test string-11.31 {string match case} {
- string match a A
+test string-11.31.$noComp {string match case} {
+ run {string match a A}
} 0
-test string-11.32 {string match nocase} {
- string match -n a A
+test string-11.32.$noComp {string match nocase} {
+ run {string match -n a A}
} 1
-test string-11.33 {string match nocase} {
- string match -nocase a\334 A\374
+test string-11.33.$noComp {string match nocase} {
+ run {string match -nocase a\334 A\374}
} 1
-test string-11.34 {string match nocase} {
- string match -nocase a*f ABCDEf
+test string-11.34.$noComp {string match nocase} {
+ run {string match -nocase a*f ABCDEf}
} 1
-test string-11.35 {string match case, false hope} {
+test string-11.35.$noComp {string match case, false hope} {
# This is true because '_' lies between the A-Z and a-z ranges
- string match {[A-z]} _
+ run {string match {[A-z]} _}
} 1
-test string-11.36 {string match nocase range} {
+test string-11.36.$noComp {string match nocase range} {
# This is false because although '_' lies between the A-Z and a-z ranges,
# we lower case the end points before checking the ranges.
- string match -nocase {[A-z]} _
+ run {string match -nocase {[A-z]} _}
} 0
-test string-11.37 {string match nocase} {
- string match -nocase {[A-fh-Z]} g
+test string-11.37.$noComp {string match nocase} {
+ run {string match -nocase {[A-fh-Z]} g}
} 0
-test string-11.38 {string match case, reverse range} {
- string match {[A-fh-Z]} g
+test string-11.38.$noComp {string match case, reverse range} {
+ run {string match {[A-fh-Z]} g}
} 1
-test string-11.39 {string match, *\ case} {
- string match {*\abc} abc
+test string-11.39.$noComp {string match, *\ case} {
+ run {string match {*\abc} abc}
} 1
-test string-11.39.1 {string match, *\ case} {
- string match {*ab\c} abc
+test string-11.39.1.$noComp {string match, *\ case} {
+ run {string match {*ab\c} abc}
} 1
-test string-11.39.2 {string match, *\ case} {
- string match {*ab\*} ab*
+test string-11.39.2.$noComp {string match, *\ case} {
+ run {string match {*ab\*} ab*}
} 1
-test string-11.39.3 {string match, *\ case} {
- string match {*ab\*} abc
+test string-11.39.3.$noComp {string match, *\ case} {
+ run {string match {*ab\*} abc}
} 0
-test string-11.39.4 {string match, *\ case} {
- string match {*ab\\*} {ab\c}
+test string-11.39.4.$noComp {string match, *\ case} {
+ run {string match {*ab\\*} {ab\c}}
} 1
-test string-11.39.5 {string match, *\ case} {
- string match {*ab\\*} {ab\*}
+test string-11.39.5.$noComp {string match, *\ case} {
+ run {string match {*ab\\*} {ab\*}}
} 1
-test string-11.40 {string match, *special case} {
- string match {*[ab]} abc
+test string-11.40.$noComp {string match, *special case} {
+ run {string match {*[ab]} abc}
} 0
-test string-11.41 {string match, *special case} {
- string match {*[ab]*} abc
+test string-11.41.$noComp {string match, *special case} {
+ run {string match {*[ab]*} abc}
} 1
-test string-11.42 {string match, *special case} {
- string match "*\\" "\\"
+test string-11.42.$noComp {string match, *special case} {
+ run {string match "*\\" "\\"}
} 0
-test string-11.43 {string match, *special case} {
- string match "*\\\\" "\\"
+test string-11.43.$noComp {string match, *special case} {
+ run {string match "*\\\\" "\\"}
} 1
-test string-11.44 {string match, *special case} {
- string match "*???" "12345"
+test string-11.44.$noComp {string match, *special case} {
+ run {string match "*???" "12345"}
} 1
-test string-11.45 {string match, *special case} {
- string match "*???" "12"
+test string-11.45.$noComp {string match, *special case} {
+ run {string match "*???" "12"}
} 0
-test string-11.46 {string match, *special case} {
- string match "*\\*" "abc*"
+test string-11.46.$noComp {string match, *special case} {
+ run {string match "*\\*" "abc*"}
} 1
-test string-11.47 {string match, *special case} {
- string match "*\\*" "*"
+test string-11.47.$noComp {string match, *special case} {
+ run {string match "*\\*" "*"}
} 1
-test string-11.48 {string match, *special case} {
- string match "*\\*" "*abc"
+test string-11.48.$noComp {string match, *special case} {
+ run {string match "*\\*" "*abc"}
} 0
-test string-11.49 {string match, *special case} {
- string match "?\\*" "a*"
+test string-11.49.$noComp {string match, *special case} {
+ run {string match "?\\*" "a*"}
} 1
-test string-11.50 {string match, *special case} {
- string match "\\" "\\"
+test string-11.50.$noComp {string match, *special case} {
+ run {string match "\\" "\\"}
} 0
-test string-11.51 {string match; *, -nocase and UTF-8} {
- string match -nocase [binary format I 717316707] \
- [binary format I 2028036707]
+test string-11.51.$noComp {string match; *, -nocase and UTF-8} {
+ run {string match -nocase [binary format I 717316707] \
+ [binary format I 2028036707]}
} 1
-test string-11.52 {string match, null char in string} {
+test string-11.52.$noComp {string match, null char in string} {
set out ""
set ptn "*abc*"
foreach elem [list "\u0000@abc" "@abc" "\u0000@abc\u0000" "blahabcblah"] {
- lappend out [string match $ptn $elem]
+ lappend out [run {string match $ptn $elem}]
}
set out
} {1 1 1 1}
-test string-11.53 {string match, null char in pattern} {
+test string-11.53.$noComp {string match, null char in pattern} {
set out ""
foreach {ptn elem} [list \
"*\u0000abc\u0000" "\u0000abc\u0000" \
@@ -1187,658 +1374,711 @@ test string-11.53 {string match, null char in pattern} {
"*\u0000abc\u0000" "@\u0000abc\u0000ef" \
"*\u0000abc\u0000*" "@\u0000abc\u0000ef" \
] {
- lappend out [string match $ptn $elem]
+ lappend out [run {string match $ptn $elem}]
}
set out
} {1 0 1 0 1}
-test string-11.54 {string match, failure} {
+test string-11.54.$noComp {string match, failure} {
set longString ""
for {set i 0} {$i < 10} {incr i} {
append longString "abcdefghijklmnopqrstuvwxy\u0000z01234567890123"
}
- string first $longString 123
- list [string match *cba* $longString] \
- [string match *a*l*\u0000* $longString] \
- [string match *a*l*\u0000*123 $longString] \
- [string match *a*l*\u0000*123* $longString] \
- [string match *a*l*\u0000*cba* $longString] \
- [string match *===* $longString]
+ run {string first $longString 123}
+ list [run {string match *cba* $longString}] \
+ [run {string match *a*l*\u0000* $longString}] \
+ [run {string match *a*l*\u0000*123 $longString}] \
+ [run {string match *a*l*\u0000*123* $longString}] \
+ [run {string match *a*l*\u0000*cba* $longString}] \
+ [run {string match *===* $longString}]
} {0 1 1 1 0 0}
-test string-11.55 {string match, invalid binary optimization} {
+test string-11.55.$noComp {string match, invalid binary optimization} {
[format string] match \u0141 [binary format c 65]
} 0
-test string-12.1 {string range} {
- list [catch {string range} msg] $msg
+test stringComp-12.1.0.$noComp {Bug 3588366: end-offsets before start} {
+ apply {s {
+ string range $s 0 end-5
+ }} 12345
+} {}
+test string-12.1.$noComp {string range} {
+ list [catch {run {string range}} msg] $msg
} {1 {wrong # args: should be "string range string first last"}}
-test string-12.2 {string range} {
- list [catch {string range a 1} msg] $msg
+test string-12.2.$noComp {string range} {
+ list [catch {run {string range a 1}} msg] $msg
} {1 {wrong # args: should be "string range string first last"}}
-test string-12.3 {string range} {
- list [catch {string range a 1 2 3} msg] $msg
+test string-12.3.$noComp {string range} {
+ list [catch {run {string range a 1 2 3}} msg] $msg
} {1 {wrong # args: should be "string range string first last"}}
-test string-12.4 {string range} {
- string range abcdefghijklmnop 2 14
+test string-12.4.$noComp {string range} {
+ run {string range abcdefghijklmnop 2 14}
} {cdefghijklmno}
-test string-12.5 {string range, last > length} {
- string range abcdefghijklmnop 7 1000
+test string-12.5.$noComp {string range, last > length} {
+ run {string range abcdefghijklmnop 7 1000}
} {hijklmnop}
-test string-12.6 {string range} {
- string range abcdefghijklmnop 10 end
+test string-12.6.$noComp {string range} {
+ run {string range abcdefghijklmnop 10 end}
} {klmnop}
-test string-12.7 {string range, last < first} {
- string range abcdefghijklmnop 10 9
+test string-12.7.$noComp {string range, last < first} {
+ run {string range abcdefghijklmnop 10 9}
} {}
-test string-12.8 {string range, first < 0} {
- string range abcdefghijklmnop -3 2
+test string-12.8.$noComp {string range, first < 0} {
+ run {string range abcdefghijklmnop -3 2}
} {abc}
-test string-12.9 {string range} {
- string range abcdefghijklmnop -3 -2
+test string-12.9.$noComp {string range} {
+ run {string range abcdefghijklmnop -3 -2}
} {}
-test string-12.10 {string range} {
- string range abcdefghijklmnop 1000 1010
+test string-12.10.$noComp {string range} {
+ run {string range abcdefghijklmnop 1000 1010}
} {}
-test string-12.11 {string range} {
- string range abcdefghijklmnop -100 end
+test string-12.11.$noComp {string range} {
+ run {string range abcdefghijklmnop -100 end}
} {abcdefghijklmnop}
-test string-12.12 {string range} {
- list [catch {string range abc abc 1} msg] $msg
+test string-12.12.$noComp {string range} {
+ list [catch {run {string range abc abc 1}} msg] $msg
} {1 {bad index "abc": must be integer?[+-]integer? or end?[+-]integer?}}
-test string-12.13 {string range} {
- list [catch {string range abc 1 eof} msg] $msg
+test string-12.13.$noComp {string range} {
+ list [catch {run {string range abc 1 eof}} msg] $msg
} {1 {bad index "eof": must be integer?[+-]integer? or end?[+-]integer?}}
-test string-12.14 {string range} {
- string range abcdefghijklmnop end-1 end
+test string-12.14.$noComp {string range} {
+ run {string range abcdefghijklmnop end-1 end}
} {op}
-test string-12.15 {string range} {
- string range abcdefghijklmnop end 1000
+test string-12.15.$noComp {string range} {
+ run {string range abcdefghijklmnop end 1000}
} {p}
-test string-12.16 {string range} {
- string range abcdefghijklmnop end end-1
+test string-12.16.$noComp {string range} {
+ run {string range abcdefghijklmnop end end-1}
} {}
-test string-12.17 {string range, unicode} {
- string range ab\u7266cdefghijklmnop 5 5
+test string-12.17.$noComp {string range, unicode} {
+ run {string range ab\u7266cdefghijklmnop 5 5}
} e
-test string-12.18 {string range, unicode} {
- string range ab\u7266cdefghijklmnop 2 3
+test string-12.18.$noComp {string range, unicode} {
+ run {string range ab\u7266cdefghijklmnop 2 3}
} \u7266c
-test string-12.19 {string range, bytearray object} {
+test string-12.19.$noComp {string range, bytearray object} {
set b [binary format I* {0x50515253 0x52}]
- set r1 [string range $b 1 end-1]
- set r2 [string range $b 1 6]
- string equal $r1 $r2
+ set r1 [run {string range $b 1 end-1}]
+ set r2 [run {string range $b 1 6}]
+ run {string equal $r1 $r2}
} 1
-test string-12.20 {string range, out of bounds indices} {
- string range \u00ff 0 1
+test string-12.20.$noComp {string range, out of bounds indices} {
+ run {string range \u00ff 0 1}
} \u00ff
# Bug 1410553
-test string-12.21 {string range, regenerates correct reps, bug 1410553} {
+test string-12.21.$noComp {string range, regenerates correct reps, bug 1410553} {
set bytes "\x00 \x03 \x41"
set rxBuffer {}
foreach ch $bytes {
append rxBuffer $ch
if {$ch eq "\x03"} {
- string length $rxBuffer
+ run {string length $rxBuffer}
}
}
- set rxCRC [string range $rxBuffer end-1 end]
+ set rxCRC [run {string range $rxBuffer end-1 end}]
binary scan [join $bytes {}] "H*" input_hex
binary scan $rxBuffer "H*" rxBuffer_hex
binary scan $rxCRC "H*" rxCRC_hex
list $input_hex $rxBuffer_hex $rxCRC_hex
} {000341 000341 0341}
-test string-12.22 {string range, shimmering binary/index} {
+test string-12.22.$noComp {string range, shimmering binary/index} {
set s 0000000001
binary scan $s a* x
- string range $s $s end
+ run {string range $s $s end}
} 000000001
-test string-12.23 {string range, surrogates, bug [11ae2be95dac9417]} fullutf {
- list [string range a\U100000b 1 1] [string range a\U100000b 2 2] [string range a\U100000b 3 3]
+test string-12.23.$noComp {string range, surrogates, bug [11ae2be95dac9417]} tip389 {
+ run {list [string range a\U100000b 1 1] [string range a\U100000b 2 2] [string range a\U100000b 3 3]}
} [list \U100000 {} b]
-test string-13.1 {string repeat} {
- list [catch {string repeat} msg] $msg
+test string-13.1.$noComp {string repeat} {
+ list [catch {run {string repeat}} msg] $msg
} {1 {wrong # args: should be "string repeat string count"}}
-test string-13.2 {string repeat} {
- list [catch {string repeat abc 10 oops} msg] $msg
+test string-13.2.$noComp {string repeat} {
+ list [catch {run {string repeat abc 10 oops}} msg] $msg
} {1 {wrong # args: should be "string repeat string count"}}
-test string-13.3 {string repeat} {
- string repeat {} 100
+test string-13.3.$noComp {string repeat} {
+ run {string repeat {} 100}
} {}
-test string-13.4 {string repeat} {
- string repeat { } 5
+test string-13.4.$noComp {string repeat} {
+ run {string repeat { } 5}
} { }
-test string-13.5 {string repeat} {
- string repeat abc 3
+test string-13.5.$noComp {string repeat} {
+ run {string repeat abc 3}
} {abcabcabc}
-test string-13.6 {string repeat} {
- string repeat abc -1
+test string-13.6.$noComp {string repeat} {
+ run {string repeat abc -1}
} {}
-test string-13.7 {string repeat} {
- list [catch {string repeat abc end} msg] $msg
+test string-13.7.$noComp {string repeat} {
+ list [catch {run {string repeat abc end}} msg] $msg
} {1 {expected integer but got "end"}}
-test string-13.8 {string repeat} {
- string repeat {} -1000
+test string-13.8.$noComp {string repeat} {
+ run {string repeat {} -1000}
} {}
-test string-13.9 {string repeat} {
- string repeat {} 0
+test string-13.9.$noComp {string repeat} {
+ run {string repeat {} 0}
} {}
-test string-13.10 {string repeat} {
- string repeat def 0
+test string-13.10.$noComp {string repeat} {
+ run {string repeat def 0}
} {}
-test string-13.11 {string repeat} {
- string repeat def 1
+test string-13.11.$noComp {string repeat} {
+ run {string repeat def 1}
} def
-test string-13.12 {string repeat} {
- string repeat ab\u7266cd 3
+test string-13.12.$noComp {string repeat} {
+ run {string repeat ab\u7266cd 3}
} ab\u7266cdab\u7266cdab\u7266cd
-test string-13.13 {string repeat} {
- string repeat \x00 3
+test string-13.13.$noComp {string repeat} {
+ run {string repeat \x00 3}
} \x00\x00\x00
-test string-13.14 {string repeat} {
+test string-13.14.$noComp {string repeat} {
# The string range will ensure us that string repeat gets a unicode string
- string repeat [string range ab\u7266cd 2 3] 3
+ run {string repeat [run {string range ab\u7266cd 2 3}] 3}
} \u7266c\u7266c\u7266c
-test string-14.1 {string replace} {
- list [catch {string replace} msg] $msg
+test string-14.1.$noComp {string replace} {
+ list [catch {run {string replace}} msg] $msg
} {1 {wrong # args: should be "string replace string first last ?string?"}}
-test string-14.2 {string replace} {
- list [catch {string replace a 1} msg] $msg
+test string-14.2.$noComp {string replace} {
+ list [catch {run {string replace a 1}} msg] $msg
} {1 {wrong # args: should be "string replace string first last ?string?"}}
-test string-14.3 {string replace} {
- list [catch {string replace a 1 2 3 4} msg] $msg
+test string-14.3.$noComp {string replace} {
+ list [catch {run {string replace a 1 2 3 4}} msg] $msg
} {1 {wrong # args: should be "string replace string first last ?string?"}}
-test string-14.4 {string replace} {
+test string-14.4.$noComp {string replace} {
} {}
-test string-14.5 {string replace} {
- string replace abcdefghijklmnop 2 14
+test string-14.5.$noComp {string replace} {
+ run {string replace abcdefghijklmnop 2 14}
} {abp}
-test string-14.6 {string replace} {
- string replace abcdefghijklmnop 7 1000
+test string-14.6.$noComp {string replace} {
+ run {string replace abcdefghijklmnop 7 1000}
} {abcdefg}
-test string-14.7 {string replace} {
- string replace abcdefghijklmnop 10 end
+test string-14.7.$noComp {string replace} {
+ run {string replace abcdefghijklmnop 10 end}
} {abcdefghij}
-test string-14.8 {string replace} {
- string replace abcdefghijklmnop 10 9
+test string-14.8.$noComp {string replace} {
+ run {string replace abcdefghijklmnop 10 9}
} {abcdefghijklmnop}
-test string-14.9 {string replace} {
- string replace abcdefghijklmnop -3 2
+test string-14.9.$noComp {string replace} {
+ run {string replace abcdefghijklmnop -3 2}
} {defghijklmnop}
-test string-14.10 {string replace} {
- string replace abcdefghijklmnop -3 -2
+test string-14.10.$noComp {string replace} {
+ run {string replace abcdefghijklmnop -3 -2}
} {abcdefghijklmnop}
-test string-14.11 {string replace} {
- string replace abcdefghijklmnop 1000 1010
+test string-14.11.$noComp {string replace} {
+ run {string replace abcdefghijklmnop 1000 1010}
} {abcdefghijklmnop}
-test string-14.12 {string replace} {
- string replace abcdefghijklmnop -100 end
+test string-14.12.$noComp {string replace} {
+ run {string replace abcdefghijklmnop -100 end}
} {}
-test string-14.13 {string replace} {
- list [catch {string replace abc abc 1} msg] $msg
+test string-14.13.$noComp {string replace} {
+ list [catch {run {string replace abc abc 1}} msg] $msg
} {1 {bad index "abc": must be integer?[+-]integer? or end?[+-]integer?}}
-test string-14.14 {string replace} {
- list [catch {string replace abc 1 eof} msg] $msg
+test string-14.14.$noComp {string replace} {
+ list [catch {run {string replace abc 1 eof}} msg] $msg
} {1 {bad index "eof": must be integer?[+-]integer? or end?[+-]integer?}}
-test string-14.15 {string replace} {
- string replace abcdefghijklmnop end-10 end-2 NEW
+test string-14.15.$noComp {string replace} {
+ run {string replace abcdefghijklmnop end-10 end-2 NEW}
} {abcdeNEWop}
-test string-14.16 {string replace} {
- string replace abcdefghijklmnop 0 end foo
+test string-14.16.$noComp {string replace} {
+ run {string replace abcdefghijklmnop 0 end foo}
} {foo}
-test string-14.17 {string replace} {
- string replace abcdefghijklmnop end end-1
+test string-14.17.$noComp {string replace} {
+ run {string replace abcdefghijklmnop end end-1}
} {abcdefghijklmnop}
-test string-14.18 {string replace} {
- string replace abcdefghijklmnop 10 9 XXX
+test string-14.18.$noComp {string replace} {
+ run {string replace abcdefghijklmnop 10 9 XXX}
} {abcdefghijklmnop}
-test string-14.19 {string replace} {
- string replace {} -1 0 A
+test string-14.19.$noComp {string replace} {
+ run {string replace {} -1 0 A}
} A
+test string-14.20.$noComp {string replace} {
+ run {string replace [makeByteArray abcdefghijklmnop] end-10 end-2\
+ [makeByteArray NEW]}
+} {abcdeNEWop}
+
-test string-15.1 {string tolower too few args} {
- list [catch {string tolower} msg] $msg
+test stringComp-14.21.$noComp {Bug 82e7f67325} {
+ apply {x {
+ set a [join $x {}]
+ lappend b [string length [string replace ___! 0 2 $a]]
+ lappend b [string length [string replace ___! 0 2 $a[unset a]]]
+ }} {a b}
+} {3 3}
+test stringComp-14.22.$noComp {Bug 82e7f67325} memory {
+ # As in stringComp-14.1, but make sure we don't retain too many refs
+ leaktest {
+ apply {x {
+ set a [join $x {}]
+ lappend b [string length [string replace ___! 0 2 $a]]
+ lappend b [string length [string replace ___! 0 2 $a[unset a]]]
+ }} {a b}
+ }
+} {0}
+test stringComp-14.23.$noComp {Bug 0dca3bfa8f} {
+ apply {arg {
+ set argCopy $arg
+ set arg [string replace $arg 1 2 aa]
+ # Crashes in comparison before fix
+ expr {$arg ne $argCopy}
+ }} abcde
+} 1
+test stringComp-14.24.$noComp {Bug 1af8de570511} {
+ apply {{x y} {
+ # Generate an unshared string value
+ set val ""
+ for { set i 0 } { $i < $x } { incr i } {
+ set val [format "0%s" $val]
+ }
+ string replace $val[unset val] 1 1 $y
+ }} 4 x
+} 0x00
+test stringComp-14.25.$noComp {} {
+ string length [string replace [string repeat a\u00fe 2] 3 end {}]
+} 3
+
+test string-15.1.$noComp {string tolower too few args} {
+ list [catch {run {string tolower}} msg] $msg
} {1 {wrong # args: should be "string tolower string ?first? ?last?"}}
-test string-15.2 {string tolower bad args} {
- list [catch {string tolower a b} msg] $msg
+test string-15.2.$noComp {string tolower bad args} {
+ list [catch {run {string tolower a b}} msg] $msg
} {1 {bad index "b": must be integer?[+-]integer? or end?[+-]integer?}}
-test string-15.3 {string tolower too many args} {
- list [catch {string tolower ABC 1 end oops} msg] $msg
+test string-15.3.$noComp {string tolower too many args} {
+ list [catch {run {string tolower ABC 1 end oops}} msg] $msg
} {1 {wrong # args: should be "string tolower string ?first? ?last?"}}
-test string-15.4 {string tolower} {
- string tolower ABCDeF
+test string-15.4.$noComp {string tolower} {
+ run {string tolower ABCDeF}
} {abcdef}
-test string-15.5 {string tolower} {
- string tolower "ABC XyZ"
+test string-15.5.$noComp {string tolower} {
+ run {string tolower "ABC XyZ"}
} {abc xyz}
-test string-15.6 {string tolower} {
- string tolower {123#$&*()}
+test string-15.6.$noComp {string tolower} {
+ run {string tolower {123#$&*()}}
} {123#$&*()}
-test string-15.7 {string tolower} {
- string tolower ABC 1
+test string-15.7.$noComp {string tolower} {
+ run {string tolower ABC 1}
} AbC
-test string-15.8 {string tolower} {
- string tolower ABC 1 end
+test string-15.8.$noComp {string tolower} {
+ run {string tolower ABC 1 end}
} Abc
-test string-15.9 {string tolower} {
- string tolower ABC 0 end-1
+test string-15.9.$noComp {string tolower} {
+ run {string tolower ABC 0 end-1}
} abC
-test string-15.10 {string tolower, unicode} {
- string tolower ABCabc\xc7\xe7
+test string-15.10.$noComp {string tolower, unicode} {
+ run {string tolower ABCabc\xc7\xe7}
} "abcabc\xe7\xe7"
-test string-15.11 {string tolower, compiled} {
- lindex [string tolower [list A B [list C]]] 1
+test string-15.11.$noComp {string tolower, compiled} {
+ lindex [run {string tolower [list A B [list C]]}] 1
} b
-test string-16.1 {string toupper} {
- list [catch {string toupper} msg] $msg
+test string-16.1.$noComp {string toupper} {
+ list [catch {run {string toupper}} msg] $msg
} {1 {wrong # args: should be "string toupper string ?first? ?last?"}}
-test string-16.2 {string toupper} {
- list [catch {string toupper a b} msg] $msg
+test string-16.2.$noComp {string toupper} {
+ list [catch {run {string toupper a b}} msg] $msg
} {1 {bad index "b": must be integer?[+-]integer? or end?[+-]integer?}}
-test string-16.3 {string toupper} {
- list [catch {string toupper a 1 end oops} msg] $msg
+test string-16.3.$noComp {string toupper} {
+ list [catch {run {string toupper a 1 end oops}} msg] $msg
} {1 {wrong # args: should be "string toupper string ?first? ?last?"}}
-test string-16.4 {string toupper} {
- string toupper abCDEf
+test string-16.4.$noComp {string toupper} {
+ run {string toupper abCDEf}
} {ABCDEF}
-test string-16.5 {string toupper} {
- string toupper "abc xYz"
+test string-16.5.$noComp {string toupper} {
+ run {string toupper "abc xYz"}
} {ABC XYZ}
-test string-16.6 {string toupper} {
- string toupper {123#$&*()}
+test string-16.6.$noComp {string toupper} {
+ run {string toupper {123#$&*()}}
} {123#$&*()}
-test string-16.7 {string toupper} {
- string toupper abc 1
+test string-16.7.$noComp {string toupper} {
+ run {string toupper abc 1}
} aBc
-test string-16.8 {string toupper} {
- string toupper abc 1 end
+test string-16.8.$noComp {string toupper} {
+ run {string toupper abc 1 end}
} aBC
-test string-16.9 {string toupper} {
- string toupper abc 0 end-1
+test string-16.9.$noComp {string toupper} {
+ run {string toupper abc 0 end-1}
} ABc
-test string-16.10 {string toupper, unicode} {
- string toupper ABCabc\xc7\xe7
+test string-16.10.$noComp {string toupper, unicode} {
+ run {string toupper ABCabc\xc7\xe7}
} "ABCABC\xc7\xc7"
-test string-16.11 {string toupper, compiled} {
- lindex [string toupper [list a b [list c]]] 1
+test string-16.11.$noComp {string toupper, compiled} {
+ lindex [run {string toupper [list a b [list c]]}] 1
} B
-test string-17.1 {string totitle} {
- list [catch {string totitle} msg] $msg
+test string-17.1.$noComp {string totitle} {
+ list [catch {run {string totitle}} msg] $msg
} {1 {wrong # args: should be "string totitle string ?first? ?last?"}}
-test string-17.2 {string totitle} {
- list [catch {string totitle a b} msg] $msg
+test string-17.2.$noComp {string totitle} {
+ list [catch {run {string totitle a b}} msg] $msg
} {1 {bad index "b": must be integer?[+-]integer? or end?[+-]integer?}}
-test string-17.3 {string totitle} {
- string totitle abCDEf
+test string-17.3.$noComp {string totitle} {
+ run {string totitle abCDEf}
} {Abcdef}
-test string-17.4 {string totitle} {
- string totitle "abc xYz"
+test string-17.4.$noComp {string totitle} {
+ run {string totitle "abc xYz"}
} {Abc xyz}
-test string-17.5 {string totitle} {
- string totitle {123#$&*()}
+test string-17.5.$noComp {string totitle} {
+ run {string totitle {123#$&*()}}
} {123#$&*()}
-test string-17.6 {string totitle, unicode} {
- string totitle ABCabc\xc7\xe7
+test string-17.6.$noComp {string totitle, unicode} {
+ run {string totitle ABCabc\xc7\xe7}
} "Abcabc\xe7\xe7"
-test string-17.7 {string totitle, unicode} {
- string totitle \u01f3BCabc\xc7\xe7
+test string-17.7.$noComp {string totitle, unicode} {
+ run {string totitle \u01f3BCabc\xc7\xe7}
} "\u01f2bcabc\xe7\xe7"
-test string-17.8 {string totitle, compiled} {
- lindex [string totitle [list aa bb [list cc]]] 0
+test string-17.8.$noComp {string totitle, compiled} {
+ lindex [run {string totitle [list aa bb [list cc]]}] 0
} Aa
+test string-17.9.$noComp {string totitle, surrogates, bug [11ae2be95dac9417]} tip389 {
+ run {list [string totitle a\U118c0c 1 1] [string totitle a\U118c0c 2 2] \
+ [string totitle a\U118c0c 3 3]}
+} [list a\U118a0c a\U118c0C a\U118c0C]
-test string-18.1 {string trim} {
- list [catch {string trim} msg] $msg
+test string-18.1.$noComp {string trim} {
+ list [catch {run {string trim}} msg] $msg
} {1 {wrong # args: should be "string trim string ?chars?"}}
-test string-18.2 {string trim} {
- list [catch {string trim a b c} msg] $msg
+test string-18.2.$noComp {string trim} {
+ list [catch {run {string trim a b c}} msg] $msg
} {1 {wrong # args: should be "string trim string ?chars?"}}
-test string-18.3 {string trim} {
- string trim " XYZ "
+test string-18.3.$noComp {string trim} {
+ run {string trim " XYZ "}
} {XYZ}
-test string-18.4 {string trim} {
- string trim "\t\nXYZ\t\n\r\n"
+test string-18.4.$noComp {string trim} {
+ run {string trim "\t\nXYZ\t\n\r\n"}
} {XYZ}
-test string-18.5 {string trim} {
- string trim " A XYZ A "
+test string-18.5.$noComp {string trim} {
+ run {string trim " A XYZ A "}
} {A XYZ A}
-test string-18.6 {string trim} {
- string trim "XXYYZZABC XXYYZZ" ZYX
+test string-18.6.$noComp {string trim} {
+ run {string trim "XXYYZZABC XXYYZZ" ZYX}
} {ABC }
-test string-18.7 {string trim} {
- string trim " \t\r "
+test string-18.7.$noComp {string trim} {
+ run {string trim " \t\r "}
} {}
-test string-18.8 {string trim} {
- string trim {abcdefg} {}
+test string-18.8.$noComp {string trim} {
+ run {string trim {abcdefg} {}}
} {abcdefg}
-test string-18.9 {string trim} {
- string trim {}
+test string-18.9.$noComp {string trim} {
+ run {string trim {}}
} {}
-test string-18.10 {string trim} {
- string trim ABC DEF
+test string-18.10.$noComp {string trim} {
+ run {string trim ABC DEF}
} {ABC}
-test string-18.11 {string trim, unicode} {
- string trim "\xe7\xe8 AB\xe7C \xe8\xe7" \xe7\xe8
+test string-18.11.$noComp {string trim, unicode} {
+ run {string trim "\xe7\xe8 AB\xe7C \xe8\xe7" \xe7\xe8}
} " AB\xe7C "
-test string-18.12 {string trim, unicode default} {
- string trim \ufeff\x00\u0085\u00a0\u1680\u180eABC\u1361\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u200b\u2028\u2029\u202f\u205f\u3000
+test string-18.12.$noComp {string trim, unicode default} {
+ run {string trim \ufeff\x00\u0085\u00a0\u1680\u180eABC\u1361\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u200b\u2028\u2029\u202f\u205f\u3000}
} ABC\u1361
-test string-19.1 {string trimleft} {
- list [catch {string trimleft} msg] $msg
+test string-19.1.$noComp {string trimleft} {
+ list [catch {run {string trimleft}} msg] $msg
} {1 {wrong # args: should be "string trimleft string ?chars?"}}
-test string-19.2 {string trimleft} {
- string trimleft " XYZ "
+test string-19.2.$noComp {string trimleft} {
+ run {string trimleft " XYZ "}
} {XYZ }
-test string-19.3 {string trimleft, unicode default} {
- string trimleft \ufeff\u0085\u00a0\x00\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u200b\u2028\u2029\u202f\u205f\u3000\u1361ABC
+test string-19.3.$noComp {string trimleft, unicode default} {
+ run {string trimleft \ufeff\u0085\u00a0\x00\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u200b\u2028\u2029\u202f\u205f\u3000\u1361ABC}
} \u1361ABC
-test string-20.1 {string trimright errors} {
- list [catch {string trimright} msg] $msg
+test string-20.1.$noComp {string trimright errors} {
+ list [catch {run {string trimright}} msg] $msg
} {1 {wrong # args: should be "string trimright string ?chars?"}}
-test string-20.2 {string trimright errors} {
- list [catch {string trimg a} msg] $msg
+test string-20.2.$noComp {string trimright errors} {
+ list [catch {run {string trimg a}} msg] $msg
} {1 {unknown or ambiguous subcommand "trimg": must be bytelength, cat, compare, equal, first, index, is, last, length, map, match, range, repeat, replace, reverse, tolower, totitle, toupper, trim, trimleft, trimright, wordend, or wordstart}}
-test string-20.3 {string trimright} {
- string trimright " XYZ "
+test string-20.3.$noComp {string trimright} {
+ run {string trimright " XYZ "}
} { XYZ}
-test string-20.4 {string trimright} {
- string trimright " "
+test string-20.4.$noComp {string trimright} {
+ run {string trimright " "}
} {}
-test string-20.5 {string trimright} {
- string trimright ""
+test string-20.5.$noComp {string trimright} {
+ run {string trimright ""}
} {}
-test string-20.6 {string trimright, unicode default} {
- string trimright ABC\u1361\u0085\x00\u00a0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u200b\u2028\u2029\u202f\u205f\u3000
+test string-20.6.$noComp {string trimright, unicode default} {
+ run {string trimright ABC\u1361\u0085\x00\u00a0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u200b\u2028\u2029\u202f\u205f\u3000}
} ABC\u1361
-test string-21.1 {string wordend} {
- list [catch {string wordend a} msg] $msg
+test string-21.1.$noComp {string wordend} {
+ list [catch {run {string wordend a}} msg] $msg
} {1 {wrong # args: should be "string wordend string index"}}
-test string-21.2 {string wordend} {
- list [catch {string wordend a b c} msg] $msg
+test string-21.2.$noComp {string wordend} {
+ list [catch {run {string wordend a b c}} msg] $msg
} {1 {wrong # args: should be "string wordend string index"}}
-test string-21.3 {string wordend} {
- list [catch {string wordend a gorp} msg] $msg
+test string-21.3.$noComp {string wordend} {
+ list [catch {run {string wordend a gorp}} msg] $msg
} {1 {bad index "gorp": must be integer?[+-]integer? or end?[+-]integer?}}
-test string-21.4 {string wordend} {
- string wordend abc. -1
+test string-21.4.$noComp {string wordend} {
+ run {string wordend abc. -1}
} 3
-test string-21.5 {string wordend} {
- string wordend abc. 100
+test string-21.5.$noComp {string wordend} {
+ run {string wordend abc. 100}
} 4
-test string-21.6 {string wordend} {
- string wordend "word_one two three" 2
+test string-21.6.$noComp {string wordend} {
+ run {string wordend "word_one two three" 2}
} 8
-test string-21.7 {string wordend} {
- string wordend "one .&# three" 5
+test string-21.7.$noComp {string wordend} {
+ run {string wordend "one .&# three" 5}
} 6
-test string-21.8 {string wordend} {
- string worde "x.y" 0
+test string-21.8.$noComp {string wordend} {
+ run {string worde "x.y" 0}
} 1
-test string-21.9 {string wordend} {
- string worde "x.y" end-1
+test string-21.9.$noComp {string wordend} {
+ run {string worde "x.y" end-1}
} 2
-test string-21.10 {string wordend, unicode} {
- string wordend "xyz\u00c7de fg" 0
+test string-21.10.$noComp {string wordend, unicode} {
+ run {string wordend "xyz\u00c7de fg" 0}
} 6
-test string-21.11 {string wordend, unicode} {
- string wordend "xyz\uc700de fg" 0
+test string-21.11.$noComp {string wordend, unicode} {
+ run {string wordend "xyz\uc700de fg" 0}
} 6
-test string-21.12 {string wordend, unicode} {
- string wordend "xyz\u203fde fg" 0
+test string-21.12.$noComp {string wordend, unicode} {
+ run {string wordend "xyz\u203fde fg" 0}
} 6
-test string-21.13 {string wordend, unicode} {
- string wordend "xyz\u2045de fg" 0
+test string-21.13.$noComp {string wordend, unicode} {
+ run {string wordend "xyz\u2045de fg" 0}
} 3
-test string-21.14 {string wordend, unicode} {
- string wordend "\uc700\uc700 abc" 8
+test string-21.14.$noComp {string wordend, unicode} {
+ run {string wordend "\uc700\uc700 abc" 8}
} 6
-test string-22.1 {string wordstart} {
- list [catch {string word a} msg] $msg
+test string-22.1.$noComp {string wordstart} {
+ list [catch {run {string word a}} msg] $msg
} {1 {unknown or ambiguous subcommand "word": must be bytelength, cat, compare, equal, first, index, is, last, length, map, match, range, repeat, replace, reverse, tolower, totitle, toupper, trim, trimleft, trimright, wordend, or wordstart}}
-test string-22.2 {string wordstart} {
- list [catch {string wordstart a} msg] $msg
+test string-22.2.$noComp {string wordstart} {
+ list [catch {run {string wordstart a}} msg] $msg
} {1 {wrong # args: should be "string wordstart string index"}}
-test string-22.3 {string wordstart} {
- list [catch {string wordstart a b c} msg] $msg
+test string-22.3.$noComp {string wordstart} {
+ list [catch {run {string wordstart a b c}} msg] $msg
} {1 {wrong # args: should be "string wordstart string index"}}
-test string-22.4 {string wordstart} {
- list [catch {string wordstart a gorp} msg] $msg
+test string-22.4.$noComp {string wordstart} {
+ list [catch {run {string wordstart a gorp}} msg] $msg
} {1 {bad index "gorp": must be integer?[+-]integer? or end?[+-]integer?}}
-test string-22.5 {string wordstart} {
- string wordstart "one two three_words" 400
+test string-22.5.$noComp {string wordstart} {
+ run {string wordstart "one two three_words" 400}
} 8
-test string-22.6 {string wordstart} {
- string wordstart "one two three_words" 2
+test string-22.6.$noComp {string wordstart} {
+ run {string wordstart "one two three_words" 2}
} 0
-test string-22.7 {string wordstart} {
- string wordstart "one two three_words" -2
+test string-22.7.$noComp {string wordstart} {
+ run {string wordstart "one two three_words" -2}
} 0
-test string-22.8 {string wordstart} {
- string wordstart "one .*&^ three" 6
+test string-22.8.$noComp {string wordstart} {
+ run {string wordstart "one .*&^ three" 6}
} 6
-test string-22.9 {string wordstart} {
- string wordstart "one two three" 4
+test string-22.9.$noComp {string wordstart} {
+ run {string wordstart "one two three" 4}
} 4
-test string-22.10 {string wordstart} {
- string wordstart "one two three" end-5
+test string-22.10.$noComp {string wordstart} {
+ run {string wordstart "one two three" end-5}
} 7
-test string-22.11 {string wordstart, unicode} {
- string wordstart "one tw\u00c7o three" 7
+test string-22.11.$noComp {string wordstart, unicode} {
+ run {string wordstart "one tw\u00c7o three" 7}
} 4
-test string-22.12 {string wordstart, unicode} {
- string wordstart "ab\uc700\uc700 cdef ghi" 12
+test string-22.12.$noComp {string wordstart, unicode} {
+ run {string wordstart "ab\uc700\uc700 cdef ghi" 12}
} 10
-test string-22.13 {string wordstart, unicode} {
- string wordstart "\uc700\uc700 abc" 8
+test string-22.13.$noComp {string wordstart, unicode} {
+ run {string wordstart "\uc700\uc700 abc" 8}
} 3
-test string-23.0 {string is boolean, Bug 1187123} testindexobj {
+test string-23.0.$noComp {string is boolean, Bug 1187123} testindexobj {
set x 5
catch {testindexobj $x foo bar soom}
- string is boolean $x
+ run {string is boolean $x}
} 0
-test string-23.1 {string is command with empty string} {
+test string-23.1.$noComp {string is command with empty string} {
set s ""
list \
- [string is alnum $s] \
- [string is alpha $s] \
- [string is ascii $s] \
- [string is control $s] \
- [string is boolean $s] \
- [string is digit $s] \
- [string is double $s] \
- [string is false $s] \
- [string is graph $s] \
- [string is integer $s] \
- [string is lower $s] \
- [string is print $s] \
- [string is punct $s] \
- [string is space $s] \
- [string is true $s] \
- [string is upper $s] \
- [string is wordchar $s] \
- [string is xdigit $s] \
+ [run {string is alnum $s}] \
+ [run {string is alpha $s}] \
+ [run {string is ascii $s}] \
+ [run {string is control $s}] \
+ [run {string is boolean $s}] \
+ [run {string is digit $s}] \
+ [run {string is double $s}] \
+ [run {string is false $s}] \
+ [run {string is graph $s}] \
+ [run {string is integer $s}] \
+ [run {string is lower $s}] \
+ [run {string is print $s}] \
+ [run {string is punct $s}] \
+ [run {string is space $s}] \
+ [run {string is true $s}] \
+ [run {string is upper $s}] \
+ [run {string is wordchar $s}] \
+ [run {string is xdigit $s}] \
} {1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1}
-test string-23.2 {string is command with empty string} {
+test string-23.2.$noComp {string is command with empty string} {
set s ""
list \
- [string is alnum -strict $s] \
- [string is alpha -strict $s] \
- [string is ascii -strict $s] \
- [string is control -strict $s] \
- [string is boolean -strict $s] \
- [string is digit -strict $s] \
- [string is double -strict $s] \
- [string is false -strict $s] \
- [string is graph -strict $s] \
- [string is integer -strict $s] \
- [string is lower -strict $s] \
- [string is print -strict $s] \
- [string is punct -strict $s] \
- [string is space -strict $s] \
- [string is true -strict $s] \
- [string is upper -strict $s] \
- [string is wordchar -strict $s] \
- [string is xdigit -strict $s] \
+ [run {string is alnum -strict $s}] \
+ [run {string is alpha -strict $s}] \
+ [run {string is ascii -strict $s}] \
+ [run {string is control -strict $s}] \
+ [run {string is boolean -strict $s}] \
+ [run {string is digit -strict $s}] \
+ [run {string is double -strict $s}] \
+ [run {string is false -strict $s}] \
+ [run {string is graph -strict $s}] \
+ [run {string is integer -strict $s}] \
+ [run {string is lower -strict $s}] \
+ [run {string is print -strict $s}] \
+ [run {string is punct -strict $s}] \
+ [run {string is space -strict $s}] \
+ [run {string is true -strict $s}] \
+ [run {string is upper -strict $s}] \
+ [run {string is wordchar -strict $s}] \
+ [run {string is xdigit -strict $s}] \
} {0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0}
-test string-24.1 {string reverse command} -body {
- string reverse
+test string-24.1.$noComp {string reverse command} -body {
+ run {string reverse}
} -returnCodes error -result "wrong # args: should be \"string reverse string\""
-test string-24.2 {string reverse command} -body {
- string reverse a b
+test string-24.2.$noComp {string reverse command} -body {
+ run {string reverse a b}
} -returnCodes error -result "wrong # args: should be \"string reverse string\""
-test string-24.3 {string reverse command - shared string} {
+test string-24.3.$noComp {string reverse command - shared string} {
set x abcde
- string reverse $x
+ run {string reverse $x}
} edcba
-test string-24.4 {string reverse command - unshared string} {
+test string-24.4.$noComp {string reverse command - unshared string} {
set x abc
set y de
- string reverse $x$y
+ run {string reverse $x$y}
} edcba
-test string-24.5 {string reverse command - shared unicode string} {
+test string-24.5.$noComp {string reverse command - shared unicode string} {
set x abcde\ud0ad
- string reverse $x
+ run {string reverse $x}
} \ud0adedcba
-test string-24.6 {string reverse command - unshared string} {
+test string-24.6.$noComp {string reverse command - unshared string} {
set x abc
set y de\ud0ad
- string reverse $x$y
+ run {string reverse $x$y}
} \ud0adedcba
-test string-24.7 {string reverse command - simple case} {
- string reverse a
+test string-24.7.$noComp {string reverse command - simple case} {
+ run {string reverse a}
} a
-test string-24.8 {string reverse command - simple case} {
- string reverse \ud0ad
+test string-24.8.$noComp {string reverse command - simple case} {
+ run {string reverse \ud0ad}
} \ud0ad
-test string-24.9 {string reverse command - simple case} {
- string reverse {}
+test string-24.9.$noComp {string reverse command - simple case} {
+ run {string reverse {}}
} {}
-test string-24.10 {string reverse command - corner case} {
+test string-24.10.$noComp {string reverse command - corner case} {
set x \ubeef\ud0ad
- string reverse $x
+ run {string reverse $x}
} \ud0ad\ubeef
-test string-24.11 {string reverse command - corner case} {
+test string-24.11.$noComp {string reverse command - corner case} {
set x \ubeef
set y \ud0ad
- string reverse $x$y
+ run {string reverse $x$y}
} \ud0ad\ubeef
-test string-24.12 {string reverse command - corner case} {
+test string-24.12.$noComp {string reverse command - corner case} {
set x \ubeef
set y \ud0ad
- string is ascii [string reverse $x$y]
+ run {string is ascii [run {string reverse $x$y}]}
} 0
-test string-24.13 {string reverse command - pure Unicode string} {
- string reverse [string range \ubeef\ud0ad\ubeef\ud0ad\ubeef\ud0ad 1 5]
+test string-24.13.$noComp {string reverse command - pure Unicode string} {
+ run {string reverse [run {string range \ubeef\ud0ad\ubeef\ud0ad\ubeef\ud0ad 1 5}]}
} \ud0ad\ubeef\ud0ad\ubeef\ud0ad
-test string-24.14 {string reverse command - pure bytearray} {
- binary scan [string reverse [binary format H* 010203]] H* x
+test string-24.14.$noComp {string reverse command - pure bytearray} {
+ binary scan [run {string reverse [binary format H* 010203]}] H* x
set x
} 030201
-test string-24.15 {string reverse command - pure bytearray} {
- binary scan [tcl::string::reverse [binary format H* 010203]] H* x
+test string-24.15.$noComp {string reverse command - pure bytearray} {
+ binary scan [run {tcl::string::reverse [binary format H* 010203]}] H* x
set x
} 030201
-test string-25.1 {string is list} {
- string is list {a b c}
+test string-25.1.$noComp {string is list} {
+ run {string is list {a b c}}
} 1
-test string-25.2 {string is list} {
- string is list "a \{b c"
+test string-25.2.$noComp {string is list} {
+ run {string is list "a \{b c"}
} 0
-test string-25.3 {string is list} {
- string is list {a {b c}d e}
+test string-25.3.$noComp {string is list} {
+ run {string is list {a {b c}d e}}
} 0
-test string-25.4 {string is list} {
- string is list {}
+test string-25.4.$noComp {string is list} {
+ run {string is list {}}
} 1
-test string-25.5 {string is list} {
- string is list -strict {a b c}
+test string-25.5.$noComp {string is list} {
+ run {string is list -strict {a b c}}
} 1
-test string-25.6 {string is list} {
- string is list -strict "a \{b c"
+test string-25.6.$noComp {string is list} {
+ run {string is list -strict "a \{b c"}
} 0
-test string-25.7 {string is list} {
- string is list -strict {a {b c}d e}
+test string-25.7.$noComp {string is list} {
+ run {string is list -strict {a {b c}d e}}
} 0
-test string-25.8 {string is list} {
- string is list -strict {}
+test string-25.8.$noComp {string is list} {
+ run {string is list -strict {}}
} 1
-test string-25.9 {string is list} {
+test string-25.9.$noComp {string is list} {
set x {}
- list [string is list -failindex x {a b c}] $x
+ list [run {string is list -failindex x {a b c}}] $x
} {1 {}}
-test string-25.10 {string is list} {
+test string-25.10.$noComp {string is list} {
set x {}
- list [string is list -failindex x "a \{b c"] $x
+ list [run {string is list -failindex x "a \{b c"}] $x
} {0 2}
-test string-25.11 {string is list} {
+test string-25.11.$noComp {string is list} {
set x {}
- list [string is list -failindex x {a b {b c}d e}] $x
+ list [run {string is list -failindex x {a b {b c}d e}}] $x
} {0 4}
-test string-25.12 {string is list} {
+test string-25.12.$noComp {string is list} {
set x {}
- list [string is list -failindex x {}] $x
+ list [run {string is list -failindex x {}}] $x
} {1 {}}
-test string-25.13 {string is list} {
+test string-25.13.$noComp {string is list} {
set x {}
- list [string is list -failindex x { {b c}d e}] $x
+ list [run {string is list -failindex x { {b c}d e}}] $x
} {0 2}
-test string-25.14 {string is list} {
+test string-25.14.$noComp {string is list} {
set x {}
- list [string is list -failindex x "\uabcd {b c}d e"] $x
+ list [run {string is list -failindex x "\uabcd {b c}d e"}] $x
} {0 2}
-test string-26.1 {tcl::prefix, too few args} -body {
+test string-26.1.$noComp {tcl::prefix, too few args} -body {
tcl::prefix match a
} -returnCodes 1 -result {wrong # args: should be "tcl::prefix match ?options? table string"}
-test string-26.2 {tcl::prefix, bad args} -body {
+test string-26.2.$noComp {tcl::prefix, bad args} -body {
tcl::prefix match a b c
} -returnCodes 1 -result {bad option "a": must be -error, -exact, or -message}
-test string-26.2.1 {tcl::prefix, empty table} -body {
+test string-26.2.1.$noComp {tcl::prefix, empty table} -body {
tcl::prefix match {} foo
} -returnCodes 1 -result {bad option "foo": no valid options}
-test string-26.3 {tcl::prefix, bad args} -body {
+test string-26.3.$noComp {tcl::prefix, bad args} -body {
tcl::prefix match -error "{}x" -exact str1 str2
} -returnCodes 1 -result {list element in braces followed by "x" instead of space}
-test string-26.3.1 {tcl::prefix, bad args} -body {
+test string-26.3.1.$noComp {tcl::prefix, bad args} -body {
tcl::prefix match -error "x" -exact str1 str2
} -returnCodes 1 -result {error options must have an even number of elements}
-test string-26.3.2 {tcl::prefix, bad args} -body {
+test string-26.3.2.$noComp {tcl::prefix, bad args} -body {
tcl::prefix match -error str1 str2
} -returnCodes 1 -result {missing value for -error}
-test string-26.4 {tcl::prefix, bad args} -body {
+test string-26.4.$noComp {tcl::prefix, bad args} -body {
tcl::prefix match -message str1 str2
} -returnCodes 1 -result {missing value for -message}
-test string-26.5 {tcl::prefix} {
+test string-26.5.$noComp {tcl::prefix} {
tcl::prefix match {apa bepa cepa depa} cepa
} cepa
-test string-26.6 {tcl::prefix} {
+test string-26.6.$noComp {tcl::prefix} {
tcl::prefix match {apa bepa cepa depa} be
} bepa
-test string-26.7 {tcl::prefix} -body {
+test string-26.7.$noComp {tcl::prefix} -body {
tcl::prefix match -exact {apa bepa cepa depa} be
} -returnCodes 1 -result {bad option "be": must be apa, bepa, cepa, or depa}
-test string-26.8 {tcl::prefix} -body {
+test string-26.8.$noComp {tcl::prefix} -body {
tcl::prefix match -message wombat {apa bepa bear depa} be
} -returnCodes 1 -result {ambiguous wombat "be": must be apa, bepa, bear, or depa}
-test string-26.9 {tcl::prefix} -body {
+test string-26.9.$noComp {tcl::prefix} -body {
tcl::prefix match -error {} {apa bepa bear depa} be
} -returnCodes 0 -result {}
-test string-26.10 {tcl::prefix} -body {
+test string-26.10.$noComp {tcl::prefix} -body {
tcl::prefix match -error {-level 1} {apa bepa bear depa} be
} -returnCodes 2 -result {ambiguous option "be": must be apa, bepa, bear, or depa}
-test string-26.10.1 {tcl::prefix} -setup {
+test string-26.10.1.$noComp {tcl::prefix} -setup {
proc _testprefix {args} {
array set opts {-a x -b y -c y}
foreach {opt val} $args {
@@ -1874,7 +2114,7 @@ proc MemStress {args} {
return $res
}
-test string-26.11 {tcl::prefix: testing for leaks} -body {
+test string-26.11.$noComp {tcl::prefix: testing for leaks} -body {
# This test is made to stress object reference management
MemStress {
set table {hejj miff gurk}
@@ -1895,7 +2135,7 @@ test string-26.11 {tcl::prefix: testing for leaks} -body {
}
} -constraints memory -result {0 0 0}
-test string-26.12 {tcl::prefix: testing for leaks} -body {
+test string-26.12.$noComp {tcl::prefix: testing for leaks} -body {
# This is a memory leak test in a form that might actually happen
# in real code. The shared literal "miff" causes a connection
# between the item and the table.
@@ -1913,7 +2153,7 @@ test string-26.12 {tcl::prefix: testing for leaks} -body {
}
} -constraints memory -result 0
-test string-26.13 {tcl::prefix: testing for leaks} -body {
+test string-26.13.$noComp {tcl::prefix: testing for leaks} -body {
# This test is made to stress object reference management
MemStress {
set table [list hejj miff]
@@ -1926,147 +2166,155 @@ test string-26.13 {tcl::prefix: testing for leaks} -body {
}
} -constraints memory -result {0}
-test string-27.1 {tcl::prefix all, too few args} -body {
+test string-27.1.$noComp {tcl::prefix all, too few args} -body {
tcl::prefix all a
} -returnCodes 1 -result {wrong # args: should be "tcl::prefix all table string"}
-test string-27.2 {tcl::prefix all, bad args} -body {
+test string-27.2.$noComp {tcl::prefix all, bad args} -body {
tcl::prefix all a b c
} -returnCodes 1 -result {wrong # args: should be "tcl::prefix all table string"}
-test string-27.3 {tcl::prefix all, bad args} -body {
+test string-27.3.$noComp {tcl::prefix all, bad args} -body {
tcl::prefix all "{}x" str2
} -returnCodes 1 -result {list element in braces followed by "x" instead of space}
-test string-27.4 {tcl::prefix all} {
+test string-27.4.$noComp {tcl::prefix all} {
tcl::prefix all {apa bepa cepa depa} c
} cepa
-test string-27.5 {tcl::prefix all} {
+test string-27.5.$noComp {tcl::prefix all} {
tcl::prefix all {apa bepa cepa depa} cepa
} cepa
-test string-27.6 {tcl::prefix all} {
+test string-27.6.$noComp {tcl::prefix all} {
tcl::prefix all {apa bepa cepa depa} cepax
} {}
-test string-27.7 {tcl::prefix all} {
+test string-27.7.$noComp {tcl::prefix all} {
tcl::prefix all {apa aska appa} a
} {apa aska appa}
-test string-27.8 {tcl::prefix all} {
+test string-27.8.$noComp {tcl::prefix all} {
tcl::prefix all {apa aska appa} ap
} {apa appa}
-test string-27.9 {tcl::prefix all} {
+test string-27.9.$noComp {tcl::prefix all} {
tcl::prefix all {apa aska appa} p
} {}
-test string-27.10 {tcl::prefix all} {
+test string-27.10.$noComp {tcl::prefix all} {
tcl::prefix all {apa aska appa} {}
} {apa aska appa}
-test string-28.1 {tcl::prefix longest, too few args} -body {
+test string-28.1.$noComp {tcl::prefix longest, too few args} -body {
tcl::prefix longest a
} -returnCodes 1 -result {wrong # args: should be "tcl::prefix longest table string"}
-test string-28.2 {tcl::prefix longest, bad args} -body {
+test string-28.2.$noComp {tcl::prefix longest, bad args} -body {
tcl::prefix longest a b c
} -returnCodes 1 -result {wrong # args: should be "tcl::prefix longest table string"}
-test string-28.3 {tcl::prefix longest, bad args} -body {
+test string-28.3.$noComp {tcl::prefix longest, bad args} -body {
tcl::prefix longest "{}x" str2
} -returnCodes 1 -result {list element in braces followed by "x" instead of space}
-test string-28.4 {tcl::prefix longest} {
+test string-28.4.$noComp {tcl::prefix longest} {
tcl::prefix longest {apa bepa cepa depa} c
} cepa
-test string-28.5 {tcl::prefix longest} {
+test string-28.5.$noComp {tcl::prefix longest} {
tcl::prefix longest {apa bepa cepa depa} cepa
} cepa
-test string-28.6 {tcl::prefix longest} {
+test string-28.6.$noComp {tcl::prefix longest} {
tcl::prefix longest {apa bepa cepa depa} cepax
} {}
-test string-28.7 {tcl::prefix longest} {
+test string-28.7.$noComp {tcl::prefix longest} {
tcl::prefix longest {apa aska appa} a
} a
-test string-28.8 {tcl::prefix longest} {
+test string-28.8.$noComp {tcl::prefix longest} {
tcl::prefix longest {apa aska appa} ap
} ap
-test string-28.9 {tcl::prefix longest} {
+test string-28.9.$noComp {tcl::prefix longest} {
tcl::prefix longest {apa bska appa} a
} ap
-test string-28.10 {tcl::prefix longest} {
+test string-28.10.$noComp {tcl::prefix longest} {
tcl::prefix longest {apa bska appa} {}
} {}
-test string-28.11 {tcl::prefix longest} {
+test string-28.11.$noComp {tcl::prefix longest} {
tcl::prefix longest {{} bska appa} {}
} {}
-test string-28.12 {tcl::prefix longest} {
+test string-28.12.$noComp {tcl::prefix longest} {
tcl::prefix longest {apa {} appa} {}
} {}
-test string-28.13 {tcl::prefix longest} {
+test string-28.13.$noComp {tcl::prefix longest} {
# Test UTF8 handling
tcl::prefix longest {ax\x90 bep ax\x91} a
} ax
-test string-29.1 {string cat, no arg} {
- string cat
+test string-29.1.$noComp {string cat, no arg} {
+ run {string cat}
} ""
-test string-29.2 {string cat, single arg} {
+test string-29.2.$noComp {string cat, single arg} {
set x FOO
- string compare $x [string cat $x]
+ run {string compare $x [run {string cat $x}]}
} 0
-test string-29.3 {string cat, two args} {
+test string-29.3.$noComp {string cat, two args} {
set x FOO
- string compare $x$x [string cat $x $x]
+ run {string compare $x$x [run {string cat $x $x}]}
} 0
-test string-29.4 {string cat, many args} {
+test string-29.4.$noComp {string cat, many args} {
set x FOO
set n 260
- set xx [string repeat $x $n]
- set vv [string repeat {$x} $n]
- set vvs [string repeat {$x } $n]
- set r1 [string compare $xx [subst $vv]]
- set r2 [string compare $xx [eval "string cat $vvs"]]
+ set xx [run {string repeat $x $n}]
+ set vv [run {string repeat {$x} $n}]
+ set vvs [run {string repeat {$x } $n}]
+ set r1 [run {string compare $xx [subst $vv]}]
+ set r2 [run {string compare $xx [eval "run {string cat $vvs}"]}]
list $r1 $r2
} {0 0}
-test string-29.5 {string cat, efficiency} -body {
- tcl::unsupported::representation [string cat [list x] [list]]
+if {$noComp} {
+test string-29.5.$noComp {string cat, efficiency} -body {
+ tcl::unsupported::representation [run {string cat [list x] [list]}]
} -match glob -result {*no string representation}
-test string-29.6 {string cat, efficiency} -body {
- tcl::unsupported::representation [string cat [list] [list x]]
+test string-29.6.$noComp {string cat, efficiency} -body {
+ tcl::unsupported::representation [run {string cat [list] [list x]}]
} -match glob -result {*no string representation}
-test string-29.7 {string cat, efficiency} -body {
- tcl::unsupported::representation [string cat [list x] [list] [list]]
+test string-29.7.$noComp {string cat, efficiency} -body {
+ tcl::unsupported::representation [run {string cat [list x] [list] [list]}]
} -match glob -result {*no string representation}
-test string-29.8 {string cat, efficiency} -body {
- tcl::unsupported::representation [string cat [list] [list x] [list]]
+test string-29.8.$noComp {string cat, efficiency} -body {
+ tcl::unsupported::representation [run {string cat [list] [list x] [list]}]
} -match glob -result {*no string representation}
-test string-29.9 {string cat, efficiency} -body {
- tcl::unsupported::representation [string cat [list] [list] [list x]]
+test string-29.9.$noComp {string cat, efficiency} -body {
+ tcl::unsupported::representation [run {string cat [list] [list] [list x]}]
} -match glob -result {*no string representation}
-test string-29.10 {string cat, efficiency} -body {
- tcl::unsupported::representation [string cat [list x] [list x]]
+test string-29.10.$noComp {string cat, efficiency} -body {
+ tcl::unsupported::representation [run {string cat [list x] [list x]}]
} -match glob -result {*, string representation "xx"}
-test string-29.11 {string cat, efficiency} -body {
+test string-29.11.$noComp {string cat, efficiency} -body {
tcl::unsupported::representation \
- [string cat [list x] [encoding convertto utf-8 {}]]
+ [run {string cat [list x] [encoding convertto utf-8 {}]}]
} -match glob -result {*no string representation}
-test string-29.12 {string cat, efficiency} -body {
+test string-29.12.$noComp {string cat, efficiency} -body {
tcl::unsupported::representation \
- [string cat [encoding convertto utf-8 {}] [list x]]
+ [run {string cat [encoding convertto utf-8 {}] [list x]}]
} -match glob -result {*, string representation "x"}
-test string-29.13 {string cat, efficiency} -body {
- tcl::unsupported::representation [string cat \
- [encoding convertto utf-8 {}] [encoding convertto utf-8 {}] [list x]]
+test string-29.13.$noComp {string cat, efficiency} -body {
+ tcl::unsupported::representation [run {string cat \
+ [encoding convertto utf-8 {}] [encoding convertto utf-8 {}] [list x]}]
} -match glob -result {*, string representation "x"}
-test string-29.14 {string cat, efficiency} -setup {
+test string-29.14.$noComp {string cat, efficiency} -setup {
set e [encoding convertto utf-8 {}]
} -cleanup {
unset e
} -body {
- tcl::unsupported::representation [string cat $e $e [list x]]
+ tcl::unsupported::representation [run {string cat $e $e [list x]}]
} -match glob -result {*no string representation}
-test string-29.15 {string cat, efficiency} -setup {
+test string-29.15.$noComp {string cat, efficiency} -setup {
set e [encoding convertto utf-8 {}]
set f [encoding convertto utf-8 {}]
} -cleanup {
unset e f
} -body {
- tcl::unsupported::representation [string cat $e $f $e $f [list x]]
+ tcl::unsupported::representation [run {string cat $e $f $e $f [list x]}]
} -match glob -result {*no string representation}
-
+}
+
+}
+
# cleanup
rename MemStress {}
+rename makeByteArray {}
+rename makeUnicode {}
+rename makeList {}
+rename makeShared {}
catch {rename foo {}}
::tcltest::cleanupTests
return
diff --git a/tests/stringComp.test b/tests/stringComp.test
deleted file mode 100644
index 2aeb08e..0000000
--- a/tests/stringComp.test
+++ /dev/null
@@ -1,801 +0,0 @@
-# Commands covered: string
-#
-# This file contains a collection of tests for one or more of the Tcl
-# built-in commands. Sourcing this file into Tcl runs the tests and
-# generates output for errors. No output means no errors were found.
-#
-# This differs from the original string tests in that the tests call
-# things in procs, which uses the compiled string code instead of
-# the runtime parse string code. The tests of import should match
-# their equivalent number in string.test.
-#
-# Copyright (c) 2001 by ActiveState Corporation.
-# Copyright (c) 2001 by Kevin B. Kenny. All rights reserved.
-#
-# See the file "license.terms" for information on usage and redistribution
-# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
-
-if {[lsearch [namespace children] ::tcltest] == -1} {
- package require tcltest
- namespace import -force ::tcltest::*
-}
-
-::tcltest::loadTestedCommands
-catch [list package require -exact Tcltest [info patchlevel]]
-
-# Some tests require the testobj command
-
-testConstraint testobj [expr {[info commands testobj] != {}}]
-testConstraint memory [llength [info commands memory]]
-if {[testConstraint memory]} {
- proc getbytes {} {
- set lines [split [memory info] \n]
- return [lindex $lines 3 3]
- }
- proc leaktest {script {iterations 3}} {
- set end [getbytes]
- for {set i 0} {$i < $iterations} {incr i} {
- uplevel 1 $script
- set tmp $end
- set end [getbytes]
- }
- return [expr {$end - $tmp}]
- }
-}
-
-test stringComp-1.1 {error conditions} {
- proc foo {} {string gorp a b}
- list [catch {foo} msg] $msg
-} {1 {unknown or ambiguous subcommand "gorp": must be bytelength, cat, compare, equal, first, index, is, last, length, map, match, range, repeat, replace, reverse, tolower, totitle, toupper, trim, trimleft, trimright, wordend, or wordstart}}
-test stringComp-1.2 {error conditions} {
- proc foo {} {string}
- list [catch {foo} msg] $msg
-} {1 {wrong # args: should be "string subcommand ?arg ...?"}}
-test stringComp-1.3 {error condition - undefined method during compile} {
- # We don't want this to complain about 'never' because it may never
- # be called, or string may get redefined. This must compile OK.
- proc foo {str i} {
- if {"yes" == "no"} { string never called but complains here }
- string index $str $i
- }
- foo abc 0
-} a
-
-## Test string compare|equal over equal constraints
-## Use result for string compare, and negate it for string equal
-## The body will be tested both in and outside a proc
-set i 0
-foreach {tname tbody tresult tcode} {
- {too few args} {
- string compare a
- } {wrong # args: should be "string compare ?-nocase? ?-length int? string1 string2"} {error}
- {bad args} {
- string compare a b c
- } {bad option "a": must be -nocase or -length} {error}
- {bad args} {
- string compare -length -nocase str1 str2
- } {expected integer but got "-nocase"} {error}
- {too many args} {
- string compare -length 10 -nocase str1 str2 str3
- } {wrong # args: should be "string compare ?-nocase? ?-length int? string1 string2"} {error}
- {compare with length unspecified} {
- string compare -length 10 10
- } {wrong # args: should be "string compare ?-nocase? ?-length int? string1 string2"} {error}
- {basic operation fail} {
- string compare abcde abdef
- } {-1} {}
- {basic operation success} {
- string compare abcde abcde
- } {0} {}
- {with length} {
- string compare -length 2 abcde abxyz
- } {0} {}
- {with special index} {
- string compare -length end-3 abcde abxyz
- } {expected integer but got "end-3"} {error}
- {unicode} {
- string compare ab\u7266 ab\u7267
- } {-1} {}
- {unicode} {string compare \334 \u00dc} 0 {}
- {unicode} {string compare \334 \u00fc} -1 {}
- {unicode} {string compare \334\334\334\374\374 \334\334\334\334\334} 1 {}
- {high bit} {
- # This test will fail if the underlying comparaison
- # is using signed chars instead of unsigned chars.
- # (like SunOS's default memcmp thus the compat/memcmp.c)
- string compare "\x80" "@"
- # Nb this tests works also in utf8 space because \x80 is
- # translated into a 2 or more bytelength but whose first byte has
- # the high bit set.
- } {1} {}
- {-nocase 1} {string compare -nocase abcde abdef} {-1} {}
- {-nocase 2} {string compare -nocase abcde Abdef} {-1} {}
- {-nocase 3} {string compare -nocase abcde ABCDE} {0} {}
- {-nocase 4} {string compare -nocase abcde abcde} {0} {}
- {-nocase unicode} {
- string compare -nocase \334 \u00dc
- } 0 {}
- {-nocase unicode} {
- string compare -nocase \334\334\334\374\u00fc \334\334\334\334\334
- } 0 {}
- {-nocase with length} {
- string compare -length 2 -nocase abcde Abxyz
- } {0} {}
- {-nocase with length} {
- string compare -nocase -length 3 abcde Abxyz
- } {-1} {}
- {-nocase with length <= 0} {
- string compare -nocase -length -1 abcde AbCdEf
- } {-1} {}
- {-nocase with excessive length} {
- string compare -nocase -length 50 AbCdEf abcde
- } {1} {}
- {-len unicode} {
- # These are strings that are 6 BYTELENGTH long, but the length
- # shouldn't make a different because there are actually 3 CHARS long
- string compare -len 5 \334\334\334 \334\334\374
- } -1 {}
- {-nocase with special index} {
- string compare -nocase -length end-3 Abcde abxyz
- } {expected integer but got "end-3"} error
- {null strings} {
- string compare "" ""
- } 0 {}
- {null strings} {
- string compare "" foo
- } -1 {}
- {null strings} {
- string compare foo ""
- } 1 {}
- {-nocase null strings} {
- string compare -nocase "" ""
- } 0 {}
- {-nocase null strings} {
- string compare -nocase "" foo
- } -1 {}
- {-nocase null strings} {
- string compare -nocase foo ""
- } 1 {}
- {with length, unequal strings} {
- string compare -length 2 abc abde
- } 0 {}
- {with length, unequal strings} {
- string compare -length 2 ab abde
- } 0 {}
- {with NUL character vs. other ASCII} {
- # Be careful here, since UTF-8 rep comparison with memcmp() of
- # these puts chars in the wrong order
- string compare \x00 \x01
- } -1 {}
- {high bit} {
- string compare "a\x80" "a@"
- } 1 {}
- {high bit} {
- string compare "a\x00" "a\x01"
- } -1 {}
- {high bit} {
- string compare "\x00\x00" "\x00\x01"
- } -1 {}
- {binary equal} {
- string compare [binary format a100 0] [binary format a100 0]
- } 0 {}
- {binary neq} {
- string compare [binary format a100a 0 1] [binary format a100a 0 0]
- } 1 {}
- {binary neq inequal length} {
- string compare [binary format a20a 0 1] [binary format a100a 0 0]
- } 1 {}
-} {
- if {$tname eq ""} { continue }
- if {$tcode eq ""} { set tcode ok }
- test stringComp-2.[incr i] "string compare, $tname" \
- -body [list eval $tbody] \
- -returnCodes $tcode -result $tresult
- test stringComp-2.[incr i] "string compare bc, $tname" \
- -body "[list proc foo {} $tbody];foo" \
- -returnCodes $tcode -result $tresult
- if {"error" ni $tcode} {
- set tresult [expr {!$tresult}]
- } else {
- set tresult [string map {compare equal} $tresult]
- }
- set tbody [string map {compare equal} $tbody]
- test stringComp-2.[incr i] "string equal, $tname" \
- -body [list eval $tbody] \
- -returnCodes $tcode -result $tresult
- test stringComp-2.[incr i] "string equal bc, $tname" \
- -body "[list proc foo {} $tbody];foo" \
- -returnCodes $tcode -result $tresult
-}
-
-# need a few extra tests short abbr cmd
-test stringComp-3.1 {string compare, shortest method name} {
- proc foo {} {string co abcde ABCDE}
- foo
-} 1
-test stringComp-3.2 {string equal, shortest method name} {
- proc foo {} {string e abcde ABCDE}
- foo
-} 0
-test stringComp-3.3 {string equal -nocase} {
- proc foo {} {string eq -nocase abcde ABCDE}
- foo
-} 1
-
-test stringComp-4.1 {string first, too few args} {
- proc foo {} {string first a}
- list [catch {foo} msg] $msg
-} {1 {wrong # args: should be "string first needleString haystackString ?startIndex?"}}
-test stringComp-4.2 {string first, bad args} {
- proc foo {} {string first a b c}
- list [catch {foo} msg] $msg
-} {1 {bad index "c": must be integer?[+-]integer? or end?[+-]integer?}}
-test stringComp-4.3 {string first, too many args} {
- proc foo {} {string first a b 5 d}
- list [catch {foo} msg] $msg
-} {1 {wrong # args: should be "string first needleString haystackString ?startIndex?"}}
-test stringComp-4.4 {string first} {
- proc foo {} {string first bq abcdefgbcefgbqrs}
- foo
-} 12
-test stringComp-4.5 {string first} {
- proc foo {} {string fir bcd abcdefgbcefgbqrs}
- foo
-} 1
-test stringComp-4.6 {string first} {
- proc foo {} {string f b abcdefgbcefgbqrs}
- foo
-} 1
-test stringComp-4.7 {string first} {
- proc foo {} {string first xxx x123xx345xxx789xxx012}
- foo
-} 9
-test stringComp-4.8 {string first} {
- proc foo {} {string first "" x123xx345xxx789xxx012}
- foo
-} -1
-test stringComp-4.9 {string first, unicode} {
- proc foo {} {string first x abc\u7266x}
- foo
-} 4
-test stringComp-4.10 {string first, unicode} {
- proc foo {} {string first \u7266 abc\u7266x}
- foo
-} 3
-test stringComp-4.11 {string first, start index} {
- proc foo {} {string first \u7266 abc\u7266x 3}
- foo
-} 3
-test stringComp-4.12 {string first, start index} {
- proc foo {} {string first \u7266 abc\u7266x 4}
- foo
-} -1
-test stringComp-4.13 {string first, start index} {
- proc foo {} {string first \u7266 abc\u7266x end-2}
- foo
-} 3
-test stringComp-4.14 {string first, negative start index} {
- proc foo {} {string first b abc -1}
- foo
-} 1
-
-test stringComp-5.1 {string index} {
- proc foo {} {string index}
- list [catch {foo} msg] $msg
-} {1 {wrong # args: should be "string index string charIndex"}}
-test stringComp-5.2 {string index} {
- proc foo {} {string index a b c}
- list [catch {foo} msg] $msg
-} {1 {wrong # args: should be "string index string charIndex"}}
-test stringComp-5.3 {string index} {
- proc foo {} {string index abcde 0}
- foo
-} a
-test stringComp-5.4 {string index} {
- proc foo {} {string in abcde 4}
- foo
-} e
-test stringComp-5.5 {string index} {
- proc foo {} {string index abcde 5}
- foo
-} {}
-test stringComp-5.6 {string index} {
- proc foo {} {string index abcde -10}
- list [catch {foo} msg] $msg
-} {0 {}}
-test stringComp-5.7 {string index} {
- proc foo {} {string index a xyz}
- list [catch {foo} msg] $msg
-} {1 {bad index "xyz": must be integer?[+-]integer? or end?[+-]integer?}}
-test stringComp-5.8 {string index} {
- proc foo {} {string index abc end}
- foo
-} c
-test stringComp-5.9 {string index} {
- proc foo {} {string index abc end-1}
- foo
-} b
-test stringComp-5.10 {string index, unicode} {
- proc foo {} {string index abc\u7266d 4}
- foo
-} d
-test stringComp-5.11 {string index, unicode} {
- proc foo {} {string index abc\u7266d 3}
- foo
-} \u7266
-test stringComp-5.12 {string index, unicode over char length, under byte length} {
- proc foo {} {string index \334\374\334\374 6}
- foo
-} {}
-test stringComp-5.13 {string index, bytearray object} {
- proc foo {} {string index [binary format a5 fuz] 0}
- foo
-} f
-test stringComp-5.14 {string index, bytearray object} {
- proc foo {} {string index [binary format I* {0x50515253 0x52}] 3}
- foo
-} S
-test stringComp-5.15 {string index, bytearray object} {
- proc foo {} {
- set b [binary format I* {0x50515253 0x52}]
- set i1 [string index $b end-6]
- set i2 [string index $b 1]
- string compare $i1 $i2
- }
- foo
-} 0
-test stringComp-5.16 {string index, bytearray object with string obj shimmering} {
- proc foo {} {
- set str "0123456789\x00 abcdedfghi"
- binary scan $str H* dump
- string compare [string index $str 10] \x00
- }
- foo
-} 0
-test stringComp-5.17 {string index, bad integer} -body {
- proc foo {} {string index "abc" 0o8}
- list [catch {foo} msg] $msg
-} -match glob -result {1 {*invalid octal number*}}
-test stringComp-5.18 {string index, bad integer} -body {
- proc foo {} {string index "abc" end-0o0289}
- list [catch {foo} msg] $msg
-} -match glob -result {1 {*invalid octal number*}}
-test stringComp-5.19 {string index, bytearray object out of bounds} {
- proc foo {} {string index [binary format I* {0x50515253 0x52}] -1}
- foo
-} {}
-test stringComp-5.20 {string index, bytearray object out of bounds} {
- proc foo {} {string index [binary format I* {0x50515253 0x52}] 20}
- foo
-} {}
-
-
-proc largest_int {} {
- # This will give us what the largest valid int on this machine is,
- # so we can test for overflow properly below on >32 bit systems
- set int 1
- set exp 7; # assume we get at least 8 bits
- while {$int > 0} { set int [expr {1 << [incr exp]}] }
- return [expr {$int-1}]
-}
-
-## string is
-## not yet bc
-
-catch {rename largest_int {}}
-
-## string last
-## not yet bc
-
-## string length
-## not yet bc
-test stringComp-8.1 {string bytelength} {
- proc foo {} {string bytelength}
- list [catch {foo} msg] $msg
-} {1 {wrong # args: should be "string bytelength string"}}
-test stringComp-8.2 {string bytelength} {
- proc foo {} {string bytelength a b}
- list [catch {foo} msg] $msg
-} {1 {wrong # args: should be "string bytelength string"}}
-test stringComp-8.3 {string bytelength} {
- proc foo {} {string bytelength "\u00c7"}
- foo
-} 2
-test stringComp-8.4 {string bytelength} {
- proc foo {} {string b ""}
- foo
-} 0
-
-## string length
-##
-test stringComp-9.1 {string length} {
- proc foo {} {string length}
- list [catch {foo} msg] $msg
-} {1 {wrong # args: should be "string length string"}}
-test stringComp-9.2 {string length} {
- proc foo {} {string length a b}
- list [catch {foo} msg] $msg
-} {1 {wrong # args: should be "string length string"}}
-test stringComp-9.3 {string length} {
- proc foo {} {string length "a little string"}
- foo
-} 15
-test stringComp-9.4 {string length} {
- proc foo {} {string le ""}
- foo
-} 0
-test stringComp-9.5 {string length, unicode} {
- proc foo {} {string le "abcd\u7266"}
- foo
-} 5
-test stringComp-9.6 {string length, bytearray object} {
- proc foo {} {string length [binary format a5 foo]}
- foo
-} 5
-test stringComp-9.7 {string length, bytearray object} {
- proc foo {} {string length [binary format I* {0x50515253 0x52}]}
- foo
-} 8
-
-## string map
-## not yet bc
-
-## string match
-##
-test stringComp-11.1 {string match, too few args} {
- proc foo {} {string match a}
- list [catch {foo} msg] $msg
-} {1 {wrong # args: should be "string match ?-nocase? pattern string"}}
-test stringComp-11.2 {string match, too many args} {
- proc foo {} {string match a b c d}
- list [catch {foo} msg] $msg
-} {1 {wrong # args: should be "string match ?-nocase? pattern string"}}
-test stringComp-11.3 {string match} {
- proc foo {} {string match abc abc}
- foo
-} 1
-test stringComp-11.4 {string match} {
- proc foo {} {string mat abc abd}
- foo
-} 0
-test stringComp-11.5 {string match} {
- proc foo {} {string match ab*c abc}
- foo
-} 1
-test stringComp-11.6 {string match} {
- proc foo {} {string match ab**c abc}
- foo
-} 1
-test stringComp-11.7 {string match} {
- proc foo {} {string match ab* abcdef}
- foo
-} 1
-test stringComp-11.8 {string match} {
- proc foo {} {string match *c abc}
- foo
-} 1
-test stringComp-11.9 {string match} {
- proc foo {} {string match *3*6*9 0123456789}
- foo
-} 1
-test stringComp-11.10 {string match} {
- proc foo {} {string match *3*6*9 01234567890}
- foo
-} 0
-test stringComp-11.11 {string match} {
- proc foo {} {string match a?c abc}
- foo
-} 1
-test stringComp-11.12 {string match} {
- proc foo {} {string match a??c abc}
- foo
-} 0
-test stringComp-11.13 {string match} {
- proc foo {} {string match ?1??4???8? 0123456789}
- foo
-} 1
-test stringComp-11.14 {string match} {
- proc foo {} {string match {[abc]bc} abc}
- foo
-} 1
-test stringComp-11.15 {string match} {
- proc foo {} {string match {a[abc]c} abc}
- foo
-} 1
-test stringComp-11.16 {string match} {
- proc foo {} {string match {a[xyz]c} abc}
- foo
-} 0
-test stringComp-11.17 {string match} {
- proc foo {} {string match {12[2-7]45} 12345}
- foo
-} 1
-test stringComp-11.18 {string match} {
- proc foo {} {string match {12[ab2-4cd]45} 12345}
- foo
-} 1
-test stringComp-11.19 {string match} {
- proc foo {} {string match {12[ab2-4cd]45} 12b45}
- foo
-} 1
-test stringComp-11.20 {string match} {
- proc foo {} {string match {12[ab2-4cd]45} 12d45}
- foo
-} 1
-test stringComp-11.21 {string match} {
- proc foo {} {string match {12[ab2-4cd]45} 12145}
- foo
-} 0
-test stringComp-11.22 {string match} {
- proc foo {} {string match {12[ab2-4cd]45} 12545}
- foo
-} 0
-test stringComp-11.23 {string match} {
- proc foo {} {string match {a\*b} a*b}
- foo
-} 1
-test stringComp-11.24 {string match} {
- proc foo {} {string match {a\*b} ab}
- foo
-} 0
-test stringComp-11.25 {string match} {
- proc foo {} {string match {a\*\?\[\]\\\x} "a*?\[\]\\x"}
- foo
-} 1
-test stringComp-11.26 {string match} {
- proc foo {} {string match ** ""}
- foo
-} 1
-test stringComp-11.27 {string match} {
- proc foo {} {string match *. ""}
- foo
-} 0
-test stringComp-11.28 {string match} {
- proc foo {} {string match "" ""}
- foo
-} 1
-test stringComp-11.29 {string match} {
- proc foo {} {string match \[a a}
- foo
-} 1
-test stringComp-11.30 {string match, bad args} {
- proc foo {} {string match - b c}
- list [catch {foo} msg] $msg
-} {1 {bad option "-": must be -nocase}}
-test stringComp-11.31 {string match case} {
- proc foo {} {string match a A}
- foo
-} 0
-test stringComp-11.32 {string match nocase} {
- proc foo {} {string match -n a A}
- foo
-} 1
-test stringComp-11.33 {string match nocase} {
- proc foo {} {string match -nocase a\334 A\374}
- foo
-} 1
-test stringComp-11.34 {string match nocase} {
- proc foo {} {string match -nocase a*f ABCDEf}
- foo
-} 1
-test stringComp-11.35 {string match case, false hope} {
- # This is true because '_' lies between the A-Z and a-z ranges
- proc foo {} {string match {[A-z]} _}
- foo
-} 1
-test stringComp-11.36 {string match nocase range} {
- # This is false because although '_' lies between the A-Z and a-z ranges,
- # we lower case the end points before checking the ranges.
- proc foo {} {string match -nocase {[A-z]} _}
- foo
-} 0
-test stringComp-11.37 {string match nocase} {
- proc foo {} {string match -nocase {[A-fh-Z]} g}
- foo
-} 0
-test stringComp-11.38 {string match case, reverse range} {
- proc foo {} {string match {[A-fh-Z]} g}
- foo
-} 1
-test stringComp-11.39 {string match, *\ case} {
- proc foo {} {string match {*\abc} abc}
- foo
-} 1
-test stringComp-11.40 {string match, *special case} {
- proc foo {} {string match {*[ab]} abc}
- foo
-} 0
-test stringComp-11.41 {string match, *special case} {
- proc foo {} {string match {*[ab]*} abc}
- foo
-} 1
-test stringComp-11.42 {string match, *special case} {
- proc foo {} {string match "*\\" "\\"}
- foo
-} 0
-test stringComp-11.43 {string match, *special case} {
- proc foo {} {string match "*\\\\" "\\"}
- foo
-} 1
-test stringComp-11.44 {string match, *special case} {
- proc foo {} {string match "*???" "12345"}
- foo
-} 1
-test stringComp-11.45 {string match, *special case} {
- proc foo {} {string match "*???" "12"}
- foo
-} 0
-test stringComp-11.46 {string match, *special case} {
- proc foo {} {string match "*\\*" "abc*"}
- foo
-} 1
-test stringComp-11.47 {string match, *special case} {
- proc foo {} {string match "*\\*" "*"}
- foo
-} 1
-test stringComp-11.48 {string match, *special case} {
- proc foo {} {string match "*\\*" "*abc"}
- foo
-} 0
-test stringComp-11.49 {string match, *special case} {
- proc foo {} {string match "?\\*" "a*"}
- foo
-} 1
-test stringComp-11.50 {string match, *special case} {
- proc foo {} {string match "\\" "\\"}
- foo
-} 0
-test stringComp-11.51 {string match; *, -nocase and UTF-8} {
- proc foo {} {string match -nocase [binary format I 717316707] \
- [binary format I 2028036707]}
- foo
-} 1
-test stringComp-11.52 {string match, null char in string} {
- proc foo {} {
- set ptn "*abc*"
- foreach elem [list "\u0000@abc" "@abc" "\u0000@abc\u0000" "blahabcblah"] {
- lappend out [string match $ptn $elem]
- }
- set out
- }
- foo
-} {1 1 1 1}
-test stringComp-11.53 {string match, null char in pattern} {
- proc foo {} {
- set out ""
- foreach {ptn elem} [list \
- "*\u0000abc\u0000" "\u0000abc\u0000" \
- "*\u0000abc\u0000" "\u0000abc\u0000ef" \
- "*\u0000abc\u0000*" "\u0000abc\u0000ef" \
- "*\u0000abc\u0000" "@\u0000abc\u0000ef" \
- "*\u0000abc\u0000*" "@\u0000abc\u0000ef" \
- ] {
- lappend out [string match $ptn $elem]
- }
- set out
- }
- foo
-} {1 0 1 0 1}
-test stringComp-11.54 {string match, failure} {
- proc foo {} {
- set longString ""
- for {set i 0} {$i < 10} {incr i} {
- append longString "abcdefghijklmnopqrstuvwxy\u0000z01234567890123"
- }
- list [string match *cba* $longString] \
- [string match *a*l*\u0000* $longString] \
- [string match *a*l*\u0000*123 $longString] \
- [string match *a*l*\u0000*123* $longString] \
- [string match *a*l*\u0000*cba* $longString] \
- [string match *===* $longString]
- }
- foo
-} {0 1 1 1 0 0}
-
-## string range
-test stringComp-12.1 {Bug 3588366: end-offsets before start} {
- apply {s {
- string range $s 0 end-5
- }} 12345
-} {}
-
-## string repeat
-## not yet bc
-
-## string replace
-test stringComp-14.1 {Bug 82e7f67325} {
- apply {x {
- set a [join $x {}]
- lappend b [string length [string replace ___! 0 2 $a]]
- lappend b [string length [string replace ___! 0 2 $a[unset a]]]
- }} {a b}
-} {3 3}
-test stringComp-14.2 {Bug 82e7f67325} memory {
- # As in stringComp-14.1, but make sure we don't retain too many refs
- leaktest {
- apply {x {
- set a [join $x {}]
- lappend b [string length [string replace ___! 0 2 $a]]
- lappend b [string length [string replace ___! 0 2 $a[unset a]]]
- }} {a b}
- }
-} {0}
-test stringComp-14.3 {Bug 0dca3bfa8f} {
- apply {arg {
- set argCopy $arg
- set arg [string replace $arg 1 2 aa]
- # Crashes in comparison before fix
- expr {$arg ne $argCopy}
- }} abcde
-} 1
-test stringComp-14.4 {Bug 1af8de570511} {
- apply {{x y} {
- # Generate an unshared string value
- set val ""
- for { set i 0 } { $i < $x } { incr i } {
- set val [format "0%s" $val]
- }
- string replace $val[unset val] 1 1 $y
- }} 4 x
-} 0x00
-test stringComp-14.5 {} {
- string length [string replace [string repeat a\u00fe 2] 3 end {}]
-} 3
-
-## string tolower
-## not yet bc
-
-## string toupper
-## not yet bc
-
-## string totitle
-## not yet bc
-
-## string trim*
-## not yet bc
-
-## string word*
-## not yet bc
-
-## string cat
-test stringComp-29.1 {string cat, no arg} {
- proc foo {} {string cat}
- foo
-} ""
-test stringComp-29.2 {string cat, single arg} {
- proc foo {} {
- set x FOO
- string compare $x [string cat $x]
- }
- foo
-} 0
-test stringComp-29.3 {string cat, two args} {
- proc foo {} {
- set x FOO
- string compare $x$x [string cat $x $x]
- }
- foo
-} 0
-test stringComp-29.4 {string cat, many args} {
- proc foo {} {
- set x FOO
- set n 260
- set xx [string repeat $x $n]
- set vv [string repeat {$x} $n]
- set vvs [string repeat {$x } $n]
- set r1 [string compare $xx [subst $vv]]
- set r2 [string compare $xx [eval "string cat $vvs"]]
- list $r1 $r2
- }
- foo
-} {0 0}
-
-
-# cleanup
-catch {rename foo {}}
-::tcltest::cleanupTests
-return
-
-# Local Variables:
-# mode: tcl
-# End:
diff --git a/tests/var.test b/tests/var.test
index 9816d98..7b7fc25 100644
--- a/tests/var.test
+++ b/tests/var.test
@@ -777,6 +777,22 @@ test var-13.1 {Tcl_UnsetVar2, unset array with trace set on element} -setup {
}
set x "If you see this, it worked"
} -result "If you see this, it worked"
+test var-13.2 {unset array with search, bug 46a2410650} -body {
+ apply {{} {
+ array set a {aa 11 bb 22 cc 33 dd 44 ee 55 ff 66}
+ set s [array startsearch a]
+ unset a([array nextelement a $s])
+ array nextelement a $s
+ }}
+} -returnCodes error -result {couldn't find search "s-1-a"}
+test var-13.3 {unset array with search, SIGSEGV, bug 46a2410650} -body {
+ apply {{} {
+ array set a {aa 11 bb 22 cc 33 dd 44 ee 55 ff 66}
+ set s [array startsearch a]
+ unset a(ff)
+ array nextelement a $s
+ }}
+} -returnCodes error -result {couldn't find search "s-1-a"}
test var-14.1 {array names syntax} -body {
array names foo bar baz snafu
@@ -820,6 +836,18 @@ test var-17.1 {TclArraySet [Bug 1669489]} -setup {
} -cleanup {
unset -nocomplain ::a ::elements
} -result {}
+test var-17.2 {TclArraySet Dict shortcut only on pure value} -setup {
+ unset -nocomplain a d
+ set d {p 1 p 2}
+ dict get $d p
+ set foo 0
+} -body {
+ trace add variable a write "[list incr [namespace which -variable foo]];#"
+ array set a $d
+ set foo
+} -cleanup {
+ unset -nocomplain a d foo
+} -result 2
test var-18.1 {array unset and unset traces: Bug 2939073} -setup {
set already 0
@@ -931,6 +959,28 @@ test var-20.9 {[bc1a96407a] array set compiled w/ trace} -setup {
test var-20.10 {[bc1a96407a] array set don't compile bad varname} -body {
apply {{} {set name foo(bar); array set $name {a 1}}}
} -returnCodes error -match glob -result *
+test var-20.11 {array set don't compile bad initializer} -setup {
+ unset -nocomplain foo
+ trace add variable foo array {set foo(bar) baz;#}
+} -body {
+ catch {array set foo bad}
+ set foo(bar)
+} -cleanup {
+ unset -nocomplain foo
+} -result baz
+test var-20.12 {array set don't compile bad initializer} -setup {
+ unset -nocomplain ::foo
+ trace add variable ::foo array {set ::foo(bar) baz;#}
+} -body {
+ catch {apply {{} {
+ set value bad
+ array set ::foo $value
+
+ }}}
+ set ::foo(bar)
+} -cleanup {
+ unset -nocomplain ::foo
+} -result baz
test var-21.0 {PushVarNameWord OBOE in compiled unset} -setup {
proc linenumber {} {dict get [info frame -1] line}
@@ -996,7 +1046,162 @@ test var-22.2 {leak in parsedVarName} -constraints memory -body {
} -cleanup {
unset -nocomplain i x
} -result 0
-
+
+unset -nocomplain a k v
+test var-23.1 {array command, for loop, too many args} -returnCodes error -body {
+ array for {k v} c d e {}
+} -result {wrong # args: should be "array for {key value} arrayName script"}
+test var-23.2 {array command, for loop, not enough args} -returnCodes error -body {
+ array for {k v} {}
+} -result {wrong # args: should be "array for {key value} arrayName script"}
+test var-23.3 {array command, for loop, too many list args} -setup {
+ unset -nocomplain a
+} -returnCodes error -body {
+ array for {k v w} a {}
+} -result {must have two variable names}
+test var-23.4 {array command, for loop, not enough list args} -setup {
+ unset -nocomplain a
+} -returnCodes error -body {
+ array for {k} a {}
+} -result {must have two variable names}
+test var-23.5 {array command, for loop, no array} -setup {
+ unset -nocomplain a
+} -returnCodes error -body {
+ array for {k v} a {}
+} -result {"a" isn't an array}
+test var-23.6 {array command, for loop, array doesn't exist yet but has compiler-allocated procedure slot} -setup {
+ catch {rename p ""}
+} -returnCodes error -body {
+ apply {{x} {
+ if {$x==1} {
+ return [array for {k v} a {}]
+ }
+ set a(x) 123
+ }} 1
+} -result {"a" isn't an array}
+test var-23.7 {array enumeration} -setup {
+ unset -nocomplain a
+ set reslist [list]
+} -body {
+ array set a {a 1 b 2 c 3}
+ array for {k v} a {
+ lappend reslist $k $v
+ }
+ lsort -stride 2 -index 0 $reslist
+} -cleanup {
+ unset -nocomplain a
+ unset -nocomplain reslist
+} -result {a 1 b 2 c 3}
+test var-23.9 {array enumeration, nested} -setup {
+ unset -nocomplain a
+ set reslist [list]
+} -body {
+ array set a {a 1 b 2 c 3}
+ array for {k1 v1} a {
+ lappend reslist $k1 $v1
+ set r2 {}
+ array for {k2 v2} a {
+ lappend r2 $k2 $v2
+ }
+ lappend reslist [lsort -stride 2 -index 0 $r2]
+ }
+ # there is no guarantee in which order the array contents will be
+ # returned.
+ lsort -stride 3 -index 0 $reslist
+} -cleanup {
+ unset -nocomplain a
+ unset -nocomplain reslist
+} -result {a 1 {a 1 b 2 c 3} b 2 {a 1 b 2 c 3} c 3 {a 1 b 2 c 3}}
+test var-23.10 {array enumeration, delete key} -match glob -setup {
+ unset -nocomplain a
+ set reslist [list]
+} -body {
+ set retval {}
+ try {
+ array set a {a 1 b 2 c 3 d 4}
+ array for {k v} a {
+ lappend reslist $k $v
+ if { $k eq "a" } {
+ unset a(c)
+ }
+ }
+ lsort -stride 2 -index 0 $reslist
+ } on error {err res} {
+ set retval [dict get $res -errorinfo]
+ }
+ set retval
+} -cleanup {
+ unset -nocomplain a
+ unset -nocomplain reslist
+ unset -nocomplain retval
+} -result {array changed during iteration*}
+test var-23.11 {array enumeration, insert key} -match glob -setup {
+ unset -nocomplain a
+ set reslist [list]
+} -body {
+ set retval {}
+ try {
+ array set a {a 1 b 2 c 3 d 4}
+ array for {k v} a {
+ lappend reslist $k $v
+ if { $k eq "a" } {
+ set a(e) 5
+ }
+ }
+ lsort -stride 2 -index 0 $reslist
+ } on error {err res} {
+ set retval [dict get $res -errorinfo]
+ }
+} -cleanup {
+ unset -nocomplain a
+ unset -nocomplain reslist
+} -result {array changed during iteration*}
+test var-23.12 {array enumeration, change value} -setup {
+ unset -nocomplain a
+ set reslist [list]
+} -body {
+ array set a {a 1 b 2 c 3}
+ array for {k v} a {
+ lappend reslist $k $v
+ if { $k eq "a" } {
+ set a(c) 9
+ }
+ }
+ lsort -stride 2 -index 0 $reslist
+} -cleanup {
+ unset -nocomplain a
+ unset -nocomplain reslist
+} -result {a 1 b 2 c 9}
+test var-23.13 {array enumeration, number of traces} -setup {
+ set ::countarrayfor 0
+ proc ::tracearrayfor { args } {
+ incr ::countarrayfor
+ }
+ unset -nocomplain ::a
+ set reslist [list]
+} -body {
+ array set ::a {a 1 b 2 c 3}
+ foreach {k} [array names a] {
+ trace add variable ::a($k) read ::tracearrayfor
+ }
+ array for {k v} ::a {
+ lappend reslist $k $v
+ }
+ set ::countarrayfor
+} -cleanup {
+ unset -nocomplain ::countarrayfor
+ unset -nocomplain ::a
+ unset -nocomplain reslist
+} -result 3
+test var-23.14 {array for, shared arguments} -setup {
+ set vn {k v}
+ unset -nocomplain $vn
+} -body {
+ array set $vn {a 1 b 2 c 3}
+ array for $vn $vn {}
+} -cleanup {
+ unset -nocomplain $vn vn
+} -result {}
catch {namespace delete ns}
catch {unset arr}