]> git.saurik.com Git - apple/javascriptcore.git/blob - tests/mozilla/ecma_3/RegExp/regress-100199.js
JavaScriptCore-7601.1.46.3.tar.gz
[apple/javascriptcore.git] / tests / mozilla / ecma_3 / RegExp / regress-100199.js
1 /*
2 * The contents of this file are subject to the Netscape Public
3 * License Version 1.1 (the "License"); you may not use this file
4 * except in compliance with the License. You may obtain a copy of
5 * the License at http://www.mozilla.org/NPL/
6 *
7 * Software distributed under the License is distributed on an "AS IS"
8 * basis, WITHOUT WARRANTY OF ANY KIND, either expressed
9 * or implied. See the License for the specific language governing
10 * rights and limitations under the License.
11 *
12 * The Original Code is mozilla.org code.
13 *
14 * The Initial Developer of the Original Code is Netscape
15 * Communications Corporation. Portions created by Netscape are
16 * Copyright (C) 1998 Netscape Communications Corporation.
17 * All Rights Reserved.
18 *
19 * Contributor(s): pschwartau@netscape.com
20 * Date: 17 September 2001
21 *
22 * SUMMARY: Regression test for Bugzilla bug 100199
23 * See http://bugzilla.mozilla.org/show_bug.cgi?id=100199
24 *
25 * The empty character class [] is a valid RegExp construct: the condition
26 * that a given character belong to a set containing no characters. As such,
27 * it can never be met and is always FALSE. Similarly, [^] is a condition
28 * that matches any given character and is always TRUE.
29 *
30 * Neither one of these conditions should cause syntax errors in a RegExp.
31 */
32 //-----------------------------------------------------------------------------
33 var i = 0;
34 var bug = 100199;
35 var summary = '[], [^] are valid RegExp conditions. Should not cause errors -';
36 var status = '';
37 var statusmessages = new Array();
38 var pattern = '';
39 var patterns = new Array();
40 var string = '';
41 var strings = new Array();
42 var actualmatch = '';
43 var actualmatches = new Array();
44 var expectedmatch = '';
45 var expectedmatches = new Array();
46
47
48 pattern = /[]/;
49 string = 'abc';
50 status = inSection(1);
51 actualmatch = string.match(pattern);
52 expectedmatch = null;
53 addThis();
54
55 string = '';
56 status = inSection(2);
57 actualmatch = string.match(pattern);
58 expectedmatch = null;
59 addThis();
60
61 string = '[';
62 status = inSection(3);
63 actualmatch = string.match(pattern);
64 expectedmatch = null;
65 addThis();
66
67 string = '/';
68 status = inSection(4);
69 actualmatch = string.match(pattern);
70 expectedmatch = null;
71 addThis();
72
73 string = '[';
74 status = inSection(5);
75 actualmatch = string.match(pattern);
76 expectedmatch = null;
77 addThis();
78
79 string = ']';
80 status = inSection(6);
81 actualmatch = string.match(pattern);
82 expectedmatch = null;
83 addThis();
84
85 string = '[]';
86 status = inSection(7);
87 actualmatch = string.match(pattern);
88 expectedmatch = null;
89 addThis();
90
91 string = '[ ]';
92 status = inSection(8);
93 actualmatch = string.match(pattern);
94 expectedmatch = null;
95 addThis();
96
97 string = '][';
98 status = inSection(9);
99 actualmatch = string.match(pattern);
100 expectedmatch = null;
101 addThis();
102
103
104 pattern = /a[]/;
105 string = 'abc';
106 status = inSection(10);
107 actualmatch = string.match(pattern);
108 expectedmatch = null;
109 addThis();
110
111 string = '';
112 status = inSection(11);
113 actualmatch = string.match(pattern);
114 expectedmatch = null;
115 addThis();
116
117 string = 'a[';
118 status = inSection(12);
119 actualmatch = string.match(pattern);
120 expectedmatch = null;
121 addThis();
122
123 string = 'a[]';
124 status = inSection(13);
125 actualmatch = string.match(pattern);
126 expectedmatch = null;
127 addThis();
128
129 string = '[';
130 status = inSection(14);
131 actualmatch = string.match(pattern);
132 expectedmatch = null;
133 addThis();
134
135 string = ']';
136 status = inSection(15);
137 actualmatch = string.match(pattern);
138 expectedmatch = null;
139 addThis();
140
141 string = '[]';
142 status = inSection(16);
143 actualmatch = string.match(pattern);
144 expectedmatch = null;
145 addThis();
146
147 string = '[ ]';
148 status = inSection(17);
149 actualmatch = string.match(pattern);
150 expectedmatch = null;
151 addThis();
152
153 string = '][';
154 status = inSection(18);
155 actualmatch = string.match(pattern);
156 expectedmatch = null;
157 addThis();
158
159
160 pattern = /[^]/;
161 string = 'abc';
162 status = inSection(19);
163 actualmatch = string.match(pattern);
164 expectedmatch = Array('a');
165 addThis();
166
167 string = '';
168 status = inSection(20);
169 actualmatch = string.match(pattern);
170 expectedmatch = null; //there are no characters to test against the condition
171 addThis();
172
173 string = '\/';
174 status = inSection(21);
175 actualmatch = string.match(pattern);
176 expectedmatch = Array('/');
177 addThis();
178
179 string = '\[';
180 status = inSection(22);
181 actualmatch = string.match(pattern);
182 expectedmatch = Array('[');
183 addThis();
184
185 string = '[';
186 status = inSection(23);
187 actualmatch = string.match(pattern);
188 expectedmatch = Array('[');
189 addThis();
190
191 string = ']';
192 status = inSection(24);
193 actualmatch = string.match(pattern);
194 expectedmatch = Array(']');
195 addThis();
196
197 string = '[]';
198 status = inSection(25);
199 actualmatch = string.match(pattern);
200 expectedmatch = Array('[');
201 addThis();
202
203 string = '[ ]';
204 status = inSection(26);
205 actualmatch = string.match(pattern);
206 expectedmatch = Array('[');
207 addThis();
208
209 string = '][';
210 status = inSection(27);
211 actualmatch = string.match(pattern);
212 expectedmatch = Array(']');
213 addThis();
214
215
216 pattern = /a[^]/;
217 string = 'abc';
218 status = inSection(28);
219 actualmatch = string.match(pattern);
220 expectedmatch = Array('ab');
221 addThis();
222
223 string = '';
224 status = inSection(29);
225 actualmatch = string.match(pattern);
226 expectedmatch = null; //there are no characters to test against the condition
227 addThis();
228
229 string = 'a[';
230 status = inSection(30);
231 actualmatch = string.match(pattern);
232 expectedmatch = Array('a[');
233 addThis();
234
235 string = 'a]';
236 status = inSection(31);
237 actualmatch = string.match(pattern);
238 expectedmatch = Array('a]');
239 addThis();
240
241 string = 'a[]';
242 status = inSection(32);
243 actualmatch = string.match(pattern);
244 expectedmatch = Array('a[');
245 addThis();
246
247 string = 'a[ ]';
248 status = inSection(33);
249 actualmatch = string.match(pattern);
250 expectedmatch = Array('a[');
251 addThis();
252
253 string = 'a][';
254 status = inSection(34);
255 actualmatch = string.match(pattern);
256 expectedmatch = Array('a]');
257 addThis();
258
259
260
261
262 //-----------------------------------------------------------------------------
263 test();
264 //-----------------------------------------------------------------------------
265
266
267
268 function addThis()
269 {
270 statusmessages[i] = status;
271 patterns[i] = pattern;
272 strings[i] = string;
273 actualmatches[i] = actualmatch;
274 expectedmatches[i] = expectedmatch;
275 i++;
276 }
277
278
279 function test()
280 {
281 enterFunc ('test');
282 printBugNumber (bug);
283 printStatus (summary);
284 testRegExp(statusmessages, patterns, strings, actualmatches, expectedmatches);
285 exitFunc ('test');
286 }