summaryrefslogtreecommitdiffstats
path: root/tests/reg.test
diff options
context:
space:
mode:
authordgp <dgp@users.sourceforge.net>2015-10-21 13:50:55 (GMT)
committerdgp <dgp@users.sourceforge.net>2015-10-21 13:50:55 (GMT)
commit4e08431e8790a66cea86d33c8c770626396509c0 (patch)
tree7339a003ab56cd793a40da29f03f7f18a52a80bb /tests/reg.test
parentb22ebcce6b9f2e861a4c9fed13421df0c76769d6 (diff)
parent16ccc54387b39505723e3413eb4d755ea7cdb3ff (diff)
downloadtcl-4e08431e8790a66cea86d33c8c770626396509c0.zip
tcl-4e08431e8790a66cea86d33c8c770626396509c0.tar.gz
tcl-4e08431e8790a66cea86d33c8c770626396509c0.tar.bz2
[1080042][8f245009b0] Big bundle of regexp engine fixes and improvements
contributed from Tom Lane of the postgres project.
Diffstat (limited to 'tests/reg.test')
-rw-r--r--tests/reg.test53
1 files changed, 53 insertions, 0 deletions
diff --git a/tests/reg.test b/tests/reg.test
index 0ebfa11..6cd2eb3 100644
--- a/tests/reg.test
+++ b/tests/reg.test
@@ -1068,6 +1068,59 @@ test reg-33.13 {Bug 1810264 - infinite loop} {
test reg-33.14 {Bug 1810264 - super-expensive expression} nonPortable {
regexp {(x{200}){200}$y} {x}
} 0
+
+test reg-33.15 {constraint fixes} {
+ regexp {(^)+^} x
+} 1
+test reg-33.16 {constraint fixes} {
+ regexp {($^)+} x
+} 0
+test reg-33.17 {constraint fixes} {
+ regexp {(^$)*} x
+} 1
+test reg-33.18 {constraint fixes} {
+ regexp {(^(?!aa))+} {aa bb cc}
+} 0
+test reg-33.19 {constraint fixes} {
+ regexp {(^(?!aa)(?!bb)(?!cc))+} {aa x}
+} 0
+test reg-33.20 {constraint fixes} {
+ regexp {(^(?!aa)(?!bb)(?!cc))+} {bb x}
+} 0
+test reg-33.21 {constraint fixes} {
+ regexp {(^(?!aa)(?!bb)(?!cc))+} {cc x}
+} 0
+test reg-33.22 {constraint fixes} {
+ regexp {(^(?!aa)(?!bb)(?!cc))+} {dd x}
+} 1
+
+test reg-33.23 {} {
+ regexp {abcd(\m)+xyz} x
+} 0
+test reg-33.24 {} {
+ regexp {abcd(\m)+xyz} a
+} 0
+test reg-33.25 {} {
+ regexp {^abcd*(((((^(a c(e?d)a+|)+|)+|)+|)+|a)+|)} x
+} 0
+test reg-33.26 {} {
+ regexp {a^(^)bcd*xy(((((($a+|)+|)+|)+$|)+|)+|)^$} x
+} 0
+test reg-33.27 {} {
+ regexp {xyz(\Y\Y)+} x
+} 0
+test reg-33.28 {} {
+ regexp {x|(?:\M)+} x
+} 1
+test reg-33.29 {} {
+ # This is near the limits of the RE engine
+ regexp [string repeat x*y*z* 480] x
+} 1
+
+test reg-33.30 {Bug 1080042} {
+ regexp {(\Y)+} foo
+} 1
+
# cleanup
::tcltest::cleanupTests