]> git.saurik.com Git - apple/javascriptcore.git/blame - tests/mozilla/ecma_3/RegExp/regress-67773.js
JavaScriptCore-7601.1.46.3.tar.gz
[apple/javascriptcore.git] / tests / mozilla / ecma_3 / RegExp / regress-67773.js
CommitLineData
b37bf2e1
A
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: 06 February 2001
21*
22* SUMMARY: Arose from Bugzilla bug 67773:
23* "Regular subexpressions followed by + failing to run to completion"
24*
25* See http://bugzilla.mozilla.org/show_bug.cgi?id=67773
26* See http://bugzilla.mozilla.org/show_bug.cgi?id=69989
27*/
28//-------------------------------------------------------------------------------------------------
29var i = 0;
30var bug = 67773;
31var summary = 'Testing regular subexpressions followed by ? or +\n';
32var cnSingleSpace = ' ';
33var status = '';
34var statusmessages = new Array();
35var pattern = '';
36var patterns = new Array();
37var string = '';
38var strings = new Array();
39var actualmatch = '';
40var actualmatches = new Array();
41var expectedmatch = '';
42var expectedmatches = new Array();
43
44
45pattern = /^(\S+)?( ?)(B+)$/; //single space before second ? character
46 status = inSection(1);
47 string = 'AAABBB AAABBB '; //single space at middle and at end -
48 actualmatch = string.match(pattern);
49 expectedmatch = null;
50 addThis();
51
52 status = inSection(2);
53 string = 'AAABBB BBB'; //single space in the middle
54 actualmatch = string.match(pattern);
55 expectedmatch = Array(string, 'AAABBB', cnSingleSpace, 'BBB');
56 addThis();
57
58 status = inSection(3);
59 string = 'AAABBB AAABBB'; //single space in the middle
60 actualmatch = string.match(pattern);
61 expectedmatch = null;
62 addThis();
63
64
65pattern = /^(A+B)+$/;
66 status = inSection(4);
67 string = 'AABAAB';
68 actualmatch = string.match(pattern);
69 expectedmatch = Array(string, 'AAB');
70 addThis();
71
72 status = inSection(5);
73 string = 'ABAABAAAAAAB';
74 actualmatch = string.match(pattern);
75 expectedmatch = Array(string, 'AAAAAAB');
76 addThis();
77
78 status = inSection(6);
79 string = 'ABAABAABAB';
80 actualmatch = string.match(pattern);
81 expectedmatch = Array(string, 'AB');
82 addThis();
83
84 status = inSection(7);
85 string = 'ABAABAABABB';
86 actualmatch = string.match(pattern);
87 expectedmatch = null; // because string doesn't match at end
88 addThis();
89
90
91pattern = /^(A+1)+$/;
92 status = inSection(8);
93 string = 'AA1AA1';
94 actualmatch = string.match(pattern);
95 expectedmatch = Array(string, 'AA1');
96 addThis();
97
98
99pattern = /^(\w+\-)+$/;
100 status = inSection(9);
101 string = '';
102 actualmatch = string.match(pattern);
103 expectedmatch = null;
104 addThis();
105
106 status = inSection(10);
107 string = 'bla-';
108 actualmatch = string.match(pattern);
109 expectedmatch = Array(string, string);
110 addThis();
111
112 status = inSection(11);
113 string = 'bla-bla'; // hyphen missing at end -
114 actualmatch = string.match(pattern);
115 expectedmatch = null; //because string doesn't match at end
116 addThis();
117
118 status = inSection(12);
119 string = 'bla-bla-';
120 actualmatch = string.match(pattern);
121 expectedmatch = Array(string, 'bla-');
122 addThis();
123
124
125pattern = /^(\S+)+(A+)$/;
126 status = inSection(13);
127 string = 'asdldflkjAAA';
128 actualmatch = string.match(pattern);
129 expectedmatch = Array(string, 'asdldflkjAA', 'A');
130 addThis();
131
132 status = inSection(14);
133 string = 'asdldflkj AAA'; // space in middle
134 actualmatch = string.match(pattern);
135 expectedmatch = null; //because of the space
136 addThis();
137
138
139pattern = /^(\S+)+(\d+)$/;
140 status = inSection(15);
141 string = 'asdldflkj122211';
142 actualmatch = string.match(pattern);
143 expectedmatch = Array(string, 'asdldflkj12221', '1');
144 addThis();
145
146 status = inSection(16);
147 string = 'asdldflkj1111111aaa1';
148 actualmatch = string.match(pattern);
149 expectedmatch = Array(string, 'asdldflkj1111111aaa', '1');
150 addThis();
151
152
153/*
154 * This one comes from Stephen Ostermiller.
155 * See http://bugzilla.mozilla.org/show_bug.cgi?id=69989
156 */
157pattern = /^[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)+$/;
158 status = inSection(17);
159 string = 'some.host.tld';
160 actualmatch = string.match(pattern);
161 expectedmatch = Array(string, '.tld', '.');
162 addThis();
163
164
165
166//-------------------------------------------------------------------------------------------------
167test();
168//-------------------------------------------------------------------------------------------------
169
170
171
172function addThis()
173{
174 statusmessages[i] = status;
175 patterns[i] = pattern;
176 strings[i] = string;
177 actualmatches[i] = actualmatch;
178 expectedmatches[i] = expectedmatch;
179 i++;
180}
181
182
183function test()
184{
185 enterFunc ('test');
186 printBugNumber (bug);
187 printStatus (summary);
188 testRegExp(statusmessages, patterns, strings, actualmatches, expectedmatches);
189 exitFunc ('test');
190}