summaryrefslogtreecommitdiffstats
path: root/tcllib/modules/textutil/trim.test
diff options
context:
space:
mode:
Diffstat (limited to 'tcllib/modules/textutil/trim.test')
-rw-r--r--tcllib/modules/textutil/trim.test177
1 files changed, 177 insertions, 0 deletions
diff --git a/tcllib/modules/textutil/trim.test b/tcllib/modules/textutil/trim.test
new file mode 100644
index 0000000..b1d4790
--- /dev/null
+++ b/tcllib/modules/textutil/trim.test
@@ -0,0 +1,177 @@
+# -*- tcl -*-
+# trim.test: tests for the trim command of the textutil package.
+#
+# 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.
+#
+
+# -------------------------------------------------------------------------
+
+source [file join \
+ [file dirname [file dirname [file join [pwd] [info script]]]] \
+ devtools testutilities.tcl]
+
+testsNeedTcl 8.2
+testsNeedTcltest 1.0
+
+testing {
+ useLocal trim.tcl textutil::trim
+}
+
+# -------------------------------------------------------------------------
+
+test trim-0.1 {trim string on left} {
+ set str [::textutil::trim::trimleft "\t\t hello, world \t " ]
+ set str
+} "hello, world \t "
+
+test trim-0.2 {trim string on right} {
+ set str [::textutil::trim::trimright "\t\t hello, world \t " ]
+ set str
+} "\t\t hello, world"
+
+test trim-0.3 {trim string on both side} {
+ set str [::textutil::trim::trim "\t\t hello, world \t " ]
+ set str
+} "hello, world"
+
+test trim-0.4 {trim string with embedded spaces and tabs on both side} {
+ set str [::textutil::trim::trim "\t\t hello, \t\t world \t " ]
+ set str
+} "hello, \t\t world"
+
+test trim-1.1 {trim text on left} {
+ set str [::textutil::trim::trimleft "\t\t hello, \t\n \tworld \t " ]
+ set str
+} "hello, \t
+world \t "
+
+test trim-1.2 {trim text on right} {
+ set str [::textutil::trim::trimright "\t\t hello, \t\n \tworld \t " ]
+ set str
+} "\t\t hello,
+ \tworld"
+
+test trim-1.3 {trim string on both side} {
+ set str [::textutil::trim::trim "\t\t hello, \t\n \tworld \t " ]
+ set str
+} "hello,
+world"
+
+test trim-1.4 {trim string with embedded spaces and tabs on both side} {
+ set str [::textutil::trim::trim "\t\t hello\t \t, \t\n \tthe\t \t world \t " ]
+ set str
+} "hello\t \t,
+the\t \t world"
+
+test trim-2.1 {trim text on left with regexp} {
+ set str [::textutil::trim::trimleft "\t\t hello, \t\n \tworld \t " "\[ \thwdo\]+" ]
+ set str
+} "ello, \t
+rld \t "
+
+test trim-2.2 {trim text on right} {
+ set str [::textutil::trim::trimright "\t\t hello, \t\n \tworld \t " "\[ \thwdo\]+" ]
+ set str
+} "\t\t hello,
+ \tworl"
+
+test trim-2.3 {trim string on both side} {
+ set str [::textutil::trim::trim "\t\t hello, \t\n \tworld \t " "\[ \thwdo\]+" ]
+ set str
+} "ello,
+rl"
+
+test trim-2.4 {trim string with embedded spaces and tabs on both side} {
+ set str [::textutil::trim::trim "\t\t hello\t \t, \t\n \tthe\t \t world \t " "\[ \thwdo\]+" ]
+ set str
+} "ello\t \t,
+the\t \t worl"
+
+# Not the real parray proc, because the default value of pattern is intentionnally omitted
+
+set myparray "\t \tproc myparray {a pattern} {
+ # print nicely an associated array sorted by element
+ upvar 1 \$a array \t
+ if {!\[array exists array\]} {
+ error \"\\\"\$a\\\" isn't an array\" \t
+ }
+ set maxl 0 ; # used to find the longest name of element
+ foreach name \[lsort \[array names array \$pattern\]\] {
+ if {\[string length \$name\] > \$maxl} { \t\t\t
+ set maxl \[string length \$name\]
+ }
+ }
+ set maxl \[expr {\$maxl + \[string length \$a\] + 2}\] \t
+ foreach name \[lsort \[array names array \$pattern\]\] {
+ set nameString \[format %s(%s) \$a \$name\]
+ puts stdout \[format \"%-*s = %s\" \$maxl \$nameString \$array(\$name)\]
+ }
+\t\t}\t\t"
+
+test trim-3.1 {trim block of Tcl code} {
+ set code [::textutil::trim::trim $myparray ]
+ set code
+} "proc myparray {a pattern} {
+# print nicely an associated array sorted by element
+upvar 1 \$a array
+if {!\[array exists array\]} {
+error \"\\\"\$a\\\" isn't an array\"
+}
+set maxl 0 ; # used to find the longest name of element
+foreach name \[lsort \[array names array \$pattern\]\] {
+if {\[string length \$name\] > \$maxl} {
+set maxl \[string length \$name\]
+}
+}
+set maxl \[expr {\$maxl + \[string length \$a\] + 2}\]
+foreach name \[lsort \[array names array \$pattern\]\] {
+set nameString \[format %s(%s) \$a \$name\]
+puts stdout \[format \"%-*s = %s\" \$maxl \$nameString \$array(\$name)\]
+}
+}"
+
+test trim-3.2 {trim block of Tcl code with regexp} {
+ set code [::textutil::trim::trim $myparray "\[\] \t{}pu\]+" ]
+ set code
+} "roc myparray {a pattern
+# print nicely an associated array sorted by element
+var 1 \$a array
+if {!\[array exists array
+error \"\\\"\$a\\\" isn't an array\"
+
+set maxl 0 ; # used to find the longest name of element
+foreach name \[lsort \[array names array \$pattern
+if {\[string length \$name\] > \$maxl
+set maxl \[string length \$name
+
+
+set maxl \[expr {\$maxl + \[string length \$a\] + 2
+foreach name \[lsort \[array names array \$pattern
+set nameString \[format %s(%s) \$a \$name
+ts stdout \[format \"%-*s = %s\" \$maxl \$nameString \$array(\$name)
+
+"
+
+test trim-3.3 {trim block of commented Tcl code with regexp} {
+ set code [::textutil::trim::trim $myparray "(\[ \t\]+)|(\[ \t;\]*#.*)" ]
+ set code
+} "proc myparray {a pattern} {
+
+upvar 1 \$a array
+if {!\[array exists array\]} {
+error \"\\\"\$a\\\" isn't an array\"
+}
+set maxl 0
+foreach name \[lsort \[array names array \$pattern\]\] {
+if {\[string length \$name\] > \$maxl} {
+set maxl \[string length \$name\]
+}
+}
+set maxl \[expr {\$maxl + \[string length \$a\] + 2}\]
+foreach name \[lsort \[array names array \$pattern\]\] {
+set nameString \[format %s(%s) \$a \$name\]
+puts stdout \[format \"%-*s = %s\" \$maxl \$nameString \$array(\$name)\]
+}
+}"