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