@@ -47,7 +47,153 @@ assert (r.exec ("b")[0] == "");
47
47
assert ( r . exec ( "b" ) [ 1 ] == undefined ) ;
48
48
49
49
// Test greedy iterations
50
- // FIXME: Add testcases
50
+ r = new RegExp ( "(a){1,3}a" ) ;
51
+ assert ( r . exec ( "aa" ) == "aa,a" ) ;
52
+
53
+ r = new RegExp ( "(a){1,3}a" ) ;
54
+ assert ( r . exec ( "aaa" ) == "aaa,a" ) ;
55
+
56
+ r = new RegExp ( "(a){1,3}" ) ;
57
+ assert ( r . exec ( "a" ) == "a,a" ) ;
58
+
59
+ r = new RegExp ( "(a){1,3}" ) ;
60
+ assert ( r . exec ( "aaa" ) == "aaa,a" ) ;
61
+
62
+ r = new RegExp ( "(a){1,3}" ) ;
63
+ assert ( r . exec ( "aaaa" ) == "aaa,a" ) ;
64
+
65
+ r = new RegExp ( "(a){1,5}" ) ;
66
+ assert ( r . exec ( "aaaa" ) == "aaaa,a" ) ;
67
+
68
+ r = new RegExp ( "(a|b){1,2}" ) ;
69
+ assert ( r . exec ( "a" ) == "a,a" ) ;
70
+
71
+ r = new RegExp ( "(a|b){1,3}a" ) ;
72
+ assert ( r . exec ( "aaa" ) == "aaa,a" ) ;
73
+
74
+ r = new RegExp ( "(a|b){1,3}a" ) ;
75
+ assert ( r . exec ( "aba" ) == "aba,b" ) ;
76
+
77
+ r = new RegExp ( "(a|b){1,3}a" ) ;
78
+ assert ( r . exec ( "b" ) == undefined ) ;
79
+
80
+ r = new RegExp ( "(a|b){1,3}a" ) ;
81
+ assert ( r . exec ( "bbb" ) == undefined ) ;
82
+
83
+ r = new RegExp ( "(a|b){1,3}" ) ;
84
+ assert ( r . exec ( "a" ) == "a,a" ) ;
85
+
86
+ r = new RegExp ( "(a|b){1,3}" ) ;
87
+ assert ( r . exec ( "aa" ) == "aa,a" ) ;
88
+
89
+ r = new RegExp ( "(a|b){1,3}" ) ;
90
+ assert ( r . exec ( "aaa" ) == "aaa,a" ) ;
91
+
92
+ r = new RegExp ( "(a|b){1,3}" ) ;
93
+ assert ( r . exec ( "ab" ) == "ab,b" ) ;
94
+
95
+ r = new RegExp ( "(a|b){1,3}" ) ;
96
+ assert ( r . exec ( "aba" ) == "aba,a" ) ;
97
+
98
+ r = new RegExp ( "(a|b){1,3}" ) ;
99
+ assert ( r . exec ( "bab" ) == "bab,b" ) ;
100
+
101
+ r = new RegExp ( "(a|b){1,3}" ) ;
102
+ assert ( r . exec ( "bbb" ) == "bbb,b" ) ;
103
+
104
+ r = new RegExp ( "(a|b){1,4}a" ) ;
105
+ assert ( r . exec ( "bbb" ) == undefined ) ;
106
+
107
+ r = new RegExp ( "(a|b){1,4}" ) ;
108
+ assert ( r . exec ( "ab" ) == "ab,b" ) ;
109
+
110
+ r = new RegExp ( "(a|b){1,4}" ) ;
111
+ assert ( r . exec ( "aba" ) == "aba,a" ) ;
112
+
113
+ r = new RegExp ( "(a|b){1,4}" ) ;
114
+ assert ( r . exec ( "bbb" ) == "bbb,b" ) ;
115
+
116
+ r = new RegExp ( "(a|b){1,5}" ) ;
117
+ assert ( r . exec ( "aba" ) == "aba,a" ) ;
118
+
119
+ r = new RegExp ( "(a|b){1,5}" ) ;
120
+ assert ( r . exec ( "abab" ) == "abab,b" ) ;
121
+
122
+ r = new RegExp ( "(a|b){1,5}" ) ;
123
+ assert ( r . exec ( "bbb" ) == "bbb,b" ) ;
124
+
125
+ r = new RegExp ( "(aba)*" ) ;
126
+ assert ( r . exec ( "aaaa" ) == "," ) ;
127
+
128
+ r = new RegExp ( "(aba)+" ) ;
129
+ assert ( r . exec ( "aaaa" ) == undefined ) ;
130
+
131
+ r = new RegExp ( "(a|bb|c|d)" ) ;
132
+ assert ( r . exec ( "a" ) == "a,a" ) ;
133
+
134
+ r = new RegExp ( "(a|b)" ) ;
135
+ assert ( r . exec ( "a" ) == "a,a" ) ;
136
+
137
+ r = new RegExp ( "(a|b)+" ) ;
138
+ assert ( r . exec ( "aba" ) == "aba,a" ) ;
139
+
140
+ r = new RegExp ( "(a|b)" ) ;
141
+ assert ( r . exec ( "b" ) == "b,b" ) ;
142
+
143
+ r = new RegExp ( "(a)" ) ;
144
+ assert ( r . exec ( "a" ) == "a,a" ) ;
145
+
146
+ r = new RegExp ( "(a)*" ) ;
147
+ assert ( r . exec ( "a" ) == "a,a" ) ;
148
+
149
+ r = new RegExp ( "(a)*" ) ;
150
+ assert ( r . exec ( "aaaa" ) == "aaaa,a" ) ;
151
+
152
+ r = new RegExp ( "(a)+" ) ;
153
+ assert ( r . exec ( "aaaa" ) == "aaaa,a" ) ;
154
+
155
+ r = new RegExp ( "(a|aa){0,3}b" ) ;
156
+ assert ( r . exec ( "aaaaaab" ) == "aaaaaab,aa" ) ;
157
+
158
+ r = new RegExp ( "((a){2,3}){4}b" ) ;
159
+ assert ( r . exec ( "aaaaaaaab" ) == "aaaaaaaab,aa,a" ) ;
51
160
52
161
// Test non-greedy iterations
53
- // FIXME: Add testcases
162
+ r = new RegExp ( "(a)+?" ) ;
163
+ assert ( r . exec ( "aaaa" ) == "a,a" ) ;
164
+
165
+ r = new RegExp ( "(a)*?aa" ) ;
166
+ assert ( r . exec ( "aaaa" ) == "aa," ) ;
167
+
168
+ r = new RegExp ( "(aaa|aa)*?aa" ) ;
169
+ assert ( r . exec ( "aaaa" ) [ 0 ] == "aa" ) ;
170
+ assert ( r . exec ( "aaaa" ) [ 1 ] == undefined ) ;
171
+
172
+ r = new RegExp ( "(a)??aa" ) ;
173
+ assert ( r . exec ( "aaaa" ) [ 0 ] == "aa" ) ;
174
+ assert ( r . exec ( "aaaa" ) [ 1 ] == undefined ) ;
175
+
176
+ r = new RegExp ( "(a)?aa" ) ;
177
+ assert ( r . exec ( "aaaa" ) == "aaa,a" ) ;
178
+
179
+ r = new RegExp ( "(()*?)*?a" ) ;
180
+ assert ( r . exec ( "ba" ) [ 0 ] == "a" ) ;
181
+ assert ( r . exec ( "ba" ) [ 1 ] == undefined ) ;
182
+ assert ( r . exec ( "ba" ) [ 2 ] == undefined ) ;
183
+
184
+ r = new RegExp ( "((bb?)*)*a" ) ;
185
+ assert ( r . exec ( "bbba" ) == "bbba,bbb,b" ) ;
186
+
187
+ r = new RegExp ( "((bb?)*)*bbb\\Ba" ) ;
188
+ assert ( r . exec ( "bbba" ) [ 0 ] == "bbba" ) ;
189
+ assert ( r . exec ( "bbba" ) [ 1 ] == undefined ) ;
190
+ assert ( r . exec ( "bbba" ) [ 2 ] == undefined ) ;
191
+
192
+ r = new RegExp ( "(a??){0,1}a" ) ;
193
+ assert ( r . exec ( "aa" ) == "aa,a" ) ;
194
+
195
+ r = new RegExp ( "(a?){0,1}a" ) ;
196
+ assert ( r . exec ( "aa" ) == "aa,a" ) ;
197
+
198
+ r = new RegExp ( "(a{0,1}?){0,1}a" ) ;
199
+ assert ( r . exec ( "aa" ) == "aa,a" ) ;
0 commit comments