Trim bootstrap jimsh
[jimtcl.git] / tests / regcount.test
blob96f4ddd4e51a01e4b01c4bc7c3bff53971afb9f3
1 source [file dirname [info script]]/testing.tcl
3 needs cmd regexp
4 testConstraint regexp_are [expr {[regexp {\d} 1]}]
5 needs constraint regexp_are
7 # Test regexp counted repetitions
9 set n 0
10 foreach {pat str exp} {
11         a+ bac a
12         a{1,} bac a
13         a* bac {{}}
14         a{0,} bac {{}}
15         aa+ bac {}
16         a{2,} bac {}
17         a{2,} bacaad aa
18         a{3,} bacaad {}
19         {a{2,}$} bacaad {}
20         {a{2,}$} bacaa aa
21         {a{2,}$} ba {}
22         {a{2,}$} aa aa
23         {a{0,0}b$} b b
24         {a{1,1}b$} b {}
25         {a{1,1}b$} cab ab
26         {a{2,2}b$} cab {}
27         {a{2,2}b$} cabaabx {}
28         {a{2,2}b$} cacaab aab
29         ca{2,4}b cacaab caab
30         ca{2,3}b cacaab caab
31         ca{2,3}b cacaaab caaab
32         c(a|b){2,3}d xcbad {cbad a}
33         c(a|b){2,3}d xcabbd {cabbd b}
34         c(a|b){2,3}d xcbaaad {}
35         a{4} baaaad aaaa
36         a{2,5} baaaad aaaa
37         a{1,3} baaaad aaa
38         a{1,2} baaaad aa
39         a{3,4} baaaad aaaa
40         a{5,6} baaaad {}
41         a{4}? baaaad aaaa
42         a{2,5}? baaaad aa
43         a{1,3}? baaaad a
44         a{1,2}? baaaad a
45         a{3,4}? baaaad aaa
46         a{5,6}? baaaad {}
47         {\d{1,3}} 239 239
48         (aa|bb)?c xabbaac {aac aa}
49         (a|y)+ bac {a a}
50         (a|y){1,} bac {a a}
51         (a|y)* bac {{} {}}
52         (a|y){0,} bac {{} {}}
53         (a|y)a+ bac {}
54         (a|y){2,} bac {}
55         (a|y){2,} bacaad {aa a}
56         (a|y){3,} bacaad {}
57         {(a|y){2,}$} bacaad {}
58         {(a|y){2,}$} bacaa {aa a}
59         {(a|y){2,}$} ba {}
60         {(a|y){2,}$} aa {aa a}
61         {(a|y){0,0}b$} b {b {}}
62         {(a|y){1,1}b$} b {}
63         {(a|y){1,1}b$} cab {ab a}
64         {(a|y){2,2}b$} cab {}
65         {(a|y){2,2}b$} cabaabx {}
66         {(a|y){2,2}b$} cacaab {aab a}
67         c(a|y){2,4}b cacaab {caab a}
68         c(a|y){2,3}b cacaab {caab a}
69         c(a|y){2,3}b cacaaab {caaab a}
70         c((a|y)|b){2,3}d xcbad {cbad a a}
71         ####c((a|y)|b){2,3}d xcabbd {cabbd b {}}
72         c((a|y)|b){2,3}d xcbaaad {}
73         (a|y){4} baaaad {aaaa a}
74         (a|y){2,5} baaaad {aaaa a}
75         (a|y){1,3} baaaad {aaa a}
76         (a|y){1,2} baaaad {aa a}
77         (a|y){3,4} baaaad {aaaa a}
78         (a|y){5,6} baaaad {}
79         (a|y){4}? baaaad {aaaa a}
80         (a|y){2,5}? baaaad {aa a}
81         (a|y){1,3}? baaaad {a a}
82         (a|y){1,2}? baaaad {a a}
83         (a|y){3,4}? baaaad {aaa a}
84         (a|y){5,6}? baaaad {}
85     {[[:alpha:]]+} _bcd56_ef bcd
86     {[[:alnum:]]+} _bcd56_ef bcd56
87     {[[:space:]]+} "_bc \t\r\n\f\v_" "{ \t\r\n\f\v}"
88     {[\x41-\x43]+} "_ABCD_" ABC
89     {\m.+\M} "#A test#" "{A test}"
90     {\m.+?\M} "#A test#" "A"
91     {\m\M} "a" ""
92     {ab*c} xnbbmbbbc {}
93     {.^xxx} yyy {}
94     {\mb} "   abc   " ""
95         ####((a*)*b)*b aaaaaaaaaaaaaaaaaaaaaaaaab {b {} {}}
96         ####(a*)* aab {aa {}}
97         {^([^:=]*)(:)?(=)?$} version {version version {} {}}
98 } {
99         if {[string match #* $pat]} {
100                 continue
101         }
102         #puts \t[list $pat $str [regexp -inline -- $pat $str]]
103         test regcount-1.[incr n] "Test: regexp $pat $str" [list regexp -inline -- $pat $str] $exp
106 test regcount-2.1 "regexp counts cleared" {
107         set re "((a|b){1,2}(c{2,3}))"
108         regexp -inline $re xabcccce
109         regexp -inline $re xabcccce
110 } {abccc abccc b ccc}
112 testreport