aboutsummaryrefslogtreecommitdiff
path: root/tests/regexp.test
diff options
context:
space:
mode:
authorSteve Bennett <steveb@workware.net.au>2010-01-24 10:53:36 +1000
committerSteve Bennett <steveb@workware.net.au>2010-10-15 11:02:39 +1000
commit6ef810ae664dccd457fe1ed750f7d509b6f60878 (patch)
tree13f3ab69416d1fc7f5d10db06c1bf83aa0153e4f /tests/regexp.test
parenta0017cc44c22a83df8f92600317ad8ccd635e2a1 (diff)
downloadjimtcl-6ef810ae664dccd457fe1ed750f7d509b6f60878.zip
jimtcl-6ef810ae664dccd457fe1ed750f7d509b6f60878.tar.gz
jimtcl-6ef810ae664dccd457fe1ed750f7d509b6f60878.tar.bz2
Bugs, features and tests
source fails with zero length file unknown can't be called recursively *: This can be useful when using unknown to dynamically load code, which may in turn want to dynamically load code *: Limit it to 50 recursions though Allow string greater/less comparison *: Comparing two strings for order did not work Implement file join *: It's not to hard and is handy when working with the current dir, "" Don't omit [unknown] completely from stack trace *: Since we lose valuable informtion, just omit the name Fix return from case Turn regexp patterns into real objects *: Thus caching the compiled regexps Allow error to rethrow an error Replace bcopy() with more standard memcpy() Fixes to parray, improve errorInfo *: errorInfo takes an optional stack trace Add tests for rethrowing errors via errorInfo Fix ndelay *: Was looking at wrong param *: Also fix usage/help for aio.socket Package should be able to call exit *: Currently any return from a package is changed to JIM_ERR Line counting is incorrect for backlash newline
Diffstat (limited to 'tests/regexp.test')
-rw-r--r--tests/regexp.test35
1 files changed, 35 insertions, 0 deletions
diff --git a/tests/regexp.test b/tests/regexp.test
new file mode 100644
index 0000000..86ba17a
--- /dev/null
+++ b/tests/regexp.test
@@ -0,0 +1,35 @@
+source testing.tcl
+
+test regexp-1.1 {effect of caching} {
+
+ set filedata {BEGIN_TABLE ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; END_TABLE}
+
+ # Note: use 2 REs because often libc will cache a single regcomp() result
+
+ # t1 should be faster because the compiled re can be cached.
+ set re1 "END_TABLE"
+ set re2 "BEGIN_TABLE"
+
+ set t1 [time {
+ regexp -inline -all $re1 $filedata
+ regexp -inline -all $re2 $filedata
+ } 10000]
+
+ # t2 should be slower since the re's need to be recompiled every time
+ set t2 [time {
+ set re1 END
+ append re1 _TABLE
+ regexp -inline -all $re1 $filedata
+ set re2 BEGIN
+ append re2 _TABLE
+ regexp -inline -all $re2 $filedata
+ } 10000]
+
+ set t1 [lindex $t1 0]
+ set t2 [lindex $t2 0]
+
+ #puts "t1=$t1, t2=$t2"
+
+ # If these two times are within 20% of each other, caching isn't working
+ expr {$t2 / $t1 < 1.2 && $t1 / $t2 < 1.2}
+} {0}