regexpcomp.test

来自「tcl是工具命令语言」· TEST 代码 · 共 824 行 · 第 1/2 页

TEST
824
字号
    }} {0 xaAAaAAay}test regexp-8.4 {case conversion in regsub} {    evalInProc {	set foo 123	list [regsub -nocase a CaDE b foo] $foo    }} {1 CbDE}test regexp-8.5 {case conversion in regsub} {    evalInProc {	set foo 123	list [regsub -nocase XYZ CxYzD b foo] $foo    }} {1 CbD}test regexp-8.6 {case conversion in regsub} {    evalInProc {	set x abcdefghijklmnopqrstuvwxyz1234567890	set x $x$x$x$x$x$x$x$x$x$x$x$x	set foo 123	list [regsub -nocase $x $x b foo] $foo    }} {1 b}test regexp-9.1 {-all option to regsub} {    evalInProc {	set foo 86	list [regsub -all x+ axxxbxxcxdx |&| foo] $foo    }} {4 a|xxx|b|xx|c|x|d|x|}test regexp-9.2 {-all option to regsub} {    evalInProc {	set foo 86	list [regsub -nocase -all x+ aXxXbxxcXdx |&| foo] $foo    }} {4 a|XxX|b|xx|c|X|d|x|}test regexp-9.3 {-all option to regsub} {    evalInProc {	set foo 86	list [regsub x+ axxxbxxcxdx |&| foo] $foo    }} {1 a|xxx|bxxcxdx}test regexp-9.4 {-all option to regsub} {    evalInProc {	set foo 86	list [regsub -all bc axxxbxxcxdx |&| foo] $foo    }} {0 axxxbxxcxdx}test regexp-9.5 {-all option to regsub} {    evalInProc {	set foo xxx	list [regsub -all node "node node more" yy foo] $foo    }} {2 {yy yy more}}test regexp-9.6 {-all option to regsub} {    evalInProc {	set foo xxx	list [regsub -all ^ xxx 123 foo] $foo    }} {1 123xxx}test regexp-10.1 {expanded syntax in regsub} {    evalInProc {	set foo xxx	list [regsub -expanded ". \#comment\n  . \#comment2" abc def foo] $foo    }} {1 defc}test regexp-10.2 {newline sensitivity in regsub} {    evalInProc {	set foo xxx	list [regsub -line {^a.*b$} "dabc\naxyb\n" 123 foo] $foo    }} "1 {dabc\n123\n}"test regexp-10.3 {newline sensitivity in regsub} {    evalInProc {	set foo xxx	list [regsub -line {^a.*b$} "dabc\naxyb\nxb" 123 foo] $foo    }} "1 {dabc\n123\nxb}"test regexp-10.4 {partial newline sensitivity in regsub} {    evalInProc {	set foo xxx	list [regsub -lineanchor {^a.*b$} "da\naxyb\nxb" 123 foo] $foo    }} "1 {da\n123}"test regexp-10.5 {inverse partial newline sensitivity in regsub} {    evalInProc {	set foo xxx	list [regsub -linestop {a.*b} "da\nbaxyb\nxb" 123 foo] $foo    }} "1 {da\nb123\nxb}"test regexp-11.1 {regsub errors} {    evalInProc {	list [catch {regsub a b} msg] $msg    }} {1 {wrong # args: should be "regsub ?switches? exp string subSpec ?varName?"}}test regexp-11.2 {regsub errors} {    evalInProc {	list [catch {regsub -nocase a b} msg] $msg    }} {1 {wrong # args: should be "regsub ?switches? exp string subSpec ?varName?"}}test regexp-11.3 {regsub errors} {    evalInProc {	list [catch {regsub -nocase -all a b} msg] $msg    }} {1 {wrong # args: should be "regsub ?switches? exp string subSpec ?varName?"}}test regexp-11.4 {regsub errors} {    evalInProc {	list [catch {regsub a b c d e f} msg] $msg    }} {1 {wrong # args: should be "regsub ?switches? exp string subSpec ?varName?"}}test regexp-11.5 {regsub errors} {    evalInProc {	list [catch {regsub -gorp a b c} msg] $msg    }} {1 {bad switch "-gorp": must be -all, -nocase, -expanded, -line, -linestop, -lineanchor, -start, or --}}test regexp-11.6 {regsub errors} {    evalInProc {	list [catch {regsub -nocase a( b c d} msg] $msg    }} {1 {couldn't compile regular expression pattern: parentheses () not balanced}}test regexp-11.7 {regsub errors} {    evalInProc {	catch {unset f1}	set f1 44	list [catch {regsub -nocase aaa aaa xxx f1(f2)} msg] $msg    }} {1 {couldn't set variable "f1(f2)"}}test regexp-11.8 {regsub errors, -start bad int check} {    evalInProc {	list [catch {regsub -start bogus pattern string rep var} msg] $msg    }} {1 {expected integer but got "bogus"}}# This test crashes on the Mac unless you increase the Stack Space to about 1# Meg.  This is probably bigger than most users want... # 8.2.3 regexp reduced stack space requirements, but this should be# tested againtest regexp-12.1 {Tcl_RegExpExec: large number of subexpressions} {macCrash} {    evalInProc {	list [regexp (.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)(.) abcdefghijklmnopqrstuvwxyz all a b c d e f g h i j k l m n o p q r s t u v w x y z] $all $a $b $c $d $e $f $g $h $i $j $k $l $m $n $o $p $q $r $s $t $u $v $w $x $y $z    }} {1 abcdefghijklmnopqrstuvwxyz a b c d e f g h i j k l m n o p q r s t u v w x y z}test regexp-13.1 {regsub of a very large string} {    # This test is designed to stress the memory subsystem in order    # to catch Bug #933.  It only fails if the Tcl memory allocator    # is in use.    set line {BEGIN_TABLE ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; END_TABLE}    set filedata [string repeat $line 200]    for {set i 1} {$i<10} {incr i} {	regsub -all "BEGIN_TABLE " $filedata "" newfiledata    }    set x done} {done}test regexp-14.1 {CompileRegexp: regexp cache} {    evalInProc {	regexp .*a b	regexp .*b c	regexp .*c d	regexp .*d e	regexp .*e f	set x .	append x *a	regexp $x bbba    }} 1test regexp-14.2 {CompileRegexp: regexp cache, different flags} {    evalInProc {	regexp .*a b	regexp .*b c	regexp .*c d	regexp .*d e	regexp .*e f	set x .	append x *a	regexp -nocase $x bbba    }} 1testConstraint exec [llength [info commands exec]]test regexp-14.3 {CompileRegexp: regexp cache, empty regexp and empty cache} {	exec} {    exec [interpreter] [makeFile {puts [regexp {} foo]} junk.tcl]} 1test regexp-15.1 {regexp -start} {    catch {unset x}    list [regexp -start -10 {\d} 1abc2de3 x] $x} {1 1}test regexp-15.2 {regexp -start} {    catch {unset x}    list [regexp -start 2 {\d} 1abc2de3 x] $x} {1 2}test regexp-15.3 {regexp -start} {    catch {unset x}    list [regexp -start 4 {\d} 1abc2de3 x] $x} {1 2}test regexp-15.4 {regexp -start} {    catch {unset x}    list [regexp -start 5 {\d} 1abc2de3 x] $x} {1 3}test regexp-15.5 {regexp -start, over end of string} {    catch {unset x}    list [regexp -start [string length 1abc2de3] {\d} 1abc2de3 x] [info exists x]} {0 0}test regexp-15.6 {regexp -start, loss of ^$ behavior} {    list [regexp -start 2 {^$} {}]} {0}test regexp-16.1 {regsub -start} {    catch {unset x}    list [regsub -all -start 2 {\d} a1b2c3d4e5 {/&} x] $x} {4 a1b/2c/3d/4e/5}test regexp-16.2 {regsub -start} {    catch {unset x}    list [regsub -all -start -25 {z} hello {/&} x] $x} {0 hello}test regexp-16.3 {regsub -start} {    catch {unset x}    list [regsub -all -start 3 {z} hello {/&} x] $x} {0 hello}test regexp-16.4 {regsub -start, \A behavior} {    set out {}    lappend out [regsub -start 0 -all {\A(\w)} {abcde} {/\1} x] $x    lappend out [regsub -start 2 -all {\A(\w)} {abcde} {/\1} x] $x} {5 /a/b/c/d/e 3 ab/c/d/e}test regexp-17.1 {regexp -inline} {    regexp -inline b ababa} {b}test regexp-17.2 {regexp -inline} {    regexp -inline (b) ababa} {b b}test regexp-17.3 {regexp -inline -indices} {    regexp -inline -indices (b) ababa} {{1 1} {1 1}}test regexp-17.4 {regexp -inline} {    regexp -inline {\w(\d+)\w} "   hello 23 there456def "} {e456d 456}test regexp-17.5 {regexp -inline no matches} {    regexp -inline {\w(\d+)\w} ""} {}test regexp-17.6 {regexp -inline no matches} {    regexp -inline hello goodbye} {}test regexp-17.7 {regexp -inline, no matchvars allowed} {    list [catch {regexp -inline b abc match} msg] $msg} {1 {regexp match variables not allowed when using -inline}}test regexp-18.1 {regexp -all} {    regexp -all b bbbbb} {5}test regexp-18.2 {regexp -all} {    regexp -all b abababbabaaaaaaaaaab} {6}test regexp-18.3 {regexp -all -inline} {    regexp -all -inline b abababbabaaaaaaaaaab} {b b b b b b}test regexp-18.4 {regexp -all -inline} {    regexp -all -inline {\w(\w)} abcdefg} {ab b cd d ef f}test regexp-18.5 {regexp -all -inline} {    regexp -all -inline {\w(\w)$} abcdefg} {fg g}test regexp-18.6 {regexp -all -inline} {    regexp -all -inline {\d+} 10:20:30:40} {10 20 30 40}test regexp-18.7 {regexp -all -inline} {    list [catch {regexp -all -inline b abc match} msg] $msg} {1 {regexp match variables not allowed when using -inline}}test regexp-18.8 {regexp -all} {    # This should not cause an infinite loop    regexp -all -inline {a*} a} {a}test regexp-18.9 {regexp -all} {    # Yes, the expected result is {a {}}.  Here's why:    # Start at index 0; a* matches the "a" there then stops.    # Go to index 1; a* matches the lambda (or {}) there then stops.  Recall    #   that a* matches zero or more "a"'s; thus it matches the string "b", as    #   there are zero or more "a"'s there.    # Go to index 2; this is past the end of the string, so stop.    regexp -all -inline {a*} ab} {a {}}test regexp-18.10 {regexp -all} {    # Yes, the expected result is {a {} a}.  Here's why:    # Start at index 0; a* matches the "a" there then stops.    # Go to index 1; a* matches the lambda (or {}) there then stops.   Recall    #   that a* matches zero or more "a"'s; thus it matches the string "b", as    #   there are zero or more "a"'s there.    # Go to index 2; a* matches the "a" there then stops.    # Go to index 3; this is past the end of the string, so stop.    regexp -all -inline {a*} aba} {a {} a}test regexp-18.11 {regexp -all} {    evalInProc {	regexp -all -inline {^a} aaaa    }} {a}test regexp-18.12 {regexp -all -inline -indices} {    evalInProc {	regexp -all -inline -indices a(b(c)d|e(f)g)h abcdhaefgh    }} {{0 4} {1 3} {2 2} {-1 -1} {5 9} {6 8} {-1 -1} {7 7}}test regexp-19.1 {regsub null replacement} {    evalInProc {	regsub -all {@} {@hel@lo@} "\0a\0" result	list $result [string length $result]    }} "\0a\0hel\0a\0lo\0a\0 14"test regexp-20.1 {regsub shared object shimmering} {    evalInProc {	# Bug #461322	set a abcdefghijklmnopqurstuvwxyz 	set b $a 	set c abcdefghijklmnopqurstuvwxyz0123456789 	regsub $a $c $b d 	list $d [string length $d] [string bytelength $d]    }} [list abcdefghijklmnopqurstuvwxyz0123456789 37 37]test regexp-20.2 {regsub shared object shimmering with -about} {    evalInProc {	eval regexp -about abc    }} {0 {}}test regexp-21.1 {regexp command compiling tests} {    evalInProc {	regexp foo bar    }} 0test regexp-21.2 {regexp command compiling tests} {    evalInProc {	regexp {^foo$} dogfood    }} 0test regexp-21.3 {regexp command compiling tests} {    evalInProc {	set a foo	regexp {^foo$} $a    }} 1test regexp-21.4 {regexp command compiling tests} {    evalInProc {	regexp foo dogfood    }} 1test regexp-21.5 {regexp command compiling tests} {    evalInProc {	regexp -nocase FOO dogfod    }} 0test regexp-21.6 {regexp command compiling tests} {    evalInProc {	regexp -n foo dogfoOd    }} 1test regexp-21.7 {regexp command compiling tests} {    evalInProc {	regexp -no -- FoO dogfood    }} 1test regexp-21.8 {regexp command compiling tests} {    evalInProc {	regexp -- foo dogfod    }} 0test regexp-21.9 {regexp command compiling tests} {    evalInProc {	list [catch {regexp -- -nocase foo dogfod} msg] $msg    }} {0 0}test regexp-21.10 {regexp command compiling tests} {    evalInProc {	list [regsub -all "" foo bar str] $str    }} {3 barfbarobaro}test regexp-21.11 {regexp command compiling tests} {    evalInProc {	list [regsub -all "" "" bar str] $str    }} {0 {}}set i 0foreach {str exp result} {    foo		^foo		1    foobar	^foobar$	1    foobar	bar$		1    foobar	^$		0    ""		^$		1    anything	$		1    anything	^.*$		1    anything	^.*a$		0    anything	^.*a.*$		1    anything	^.*.*$		1    anything	^.*..*$		1    anything	^.*b$		0    anything	^a.*$		1} {    test regexp-22.[incr i] {regexp command compiling tests} \	     [subst {evalInProc {set a "$str"; regexp {$exp} \$a}}] $result}# cleanup::tcltest::cleanupTestsreturn

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?