summaryrefslogtreecommitdiffstats
path: root/tests/dstring.test
diff options
context:
space:
mode:
Diffstat (limited to 'tests/dstring.test')
-rw-r--r--tests/dstring.test150
1 files changed, 106 insertions, 44 deletions
diff --git a/tests/dstring.test b/tests/dstring.test
index c1a0063..95321ec 100644
--- a/tests/dstring.test
+++ b/tests/dstring.test
@@ -16,26 +16,21 @@ if {[lsearch [namespace children] ::tcltest] == -1} {
namespace import -force ::tcltest::*
}
-if {[info commands testdstring] == {}} {
- puts "This application hasn't been compiled with the \"testdstring\""
- puts "command, so I can't test Tcl_DStringAppend et al."
- ::tcltest::cleanupTests
- return
-}
+testConstraint testdstring [llength [info commands testdstring]]
-test dstring-1.1 {appending and retrieving} {
+test dstring-1.1 {appending and retrieving} testdstring {
testdstring free
testdstring append "abc" -1
list [testdstring get] [testdstring length]
} {abc 3}
-test dstring-1.2 {appending and retrieving} {
+test dstring-1.2 {appending and retrieving} testdstring {
testdstring free
testdstring append "abc" -1
testdstring append " xyzzy" 3
testdstring append " 12345" -1
list [testdstring get] [testdstring length]
} {{abc xy 12345} 12}
-test dstring-1.3 {appending and retrieving} {
+test dstring-1.3 {appending and retrieving} testdstring {
testdstring free
foreach l {a b c d e f g h i j k l m n o p} {
testdstring append $l$l$l$l$l$l$l$l$l$l$l$l$l$l$l$l$l$l$l$l$l\n -1
@@ -59,27 +54,27 @@ ooooooooooooooooooooo
ppppppppppppppppppppp
} 352}
-test dstring-2.1 {appending list elements} {
+test dstring-2.1 {appending list elements} testdstring {
testdstring free
testdstring element "abc"
testdstring element "d e f"
list [testdstring get] [testdstring length]
} {{abc {d e f}} 11}
-test dstring-2.2 {appending list elements} {
+test dstring-2.2 {appending list elements} testdstring {
testdstring free
testdstring element "x"
testdstring element "\{"
testdstring element "ab\}"
testdstring get
} {x \{ ab\}}
-test dstring-2.3 {appending list elements} {
+test dstring-2.3 {appending list elements} testdstring {
testdstring free
foreach l {a b c d e f g h i j k l m n o p} {
testdstring element $l$l$l$l$l$l$l$l$l$l$l$l$l$l$l$l$l$l$l$l$l
}
testdstring get
} {aaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbbbbb ccccccccccccccccccccc ddddddddddddddddddddd eeeeeeeeeeeeeeeeeeeee fffffffffffffffffffff ggggggggggggggggggggg hhhhhhhhhhhhhhhhhhhhh iiiiiiiiiiiiiiiiiiiii jjjjjjjjjjjjjjjjjjjjj kkkkkkkkkkkkkkkkkkkkk lllllllllllllllllllll mmmmmmmmmmmmmmmmmmmmm nnnnnnnnnnnnnnnnnnnnn ooooooooooooooooooooo ppppppppppppppppppppp}
-test dstring-2.4 {appending list elements} {
+test dstring-2.4 {appending list elements} testdstring {
testdstring free
testdstring append "a\{" -1
testdstring element abc
@@ -87,32 +82,63 @@ test dstring-2.4 {appending list elements} {
testdstring element xyzzy
testdstring get
} "a{ abc {xyzzy"
-test dstring-2.5 {appending list elements} {
+test dstring-2.5 {appending list elements} testdstring {
testdstring free
testdstring append " \{" -1
testdstring element abc
testdstring get
} " {abc"
-test dstring-2.6 {appending list elements} {
+test dstring-2.6 {appending list elements} testdstring {
testdstring free
testdstring append " " -1
testdstring element abc
testdstring get
} { abc}
-test dstring-2.7 {appending list elements} {
+test dstring-2.7 {appending list elements} testdstring {
testdstring free
testdstring append "\\ " -1
testdstring element abc
testdstring get
} "\\ abc"
-test dstring-2.8 {appending list elements} {
+test dstring-2.8 {appending list elements} testdstring {
testdstring free
testdstring append "x " -1
testdstring element abc
testdstring get
} {x abc}
+test dstring-2.9 {appending list elements} testdstring {
+ testdstring free
+ testdstring element #
+ testdstring get
+} {{#}}
+test dstring-2.10 {appending list elements} testdstring {
+ testdstring free
+ testdstring append " " -1
+ testdstring element #
+ testdstring get
+} { {#}}
+test dstring-2.11 {appending list elements} testdstring {
+ testdstring free
+ testdstring append \t -1
+ testdstring element #
+ testdstring get
+} \t{#}
+test dstring-2.12 {appending list elements} testdstring {
+ testdstring free
+ testdstring append x -1
+ testdstring element #
+ testdstring get
+} {x #}
+test dstring-2.13 {appending list elements} testdstring {
+ # This test shows lack of sophistication in Tcl_DStringAppendElement's
+ # decision about whether #-quoting can be disabled.
+ testdstring free
+ testdstring append "x " -1
+ testdstring element #
+ testdstring get
+} {x {#}}
-test dstring-3.1 {nested sublists} {
+test dstring-3.1 {nested sublists} testdstring {
testdstring free
testdstring start
testdstring element foo
@@ -121,7 +147,7 @@ test dstring-3.1 {nested sublists} {
testdstring element another
testdstring get
} {{foo bar} another}
-test dstring-3.2 {nested sublists} {
+test dstring-3.2 {nested sublists} testdstring {
testdstring free
testdstring start
testdstring start
@@ -132,7 +158,7 @@ test dstring-3.2 {nested sublists} {
testdstring element ghi
testdstring get
} {{{abc def}} ghi}
-test dstring-3.3 {nested sublists} {
+test dstring-3.3 {nested sublists} testdstring {
testdstring free
testdstring start
testdstring start
@@ -146,7 +172,7 @@ test dstring-3.3 {nested sublists} {
testdstring element foo4
testdstring get
} {{{{foo foo2}} foo3} foo4}
-test dstring-3.4 {nested sublists} {
+test dstring-3.4 {nested sublists} testdstring {
testdstring free
testdstring element before
testdstring start
@@ -156,7 +182,7 @@ test dstring-3.4 {nested sublists} {
testdstring element last
testdstring get
} {before {during more} last}
-test dstring-3.5 {nested sublists} {
+test dstring-3.5 {nested sublists} testdstring {
testdstring free
testdstring element "\{"
testdstring start
@@ -165,26 +191,72 @@ test dstring-3.5 {nested sublists} {
testdstring end
testdstring get
} {\{ {first second}}
+test dstring-3.6 {appending list elements} testdstring {
+ testdstring free
+ testdstring append x -1
+ testdstring start
+ testdstring element #
+ testdstring end
+ testdstring get
+} {x {{#}}}
+test dstring-3.7 {appending list elements} testdstring {
+ testdstring free
+ testdstring append x -1
+ testdstring start
+ testdstring append " " -1
+ testdstring element #
+ testdstring end
+ testdstring get
+} {x { {#}}}
+test dstring-3.8 {appending list elements} testdstring {
+ testdstring free
+ testdstring append x -1
+ testdstring start
+ testdstring append \t -1
+ testdstring element #
+ testdstring end
+ testdstring get
+} "x {\t{#}}"
+test dstring-3.9 {appending list elements} testdstring {
+ testdstring free
+ testdstring append x -1
+ testdstring start
+ testdstring append x -1
+ testdstring element #
+ testdstring end
+ testdstring get
+} {x {x #}}
+test dstring-3.10 {appending list elements} testdstring {
+ # This test shows lack of sophistication in Tcl_DStringAppendElement's
+ # decision about whether #-quoting can be disabled.
+ testdstring free
+ testdstring append x -1
+ testdstring start
+ testdstring append "x " -1
+ testdstring element #
+ testdstring end
+ testdstring get
+} {x {x {#}}}
-test dstring-4.1 {truncation} {
+test dstring-4.1 {truncation} testdstring {
testdstring free
testdstring append "abcdefg" -1
testdstring trunc 3
list [testdstring get] [testdstring length]
} {abc 3}
-test dstring-4.2 {truncation} {
+test dstring-4.2 {truncation} testdstring {
testdstring free
testdstring append "xyzzy" -1
testdstring trunc 0
list [testdstring get] [testdstring length]
} {{} 0}
-test dstring-5.1 {copying to result} {
+test dstring-5.1 {copying to result} testdstring {
testdstring free
testdstring append xyz -1
testdstring result
} xyz
-test dstring-5.2 {copying to result} {
+test dstring-5.2 {copying to result} testdstring {
testdstring free
catch {unset a}
foreach l {a b c d e f g h i j k l m n o p} {
@@ -211,18 +283,18 @@ ooooooooooooooooooooo
ppppppppppppppppppppp
} abc}
-test dstring-6.1 {Tcl_DStringGetResult} {
+test dstring-6.1 {Tcl_DStringGetResult} testdstring {
testdstring free
list [testdstring gresult staticsmall] [testdstring get]
} {{} short}
-test dstring-6.2 {Tcl_DStringGetResult} {
+test dstring-6.2 {Tcl_DStringGetResult} testdstring {
testdstring free
foreach l {a b c d e f g h i j k l m n o p} {
testdstring append $l$l$l$l$l$l$l$l$l$l$l$l$l$l$l$l$l$l$l$l$l\n -1
}
list [testdstring gresult staticsmall] [testdstring get]
} {{} short}
-test dstring-6.3 {Tcl_DStringGetResult} {
+test dstring-6.3 {Tcl_DStringGetResult} testdstring {
set result {}
lappend result [testdstring gresult staticlarge]
testdstring append x 1
@@ -235,13 +307,13 @@ fifth0 fifth1 fifth2 fifth3 fifth4 fifth5 fifth6 fifth7 fifth8 fifth9
sixth0 sixth1 sixth2 sixth3 sixth4 sixth5 sixth6 sixth7 sixth8 sixth9
seventh0 seventh1 seventh2 seventh3 seventh4 seventh5 seventh6 seventh7 seventh8 seventh9
x}}
-test dstring-6.4 {Tcl_DStringGetResult} {
+test dstring-6.4 {Tcl_DStringGetResult} testdstring {
set result {}
lappend result [testdstring gresult free]
testdstring append y 1
lappend result [testdstring get]
} {{} {This is a malloc-ed stringy}}
-test dstring-6.5 {Tcl_DStringGetResult} {
+test dstring-6.5 {Tcl_DStringGetResult} testdstring {
set result {}
lappend result [testdstring gresult special]
testdstring append z 1
@@ -249,18 +321,8 @@ test dstring-6.5 {Tcl_DStringGetResult} {
} {{} {This is a specially-allocated stringz}}
# cleanup
-testdstring free
+if {[testConstraint testdstring]} {
+ testdstring free
+}
::tcltest::cleanupTests
return
-
-
-
-
-
-
-
-
-
-
-
-