1/* ***** BEGIN LICENSE BLOCK *****
2* Version: NPL 1.1/GPL 2.0/LGPL 2.1
3*
4* The contents of this file are subject to the Netscape Public License
5* Version 1.1 (the "License"); you may not use this file except in
6* compliance with the License. You may obtain a copy of the License at
7* http://www.mozilla.org/NPL/
8*
9* Software distributed under the License is distributed on an "AS IS" basis,
10* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
11* for the specific language governing rights and limitations under the
12* License.
13*
14* The Original Code is JavaScript Engine testing utilities.
15*
16* The Initial Developer of the Original Code is Netscape Communications Corp.
17* Portions created by the Initial Developer are Copyright (C) 2003
18* the Initial Developer. All Rights Reserved.
19*
20* Contributor(s): drbrain-bugzilla@segment7.net, pschwartau@netscape.com
21*
22* Alternatively, the contents of this file may be used under the terms of
23* either the GNU General Public License Version 2 or later (the "GPL"), or
24* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
25* in which case the provisions of the GPL or the LGPL are applicable instead
26* of those above. If you wish to allow use of your version of this file only
27* under the terms of either the GPL or the LGPL, and not to allow others to
28* use your version of this file under the terms of the NPL, indicate your
29* decision by deleting the provisions above and replace them with the notice
30* and other provisions required by the GPL or the LGPL. If you do not delete
31* the provisions above, a recipient may use your version of this file under
32* the terms of any one of the NPL, the GPL or the LGPL.
33*
34* ***** END LICENSE BLOCK *****
35*
36*
37* Date:    18 April 2003
38* SUMMARY: Testing regexp with many backreferences
39* See http://bugzilla.mozilla.org/show_bug.cgi?id=202564
40*
41* Note that in Section 1 below, we expect the 1st and 4th backreferences
42* to hold |undefined| instead of the empty strings one gets in Perl and IE6.
43* This is because per ECMA, regexp backreferences must hold |undefined|
44* if not used. See http://bugzilla.mozilla.org/show_bug.cgi?id=123437.
45*
46*/
47//-----------------------------------------------------------------------------
48var i = 0;
49var bug = 202564;
50var summary = 'Testing regexp with many backreferences';
51var status = '';
52var statusmessages = new Array();
53var pattern = '';
54var patterns = new Array();
55var string = '';
56var strings = new Array();
57var actualmatch = '';
58var actualmatches = new Array();
59var expectedmatch = '';
60var expectedmatches = new Array();
61
62
63status = inSection(1);
64string = 'Seattle, WA to Buckley, WA';
65pattern = /(?:(.+), )?(.+), (..) to (?:(.+), )?(.+), (..)/;
66actualmatch = string.match(pattern);
67expectedmatch = Array(string, undefined, "Seattle", "WA", undefined, "Buckley", "WA");
68addThis();
69
70
71
72//-----------------------------------------------------------------------------
73test();
74//-----------------------------------------------------------------------------
75
76
77
78function addThis()
79{
80  statusmessages[i] = status;
81  patterns[i] = pattern;
82  strings[i] = string;
83  actualmatches[i] = actualmatch;
84  expectedmatches[i] = expectedmatch;
85  i++;
86}
87
88
89function test()
90{
91  enterFunc ('test');
92  printBugNumber (bug);
93  printStatus (summary);
94  testRegExp(statusmessages, patterns, strings, actualmatches, expectedmatches);
95  exitFunc ('test');
96}
97