# stack.test: tests for the stack 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. # if {[lsearch [namespace children] ::tcltest] == -1} { package require tcltest namespace import ::tcltest::* } if { [ lsearch [ namespace children ] "::textutil" ] == -1 } then { source [file join [file dirname [info script]] textutil.tcl] } ################################################### test trim-0.1 {trim string on left} { set str [ ::textutil::trimleft "\t\t hello, world \t " ] set str } "hello, world \t " test trim-0.2 {trim string on right} { set str [ ::textutil::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 "\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 "\t\t hello, \t\t world \t " ] set str } "hello, \t\t world" test trim-1.1 {trim text on left} { set str [ ::textutil::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::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 "\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 "\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::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::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 "\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 "\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 $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 $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 $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)\] } }"