⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 parse.test

📁 tcl是工具命令语言
💻 TEST
📖 第 1 页 / 共 3 页
字号:
# This file contains a collection of tests for the procedures in the# file tclParse.c.  Sourcing this file into Tcl runs the tests and# generates output for errors.  No output means no errors were found.## Copyright (c) 1997 Sun Microsystems, Inc.# Copyright (c) 1998-1999 by Scriptics Corporation.## See the file "license.terms" for information on usage and redistribution# of this file, and for a DISCLAIMER OF ALL WARRANTIES.## RCS: @(#) $Id: parse.test,v 1.11 2003/02/16 01:36:32 msofer Exp $if {[lsearch [namespace children] ::tcltest] == -1} {    package require tcltest    namespace import -force ::tcltest::*}if {[info commands testparser] == {}} {    puts "This application hasn't been compiled with the \"testparser\""    puts "command, so I can't test the Tcl parser."    ::tcltest::cleanupTests    return }test parse-1.1 {Tcl_ParseCommand procedure, computing string length} {    testparser [bytestring "foo\0 bar"] -1} {- foo 1 simple foo 1 text foo 0 {}}test parse-1.2 {Tcl_ParseCommand procedure, computing string length} {    testparser "foo bar" -1} {- {foo bar} 2 simple foo 1 text foo 0 simple bar 1 text bar 0 {}}test parse-1.3 {Tcl_ParseCommand procedure, leading space} {    testparser "  \n\t   foo" 0} {- foo 1 simple foo 1 text foo 0 {}}test parse-1.4 {Tcl_ParseCommand procedure, leading space} {    testparser "\f\r\vfoo" 0} {- foo 1 simple foo 1 text foo 0 {}}test parse-1.5 {Tcl_ParseCommand procedure, backslash-newline in leading space} {    testparser "  \\\n foo" 0} {- foo 1 simple foo 1 text foo 0 {}}test parse-1.6 {Tcl_ParseCommand procedure, backslash-newline in leading space} {    testparser {  \a foo} 0} {- {\a foo} 2 word {\a} 1 backslash {\a} 0 simple foo 1 text foo 0 {}}test parse-1.7 {Tcl_ParseCommand procedure, missing continuation line in leading space} {    testparser "   \\\n" 0} {- {} 0 {}}test parse-1.8 {Tcl_ParseCommand procedure, eof in leading space} {    testparser "      foo" 3} {- {} 0 {   foo}}test parse-2.1 {Tcl_ParseCommand procedure, comments} {    testparser "# foo bar\n foo" 0} {{# foo bar} foo 1 simple foo 1 text foo 0 {}}test parse-2.2 {Tcl_ParseCommand procedure, several comments} {    testparser " # foo bar\n # another comment\n\n   foo" 0} {{# foo bar # another comment} foo 1 simple foo 1 text foo 0 {}}test parse-2.3 {Tcl_ParseCommand procedure, backslash-newline in comments} {    testparser " # foo bar\\\ncomment on continuation line\nfoo" 0} {#\ foo\ bar\\\ncomment\ on\ continuation\ line\n foo 1 simple foo 1 text foo 0 {}}test parse-2.4 {Tcl_ParseCommand procedure, missing continuation line in comment} {    testparser "#   \\\n" 0} {#\ \ \ \\\n {} 0 {}}test parse-2.5 {Tcl_ParseCommand procedure, eof in comment} {    testparser " # foo bar\nfoo" 8} {{# foo b} {} 0 {arfoo}}test parse-3.1 {Tcl_ParseCommand procedure, parsing words, skipping space} {    testparser "foo  bar\t\tx" 0} {- {foo  bar		x} 3 simple foo 1 text foo 0 simple bar 1 text bar 0 simple x 1 text x 0 {}}test parse-3.2 {Tcl_ParseCommand procedure, missing continuation line in leading space} {    testparser "abc  \\\n" 0} {- abc\ \ \\\n 1 simple abc 1 text abc 0 {}}test parse-3.3 {Tcl_ParseCommand procedure, parsing words, command ends in space} {    testparser "foo  ;  bar x" 0} {- {foo  ;} 1 simple foo 1 text foo 0 {  bar x}}test parse-3.4 {Tcl_ParseCommand procedure, parsing words, command ends in space} {    testparser "foo       " 5} {- {foo  } 1 simple foo 1 text foo 0 {     }}test parse-3.5 {Tcl_ParseCommand procedure, quoted words} {    testparser {foo "a b c" d "efg";} 0} {- {foo "a b c" d "efg";} 4 simple foo 1 text foo 0 simple {"a b c"} 1 text {a b c} 0 simple d 1 text d 0 simple {"efg"} 1 text efg 0 {}}test parse-3.6 {Tcl_ParseCommand procedure, words in braces} {    testparser {foo {a $b [concat foo]} {c d}} 0} {- {foo {a $b [concat foo]} {c d}} 3 simple foo 1 text foo 0 simple {{a $b [concat foo]}} 1 text {a $b [concat foo]} 0 simple {{c d}} 1 text {c d} 0 {}}test parse-3.7 {Tcl_ParseCommand procedure, error in unquoted word} {    list [catch {testparser "foo \$\{abc" 0} msg] $msg $errorInfo} {1 {missing close-brace for variable name} missing\ close-brace\ for\ variable\ name\n\ \ \ \ (remainder\ of\ script:\ \"\{abc\")\n\ \ \ \ invoked\ from\ within\n\"testparser\ \"foo\ \\\$\\\{abc\"\ 0\"}test parse-4.1 {Tcl_ParseCommand procedure, simple words} {    testparser {foo} 0} {- foo 1 simple foo 1 text foo 0 {}}test parse-4.2 {Tcl_ParseCommand procedure, simple words} {    testparser {{abc}} 0} {- {{abc}} 1 simple {{abc}} 1 text abc 0 {}}test parse-4.3 {Tcl_ParseCommand procedure, simple words} {    testparser {"c d"} 0} {- {"c d"} 1 simple {"c d"} 1 text {c d} 0 {}}test parse-4.4 {Tcl_ParseCommand procedure, simple words} {    testparser {x$d} 0} {- {x$d} 1 word {x$d} 3 text x 0 variable {$d} 1 text d 0 {}}test parse-4.5 {Tcl_ParseCommand procedure, simple words} {    testparser {"a [foo] b"} 0} {- {"a [foo] b"} 1 word {"a [foo] b"} 3 text {a } 0 command {[foo]} 0 text { b} 0 {}}test parse-4.6 {Tcl_ParseCommand procedure, simple words} {    testparser {$x} 0} {- {$x} 1 word {$x} 2 variable {$x} 1 text x 0 {}}test parse-5.1 {Tcl_ParseCommand procedure, backslash-newline terminates word} {    testparser "{abc}\\\n" 0} {- \{abc\}\\\n 1 simple {{abc}} 1 text abc 0 {}}test parse-5.2 {Tcl_ParseCommand procedure, backslash-newline terminates word} {    testparser "foo\\\nbar" 0} {- foo\\\nbar 2 simple foo 1 text foo 0 simple bar 1 text bar 0 {}}test parse-5.3 {Tcl_ParseCommand procedure, word terminator is command terminator} {    testparser "foo\n bar" 0} {- {foo} 1 simple foo 1 text foo 0 { bar}}test parse-5.4 {Tcl_ParseCommand procedure, word terminator is command terminator} {    testparser "foo; bar" 0} {- {foo;} 1 simple foo 1 text foo 0 { bar}}test parse-5.5 {Tcl_ParseCommand procedure, word terminator is end of string} {    testparser "\"foo\" bar" 5} {- {"foo"} 1 simple {"foo"} 1 text foo 0 { bar}}test parse-5.6 {Tcl_ParseCommand procedure, junk after close quote} {    list [catch {testparser {foo "bar"x} 0} msg] $msg $errorInfo} {1 {extra characters after close-quote} {extra characters after close-quote    (remainder of script: "x")    invoked from within"testparser {foo "bar"x} 0"}}test parse-5.7 {Tcl_ParseCommand procedure, backslash-newline after close quote} {    testparser "foo \"bar\"\\\nx" 0} {- foo\ \"bar\"\\\nx 3 simple foo 1 text foo 0 simple {"bar"} 1 text bar 0 simple x 1 text x 0 {}}test parse-5.8 {Tcl_ParseCommand procedure, junk after close brace} {    list [catch {testparser {foo {bar}x} 0} msg] $msg $errorInfo} {1 {extra characters after close-brace} {extra characters after close-brace    (remainder of script: "x")    invoked from within"testparser {foo {bar}x} 0"}}test parse-5.9 {Tcl_ParseCommand procedure, backslash-newline after close brace} {    testparser "foo {bar}\\\nx" 0} {- foo\ \{bar\}\\\nx 3 simple foo 1 text foo 0 simple {{bar}} 1 text bar 0 simple x 1 text x 0 {}}test parse-5.10 {Tcl_ParseCommand procedure, multiple deletion of non-static buffer} {    # This test is designed to catch bug 1681.    list [catch {testparser "a \"\\1\\2\\3\\4\\5\\6\\7\\8\\9\\1\\2\\3\\4\\5\\6\\7\\8" 0} msg] $msg $errorInfo} "1 {missing \"} {missing \"    (remainder of script: \"\"\\1\\2\\3\\4\\5\\6\\7\\8\\9\\1\\2\\3\\4\\5\\6\\7\\8\")    invoked from within\"testparser \"a \\\"\\\\1\\\\2\\\\3\\\\4\\\\5\\\\6\\\\7\\\\8\\\\9\\\\1\\\\2\\\\3\\\\4\\\\5\\\\6\\\\7\\\\8\" 0\"}"test parse-6.1 {ParseTokens procedure, empty word} {    testparser {""} 0} {- {""} 1 simple {""} 1 text {} 0 {}}test parse-6.2 {ParseTokens procedure, simple range} {    testparser {"abc$x.e"} 0} {- {"abc$x.e"} 1 word {"abc$x.e"} 4 text abc 0 variable {$x} 1 text x 0 text .e 0 {}}test parse-6.3 {ParseTokens procedure, variable reference} {    testparser {abc$x.e $y(z)} 0} {- {abc$x.e $y(z)} 2 word {abc$x.e} 4 text abc 0 variable {$x} 1 text x 0 text .e 0 word {$y(z)} 3 variable {$y(z)} 2 text y 0 text z 0 {}}test parse-6.4 {ParseTokens procedure, variable reference} {    list [catch {testparser {$x([a )} 0} msg] $msg} {1 {missing close-bracket}}test parse-6.5 {ParseTokens procedure, command substitution} {    testparser {[foo $x bar]z} 0} {- {[foo $x bar]z} 1 word {[foo $x bar]z} 2 command {[foo $x bar]} 0 text z 0 {}}test parse-6.6 {ParseTokens procedure, command substitution} {    testparser {[foo \] [a b]]} 0} {- {[foo \] [a b]]} 1 word {[foo \] [a b]]} 1 command {[foo \] [a b]]} 0 {}}test parse-6.7 {ParseTokens procedure, error in command substitution} {    list [catch {testparser {a [b {}c d] e} 0} msg] $msg $errorInfo} {1 {extra characters after close-brace} {extra characters after close-brace    (remainder of script: "c d] e")    invoked from within"testparser {a [b {}c d] e} 0"}}test parse-6.8 {ParseTokens procedure, error in command substitution} {    info complete {a [b {}c d]}} {1}test parse-6.9 {ParseTokens procedure, error in command substitution} {    info complete {a [b "c d}} {0}test parse-6.10 {ParseTokens procedure, incomplete sub-command} {    info complete {puts [	expr 1+1	#this is a comment ]}} {0}test parse-6.11 {ParseTokens procedure, memory allocation for big nested command} {    testparser {[$a(b) $a(b) $a(b) $a(b) $a(b) $a(b) $a(b) $a(b) $a(b) $a(b) $a(b) $a(b) $a(b) $a(b) $a(b) $a(b)]} 0} {- {[$a(b) $a(b) $a(b) $a(b) $a(b) $a(b) $a(b) $a(b) $a(b) $a(b) $a(b) $a(b) $a(b) $a(b) $a(b) $a(b)]} 1 word {[$a(b) $a(b) $a(b) $a(b) $a(b) $a(b) $a(b) $a(b) $a(b) $a(b) $a(b) $a(b) $a(b) $a(b) $a(b) $a(b)]} 1 command {[$a(b) $a(b) $a(b) $a(b) $a(b) $a(b) $a(b) $a(b) $a(b) $a(b) $a(b) $a(b) $a(b) $a(b) $a(b) $a(b)]} 0 {}}test parse-6.12 {ParseTokens procedure, missing close bracket} {    list [catch {testparser {[foo $x bar} 0} msg] $msg $errorInfo} {1 {missing close-bracket} {missing close-bracket    (remainder of script: "[foo $x bar")    invoked from within"testparser {[foo $x bar} 0"}}test parse-6.13 {ParseTokens procedure, backslash-newline without continuation line} {    list [catch {testparser "\"a b\\\n" 0} msg] $msg $errorInfo} {1 {missing "} missing\ \"\n\ \ \ \ (remainder\ of\ script:\ \"\"a\ b\\\n\")\n\ \ \ \ invoked\ from\ within\n\"testparser\ \"\\\"a\ b\\\\\\n\"\ 0\"}test parse-6.14 {ParseTokens procedure, backslash-newline} {    testparser "b\\\nc" 0} {- b\\\nc 2 simple b 1 text b 0 simple c 1 text c 0 {}}test parse-6.15 {ParseTokens procedure, backslash-newline} {    testparser "\"b\\\nc\"" 0} {- \"b\\\nc\" 1 word \"b\\\nc\" 3 text b 0 backslash \\\n 0 text c 0 {}}test parse-6.16 {ParseTokens procedure, backslash substitution} {    testparser {\n\a\x7f} 0} {- {\n\a\x7f} 1 word {\n\a\x7f} 3 backslash {\n} 0 backslash {\a} 0 backslash {\x7f} 0 {}}test parse-6.17 {ParseTokens procedure, null characters} {    testparser [bytestring "foo\0zz"] 0} "- [bytestring foo\0zz] 1 word [bytestring foo\0zz] 3 text foo 0 text [bytestring \0] 0 text zz 0 {}"test parse-6.18 {ParseTokens procedure, seek past numBytes for close-bracket} {    # Test for Bug 681841    list [catch {testparser {[a]} 2} msg] $msg} {1 {missing close-bracket}}test parse-7.1 {Tcl_FreeParse and ExpandTokenArray procedures} {    testparser {$a(b) $a(b) $a(b) $a(b) $a(b) $a(b) $a(b) $a(b) $a(b) $a(b) $a(b) $a(b) $a(b) $a(b) $a(b) $a(b) } 0} {- {$a(b) $a(b) $a(b) $a(b) $a(b) $a(b) $a(b) $a(b) $a(b) $a(b) $a(b) $a(b) $a(b) $a(b) $a(b) $a(b) } 16 word {$a(b)} 3 variable {$a(b)} 2 text a 0 text b 0 word {$a(b)} 3 variable {$a(b)} 2 text a 0 text b 0 word {$a(b)} 3 variable {$a(b)} 2 text a 0 text b 0 word {$a(b)} 3 variable {$a(b)} 2 text a 0 text b 0 word {$a(b)} 3 variable {$a(b)} 2 text a 0 text b 0 word {$a(b)} 3 variable {$a(b)} 2 text a 0 text b 0 word {$a(b)} 3 variable {$a(b)} 2 text a 0 text b 0 word {$a(b)} 3 variable {$a(b)} 2 text a 0 text b 0 word {$a(b)} 3 variable {$a(b)} 2 text a 0 text b 0 word {$a(b)} 3 variable {$a(b)} 2 text a 0 text b 0 word {$a(b)} 3 variable {$a(b)} 2 text a 0 text b 0 word {$a(b)} 3 variable {$a(b)} 2 text a 0 text b 0 word {$a(b)} 3 variable {$a(b)} 2 text a 0 text b 0 word {$a(b)} 3 variable {$a(b)} 2 text a 0 text b 0 word {$a(b)} 3 variable {$a(b)} 2 text a 0 text b 0 word {$a(b)} 3 variable {$a(b)} 2 text a 0 text b 0 {}}test parse-8.1 {Tcl_EvalObjv procedure} {    testevalobjv 0 concat this is a test} {this is a test}test parse-8.2 {Tcl_EvalObjv procedure, unknown commands} {    rename unknown unknown.old    set x [catch {testevalobjv 10 asdf poiu} msg]    rename unknown.old unknown    list $x $msg} {1 {invalid command name "asdf"}}test parse-8.3 {Tcl_EvalObjv procedure, unknown commands} {    rename unknown unknown.old    proc unknown args {	return "unknown $args"    }    set x [catch {testevalobjv 0 asdf poiu} msg]    rename unknown {}    rename unknown.old unknown    list $x $msg} {0 {unknown asdf poiu}}test parse-8.4 {Tcl_EvalObjv procedure, unknown commands} {    rename unknown unknown.old    proc unknown args {	error "I don't like that command"    }    set x [catch {testevalobjv 0 asdf poiu} msg]    rename unknown {}    rename unknown.old unknown    list $x $msg} {1 {I don't like that command}}test parse-8.5 {Tcl_EvalObjv procedure, command traces} {    testevalobjv 0 set x 123

⌨️ 快捷键说明

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