]> git.saurik.com Git - apple/javascriptcore.git/blob - tests/mozilla/ecma_3/RegExp/regress-57572.js
JavaScriptCore-1097.13.tar.gz
[apple/javascriptcore.git] / tests / mozilla / ecma_3 / RegExp / regress-57572.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: 28 December 2000
21 *
22 * SUMMARY: Testing regular expressions containing the ? character.
23 * Arose from Bugzilla bug 57572: "RegExp with ? matches incorrectly"
24 *
25 * See http://bugzilla.mozilla.org/show_bug.cgi?id=57572
26 *
27 */
28 //-----------------------------------------------------------------------------
29 var i = 0;
30 var bug = 57572;
31 var summary = 'Testing regular expressions containing "?"';
32 var cnEmptyString = ''; var cnSingleSpace = ' ';
33 var status = '';
34 var statusmessages = new Array();
35 var pattern = '';
36 var patterns = new Array();
37 var string = '';
38 var strings = new Array();
39 var actualmatch = '';
40 var actualmatches = new Array();
41 var expectedmatch = '';
42 var expectedmatches = new Array();
43
44
45 status = inSection(1);
46 pattern = /(\S+)?(.*)/;
47 string = 'Test this';
48 actualmatch = string.match(pattern);
49 expectedmatch = Array(string, 'Test', ' this'); //single space in front of 'this'
50 addThis();
51
52 status = inSection(2);
53 pattern = /(\S+)? ?(.*)/; //single space between the ? characters
54 string= 'Test this';
55 actualmatch = string.match(pattern);
56 expectedmatch = Array(string, 'Test', 'this'); //NO space in front of 'this'
57 addThis();
58
59 status = inSection(3);
60 pattern = /(\S+)?(.*)/;
61 string = 'Stupid phrase, with six - (short) words';
62 actualmatch = string.match(pattern);
63 expectedmatch = Array(string, 'Stupid', ' phrase, with six - (short) words'); //single space in front of 'phrase'
64 addThis();
65
66 status = inSection(4);
67 pattern = /(\S+)? ?(.*)/; //single space between the ? characters
68 string = 'Stupid phrase, with six - (short) words';
69 actualmatch = string.match(pattern);
70 expectedmatch = Array(string, 'Stupid', 'phrase, with six - (short) words'); //NO space in front of 'phrase'
71 addThis();
72
73
74 // let's add an extra back-reference this time - three instead of two -
75 status = inSection(5);
76 pattern = /(\S+)?( ?)(.*)/; //single space before second ? character
77 string = 'Stupid phrase, with six - (short) words';
78 actualmatch = string.match(pattern);
79 expectedmatch = Array(string, 'Stupid', cnSingleSpace, 'phrase, with six - (short) words');
80 addThis();
81
82 status = inSection(6);
83 pattern = /^(\S+)?( ?)(B+)$/; //single space before second ? character
84 string = 'AAABBB';
85 actualmatch = string.match(pattern);
86 expectedmatch = Array(string, 'AAABB', cnEmptyString, 'B');
87 addThis();
88
89 status = inSection(7);
90 pattern = /(\S+)?(!?)(.*)/;
91 string = 'WOW !!! !!!';
92 actualmatch = string.match(pattern);
93 expectedmatch = Array(string, 'WOW', cnEmptyString, ' !!! !!!');
94 addThis();
95
96 status = inSection(8);
97 pattern = /(.+)?(!?)(!+)/;
98 string = 'WOW !!! !!!';
99 actualmatch = string.match(pattern);
100 expectedmatch = Array(string, 'WOW !!! !!', cnEmptyString, '!');
101 addThis();
102
103
104
105 //-----------------------------------------------------------------------------
106 test();
107 //-----------------------------------------------------------------------------
108
109
110
111 function addThis()
112 {
113 statusmessages[i] = status;
114 patterns[i] = pattern;
115 strings[i] = string;
116 actualmatches[i] = actualmatch;
117 expectedmatches[i] = expectedmatch;
118 i++;
119 }
120
121
122 function test()
123 {
124 enterFunc ('test');
125 printBugNumber (bug);
126 printStatus (summary);
127 testRegExp(statusmessages, patterns, strings, actualmatches, expectedmatches);
128 exitFunc ('test');
129 }