aboutsummaryrefslogtreecommitdiff
path: root/test.tcl
diff options
context:
space:
mode:
authorantirez <antirez>2005-02-27 11:28:01 +0000
committerantirez <antirez>2005-02-27 11:28:01 +0000
commit1e36e4656b9cd5cb69ca32a7088ad147b0a67d05 (patch)
treed854f8e80d74c4f79fdcead6e83391b48f037a96 /test.tcl
parenta52c478f7d07b44a58ef88974a06de8f3e7ed0e2 (diff)
downloadjimtcl-1e36e4656b9cd5cb69ca32a7088ad147b0a67d05.zip
jimtcl-1e36e4656b9cd5cb69ca32a7088ad147b0a67d05.tar.gz
jimtcl-1e36e4656b9cd5cb69ca32a7088ad147b0a67d05.tar.bz2
Now there is implicit subst in expr's strings like expr {"foo $i" eq $bar}.
More tests. A fix in the parsing code for line number calculation.
Diffstat (limited to 'test.tcl')
-rw-r--r--test.tcl162
1 files changed, 161 insertions, 1 deletions
diff --git a/test.tcl b/test.tcl
index 5e51737..ed776f0 100644
--- a/test.tcl
+++ b/test.tcl
@@ -475,7 +475,6 @@ test lset-6.8 {lset, not compiled, 1-d list basics} {
set a {x y z}
list [eval [list $lset a [list end-0] a]] $a
} {{x y a} {x y a}}
-
test lset-6.9 {lset, not compiled, 1-d list basics} {
set a {x y z}
list [eval [list $lset a end-2 a]] $a
@@ -871,3 +870,164 @@ test if-12.36 {error conditions} {
test if-12.37 {error conditions} {
list [catch {if 0 then foo elseif 0 bar else {[error "error in else clause"]}} msg] $msg
} {1 {error in else clause}}
+
+################################################################################
+# APPEND
+################################################################################
+
+catch {unset x}
+
+test append-1.1 {append command} {
+ catch {unset x}
+ list [append x 1 2 abc "long string"] $x
+} {{12abclong string} {12abclong string}}
+test append-1.2 {append command} {
+ set x ""
+ list [append x first] [append x second] [append x third] $x
+} {first firstsecond firstsecondthird firstsecondthird}
+test append-1.3 {append command} {
+ set x "abcd"
+ append x
+} abcd
+
+test append-2.1 {long appends} {
+ set x ""
+ for {set i 0} {$i < 1000} {set i [expr $i+1]} {
+ append x "foobar "
+ }
+ set y "foobar"
+ set y "$y $y $y $y $y $y $y $y $y $y"
+ set y "$y $y $y $y $y $y $y $y $y $y"
+ set y "$y $y $y $y $y $y $y $y $y $y "
+ expr {$x eq $y}
+} 1
+
+test append-3.1 {append errors} {
+ list [catch {append} msg] $msg
+} {1 {wrong # args: should be "append varName ?value value ...?"}}
+#test append-3.2 {append errors} {
+# set x ""
+# list [catch {append x(0) 44} msg] $msg
+#} {1 {can't set "x(0)": variable isn't array}}
+test append-3.3 {append errors} {
+ catch {unset x}
+ list [catch {append x} msg] $msg
+} {1 {can't read "x": no such variable}}
+
+test append-4.1 {lappend command} {
+ catch {unset x}
+ list [lappend x 1 2 abc "long string"] $x
+} {{1 2 abc {long string}} {1 2 abc {long string}}}
+test append-4.2 {lappend command} {
+ set x ""
+ list [lappend x first] [lappend x second] [lappend x third] $x
+} {first {first second} {first second third} {first second third}}
+test append-4.3 {lappend command} {
+ proc foo {} {
+ global x
+ set x old
+ unset x
+ lappend x new
+ }
+ set result [foo]
+ rename foo {}
+ set result
+} {new}
+test append-4.4 {lappend command} {
+ set x {}
+ lappend x \{\ abc
+} {\{\ abc}
+test append-4.5 {lappend command} {
+ set x {}
+ lappend x \{ abc
+} {\{ abc}
+test append-4.6 {lappend command} {
+ set x {1 2 3}
+ lappend x
+} {1 2 3}
+test append-4.7 {lappend command} {
+ set x "a\{"
+ lappend x abc
+} "a\\\{ abc"
+test append-4.8 {lappend command} {
+ set x "\\\{"
+ lappend x abc
+} "\\{ abc"
+#test append-4.9 {lappend command} {
+# set x " \{"
+# list [catch {lappend x abc} msg] $msg
+#} {1 {unmatched open brace in list}}
+#test append-4.10 {lappend command} {
+# set x " \{"
+# list [catch {lappend x abc} msg] $msg
+#} {1 {unmatched open brace in list}}
+#test append-4.11 {lappend command} {
+# set x "\{\{\{"
+# list [catch {lappend x abc} msg] $msg
+#} {1 {unmatched open brace in list}}
+#test append-4.12 {lappend command} {
+# set x "x \{\{\{"
+# list [catch {lappend x abc} msg] $msg
+#} {1 {unmatched open brace in list}}
+test append-4.13 {lappend command} {
+ set x "x\{\{\{"
+ lappend x abc
+} "x\\\{\\\{\\\{ abc"
+test append-4.14 {lappend command} {
+ set x " "
+ lappend x abc
+} "abc"
+test append-4.15 {lappend command} {
+ set x "\\ "
+ lappend x abc
+} "{ } abc"
+test append-4.16 {lappend command} {
+ set x "x "
+ lappend x abc
+} "x abc"
+test append-4.17 {lappend command} {
+ catch {unset x}
+ lappend x
+} {}
+test append-4.18 {lappend command} {
+ catch {unset x}
+ lappend x {}
+} {{}}
+test append-4.19 {lappend command} {
+ catch {unset x}
+ lappend x(0)
+} {}
+test append-4.20 {lappend command} {
+ catch {unset x}
+ lappend x(0) abc
+} {abc}
+
+proc check {var size} {
+ set l [llength $var]
+ if {$l != $size} {
+ return "length mismatch: should have been $size, was $l"
+ }
+ for {set i 0} {$i < $size} {set i [expr $i+1]} {
+ set j [lindex $var $i]
+ if {$j ne "item $i"} {
+ return "element $i should have been \"item $i\", was \"$j\""
+ }
+ }
+ return ok
+}
+test append-5.1 {long lappends} {
+ catch {unset x}
+ set x ""
+ for {set i 0} {$i < 300} {set i [expr $i+1]} {
+ lappend x "item $i"
+ }
+ check $x 300
+} ok
+
+test append-6.1 {lappend errors} {
+ list [catch {lappend} msg] $msg
+} {1 {wrong # args: should be "lappend varName ?value value ...?"}}
+#test append-6.2 {lappend errors} {
+# set x ""
+# list [catch {lappend x(0) 44} msg] $msg
+#} {1 {can't set "x(0)": variable isn't array}}