stringcomp.test
来自「tcl是工具命令语言」· TEST 代码 · 共 720 行 · 第 1/2 页
TEST
720 行
# 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.## RCS: @(#) $Id: stringComp.test,v 1.6 2003/02/18 02:25:45 hobbs Exp $if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest namespace import -force ::tcltest::*}# Some tests require the testobj commandset ::tcltest::testConstraints(testobj) \ [expr {[info commands testobj] != {}}]test string-1.1 {error conditions} { proc foo {} {string gorp a b} list [catch {foo} msg] $msg} {1 {bad option "gorp": must be bytelength, compare, equal, first, index, is, last, length, map, match, range, repeat, replace, tolower, toupper, totitle, trim, trimleft, trimright, wordend, or wordstart}}test string-1.2 {error conditions} { proc foo {} {string} list [catch {foo} msg] $msg} {1 {wrong # args: should be "string option arg ?arg ...?"}}test string-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} atest string-2.1 {string compare, too few args} { proc foo {} {string compare a} list [catch {foo} msg] $msg} {1 {wrong # args: should be "string compare ?-nocase? ?-length int? string1 string2"}}test string-2.2 {string compare, bad args} { proc foo {} {string compare a b c} list [catch {foo} 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} {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} {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} {1 {wrong # args: should be "string compare ?-nocase? ?-length int? string1 string2"}}test string-2.6 {string compare} { proc foo {} {string compare abcde abdef} foo} -1test string-2.7 {string compare, shortest method name} { proc foo {} {string c abcde ABCDE} foo} 1test string-2.8 {string compare} { proc foo {} {string compare abcde abcde} foo} 0test string-2.9 {string compare with length} { proc foo {} {string compare -length 2 abcde abxyz} foo} 0test string-2.10 {string compare with special index} { proc foo {} {string compare -length end-3 abcde abxyz} list [catch {foo} msg] $msg} {1 {expected integer but got "end-3"}}test string-2.11 {string compare, unicode} { proc foo {} {string compare ab\u7266 ab\u7267} foo} -1test string-2.12 {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) proc foo {} {string compare "\x80" "@"} foo # 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.} 1test string-2.13 {string compare -nocase} { proc foo {} {string compare -nocase abcde abdef} foo} -1test string-2.14 {string compare -nocase} { proc foo {} {string c -nocase abcde ABCDE} foo} 0test string-2.15 {string compare -nocase} { proc foo {} {string compare -nocase abcde abcde} foo} 0test string-2.16 {string compare -nocase with length} { proc foo {} {string compare -length 2 -nocase abcde Abxyz} foo} 0test string-2.17 {string compare -nocase with length} { proc foo {} {string compare -nocase -length 3 abcde Abxyz} foo} -1test string-2.18 {string compare -nocase with length <= 0} { proc foo {} {string compare -nocase -length -1 abcde AbCdEf} foo} -1test string-2.19 {string compare -nocase with excessive length} { proc foo {} {string compare -nocase -length 50 AbCdEf abcde} foo} 1test string-2.20 {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 proc foo {} {string compare -len 5 \334\334\334 \334\334\374} foo} -1test string-2.21 {string compare -nocase with special index} { proc foo {} {string compare -nocase -length end-3 Abcde abxyz} list [catch {foo} msg] $msg} {1 {expected integer but got "end-3"}}test string-2.22 {string compare, null strings} { proc foo {} {string compare "" ""} foo} 0test string-2.23 {string compare, null strings} { proc foo {} {string compare "" foo} foo} -1test string-2.24 {string compare, null strings} { proc foo {} {string compare foo ""} foo} 1test string-2.25 {string compare -nocase, null strings} { proc foo {} {string compare -nocase "" ""} foo} 0test string-2.26 {string compare -nocase, null strings} { proc foo {} {string compare -nocase "" foo} foo} -1test string-2.27 {string compare -nocase, null strings} { proc foo {} {string compare -nocase foo ""} foo} 1test string-2.28 {string compare with length, unequal strings} { proc foo {} {string compare -length 2 abc abde} foo} 0test string-2.29 {string compare with length, unequal strings} { proc foo {} {string compare -length 2 ab abde} foo} 0test string-2.30 {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 proc foo {} {string compare \x00 \x01} foo} -1test string-2.31 {string compare, high bit} { proc foo {} {string compare "a\x80" "a@"} foo} 1test string-2.32 {string compare, high bit} { proc foo {} {string compare "a\x00" "a\x01"} foo} -1test string-2.33 {string compare, high bit} { proc foo {} {string compare "\x00\x00" "\x00\x01"} foo} -1# only need a few tests on equal, since it uses the same code as# string compare, but just modifies the return outputtest string-3.1 {string equal} { proc foo {} {string equal abcde abdef} foo} 0test string-3.2 {string equal} { proc foo {} {string eq abcde ABCDE} foo} 0test string-3.3 {string equal} { proc foo {} {string equal abcde abcde} foo} 1test string-3.4 {string equal -nocase} { proc foo {} {string equal -nocase \334\334\334\334\374\374\374\374 \334\334\334\334\334\334\334\334} foo} 1test string-3.5 {string equal -nocase} { proc foo {} {string equal -nocase abcde abdef} foo} 0test string-3.6 {string equal -nocase} { proc foo {} {string eq -nocase abcde ABCDE} foo} 1test string-3.7 {string equal -nocase} { proc foo {} {string equal -nocase abcde abcde} foo} 1test string-3.8 {string equal with length, unequal strings} { proc foo {} {string equal -length 2 abc abde} foo} 1test string-4.1 {string first, too few args} { proc foo {} {string first a} list [catch {foo} msg] $msg} {1 {wrong # args: should be "string first subString string ?startIndex?"}}test string-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 or end?-integer?}}test string-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 subString string ?startIndex?"}}test string-4.4 {string first} { proc foo {} {string first bq abcdefgbcefgbqrs} foo} 12test string-4.5 {string first} { proc foo {} {string fir bcd abcdefgbcefgbqrs} foo} 1test string-4.6 {string first} { proc foo {} {string f b abcdefgbcefgbqrs} foo} 1test string-4.7 {string first} { proc foo {} {string first xxx x123xx345xxx789xxx012} foo} 9test string-4.8 {string first} { proc foo {} {string first "" x123xx345xxx789xxx012} foo} -1test string-4.9 {string first, unicode} { proc foo {} {string first x abc\u7266x} foo} 4test string-4.10 {string first, unicode} { proc foo {} {string first \u7266 abc\u7266x} foo} 3test string-4.11 {string first, start index} { proc foo {} {string first \u7266 abc\u7266x 3} foo} 3test string-4.12 {string first, start index} { proc foo {} {string first \u7266 abc\u7266x 4} foo} -1test string-4.13 {string first, start index} { proc foo {} {string first \u7266 abc\u7266x end-2} foo} 3test string-4.14 {string first, negative start index} { proc foo {} {string first b abc -1} foo} 1test string-5.1 {string index} { proc foo {} {string index} list [catch {foo} msg] $msg} {1 {wrong # args: should be "string index string charIndex"}}test string-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 string-5.3 {string index} { proc foo {} {string index abcde 0} foo} atest string-5.4 {string index} { proc foo {} {string in abcde 4} foo} etest string-5.5 {string index} { proc foo {} {string index abcde 5} foo} {}test string-5.6 {string index} { proc foo {} {string index abcde -10} list [catch {foo} msg] $msg} {0 {}}test string-5.7 {string index} { proc foo {} {string index a xyz} list [catch {foo} msg] $msg} {1 {bad index "xyz": must be integer or end?-integer?}}test string-5.8 {string index} { proc foo {} {string index abc end} foo} ctest string-5.9 {string index} { proc foo {} {string index abc end-1} foo} btest string-5.10 {string index, unicode} { proc foo {} {string index abc\u7266d 4} foo} dtest string-5.11 {string index, unicode} { proc foo {} {string index abc\u7266d 3} foo} \u7266test string-5.12 {string index, unicode over char length, under byte length} { proc foo {} {string index \334\374\334\374 6} foo} {}test string-5.13 {string index, bytearray object} { proc foo {} {string index [binary format a5 fuz] 0} foo} ftest string-5.14 {string index, bytearray object} { proc foo {} {string index [binary format I* {0x50515253 0x52}] 3} foo} Stest string-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} 0test string-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} 0test string-5.17 {string index, bad integer} { proc foo {} {string index "abc" 08} list [catch {foo} msg] $msg} {1 {bad index "08": must be integer or end?-integer? (looks like invalid octal number)}}test string-5.18 {string index, bad integer} { proc foo {} {string index "abc" end-00289} list [catch {foo} msg] $msg} {1 {bad index "end-00289": must be integer or end?-integer? (looks like invalid octal number)}}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?