18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* ***** BEGIN LICENSE BLOCK *****
28e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* Version: NPL 1.1/GPL 2.0/LGPL 2.1
38e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*
48e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* The contents of this file are subject to the Netscape Public License
58e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* Version 1.1 (the "License"); you may not use this file except in
68e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* compliance with the License. You may obtain a copy of the License at
78e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* http://www.mozilla.org/NPL/
88e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*
98e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* Software distributed under the License is distributed on an "AS IS" basis,
108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* for the specific language governing rights and limitations under the
128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* License.
138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*
148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* The Original Code is JavaScript Engine testing utilities.
158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*
168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* The Initial Developer of the Original Code is Netscape Communications Corp.
178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* Portions created by the Initial Developer are Copyright (C) 2002
188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* the Initial Developer. All Rights Reserved.
198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*
208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* Contributor(s): rogerl@netscape.com, pschwartau@netscape.com
218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*
228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* Alternatively, the contents of this file may be used under the terms of
238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* either the GNU General Public License Version 2 or later (the "GPL"), or
248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* in which case the provisions of the GPL or the LGPL are applicable instead
268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* of those above. If you wish to allow use of your version of this file only
278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* under the terms of either the GPL or the LGPL, and not to allow others to
288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* use your version of this file under the terms of the NPL, indicate your
298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* decision by deleting the provisions above and replace them with the notice
308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* and other provisions required by the GPL or the LGPL. If you do not delete
318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* the provisions above, a recipient may use your version of this file under
328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* the terms of any one of the NPL, the GPL or the LGPL.
338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*
348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* ***** END LICENSE BLOCK *****
358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*
368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*
378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* Date:    09 July 2002
388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* SUMMARY: RegExp conformance test
398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*
408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*   These testcases are derived from the examples in the ECMA-262 Ed.3 spec
418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*   scattered through section 15.10.2.
428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*
438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/
448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project//-----------------------------------------------------------------------------
458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvar i = 0;
468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvar bug = '(none)';
478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvar summary = 'RegExp conformance test';
488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvar status = '';
498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvar statusmessages = new Array();
508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvar pattern = '';
518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvar patterns = new Array();
528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvar string = '';
538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvar strings = new Array();
548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvar actualmatch = '';
558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvar actualmatches = new Array();
568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvar expectedmatch = '';
578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvar expectedmatches = new Array();
588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectstatus = inSection(1);
618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectpattern = /a|ab/;
628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectstring = 'abc';
638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectactualmatch = string.match(pattern);
648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectexpectedmatch = Array('a');
658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectaddThis();
668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectstatus = inSection(2);
688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectpattern = /((a)|(ab))((c)|(bc))/;
698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectstring = 'abc';
708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectactualmatch = string.match(pattern);
718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectexpectedmatch = Array('abc', 'a', 'a', undefined, 'bc', undefined, 'bc');
728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectaddThis();
738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectstatus = inSection(3);
758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectpattern = /a[a-z]{2,4}/;
768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectstring = 'abcdefghi';
778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectactualmatch = string.match(pattern);
788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectexpectedmatch = Array('abcde');
798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectaddThis();
808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectstatus = inSection(4);
828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectpattern = /a[a-z]{2,4}?/;
838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectstring = 'abcdefghi';
848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectactualmatch = string.match(pattern);
858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectexpectedmatch = Array('abc');
868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectaddThis();
878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectstatus = inSection(5);
898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectpattern = /(aa|aabaac|ba|b|c)*/;
908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectstring = 'aabaac';
918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectactualmatch = string.match(pattern);
928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectexpectedmatch = Array('aaba', 'ba');
938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectaddThis();
948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectstatus = inSection(6);
968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectpattern = /^(a+)\1*,\1+$/;
978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectstring = 'aaaaaaaaaa,aaaaaaaaaaaaaaa';
988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectactualmatch = string.match(pattern);
998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectexpectedmatch = Array('aaaaaaaaaa,aaaaaaaaaaaaaaa', 'aaaaa');
1008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectaddThis();
1018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectstatus = inSection(7);
1038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectpattern = /(z)((a+)?(b+)?(c))*/;
1048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectstring = 'zaacbbbcac';
1058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectactualmatch = string.match(pattern);
1068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectexpectedmatch = Array('zaacbbbcac', 'z', 'ac', 'a', undefined, 'c');
1078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectaddThis();
1088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectstatus = inSection(8);
1108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectpattern = /(a*)*/;
1118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectstring = 'b';
1128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectactualmatch = string.match(pattern);
1138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectexpectedmatch = Array('', undefined);
1148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectaddThis();
1158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectstatus = inSection(9);
1178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectpattern = /(a*)b\1+/;
1188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectstring = 'baaaac';
1198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectactualmatch = string.match(pattern);
1208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectexpectedmatch = Array('b', '');
1218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectaddThis();
1228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectstatus = inSection(10);
1248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectpattern = /(?=(a+))/;
1258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectstring = 'baaabac';
1268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectactualmatch = string.match(pattern);
1278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectexpectedmatch = Array('', 'aaa');
1288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectaddThis();
1298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectstatus = inSection(11);
1318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectpattern = /(?=(a+))a*b\1/;
1328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectstring = 'baaabac';
1338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectactualmatch = string.match(pattern);
1348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectexpectedmatch = Array('aba', 'a');
1358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectaddThis();
1368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectstatus = inSection(12);
1388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectpattern = /(.*?)a(?!(a+)b\2c)\2(.*)/;
1398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectstring = 'baaabaac';
1408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectactualmatch = string.match(pattern);
1418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectexpectedmatch = Array('baaabaac', 'ba', undefined, 'abaac');
1428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectaddThis();
1438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectstatus = inSection(13);
1458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectpattern = /(?=(a+))/;
1468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectstring = 'baaabac';
1478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectactualmatch = string.match(pattern);
1488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectexpectedmatch = Array('', 'aaa');
1498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectaddThis();
1508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project//-------------------------------------------------------------------------------------------------
1548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projecttest();
1558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project//-------------------------------------------------------------------------------------------------
1568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectfunction addThis()
1598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{
1608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project  statusmessages[i] = status;
1618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project  patterns[i] = pattern;
1628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project  strings[i] = string;
1638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project  actualmatches[i] = actualmatch;
1648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project  expectedmatches[i] = expectedmatch;
1658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project  i++;
1668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
1678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectfunction test()
1708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{
1718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project  enterFunc ('test');
1728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project  printBugNumber (bug);
1738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project  printStatus (summary);
1748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project  testRegExp(statusmessages, patterns, strings, actualmatches, expectedmatches);
1758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project  exitFunc ('test');
1768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
177