18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/** 28e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * File Name: RegExp/exec-002.js 38e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * ECMA Section: 15.7.5.3 48e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Description: Based on ECMA 2 Draft 7 February 1999 58e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 68e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Test cases provided by rogerl@netscape.com 78e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 88e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Author: christine@netscape.com 98e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Date: 19 February 1999 108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */ 118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project var SECTION = "RegExp/exec-002"; 128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project var VERSION = "ECMA_2"; 138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project var TITLE = "RegExp.prototype.exec(string)"; 148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project startTest(); 168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project /* 188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * for each test case, verify: 198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * - type of object returned 208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * - length of the returned array 218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * - value of lastIndex 228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * - value of index 238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * - value of input 248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * - value of the array indices 258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */ 268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project AddRegExpCases( 288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project /(a|d|q|)x/i, 298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project "bcaDxqy", 308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3, 318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project ["Dx", "D"] ); 328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project AddRegExpCases( 348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project /(a|(e|q))(x|y)/, 358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project "bcaddxqy", 368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 6, 378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project ["qy","q","q","y"] ); 388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project AddRegExpCases( 418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project /a+b+d/, 428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project "aabbeeaabbs", 438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 0, 448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project null ); 458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project AddRegExpCases( 478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project /a*b/, 488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project "aaadaabaaa", 498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 4, 508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project ["aab"] ); 518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project AddRegExpCases( 538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project /a*b/, 548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project "dddb", 558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3, 568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project ["b"] ); 578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project AddRegExpCases( 598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project /a*b/, 608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project "xxx", 618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 0, 628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project null ); 638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project AddRegExpCases( 658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project /x\d\dy/, 668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project "abcx45ysss235", 678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3, 688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project ["x45y"] ); 698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project AddRegExpCases( 718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project /[^abc]def[abc]+/, 728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project "abxdefbb", 738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2, 748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project ["xdefbb"] ); 758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project AddRegExpCases( 778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project /(a*)baa/, 788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project "ccdaaabaxaabaa", 798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 9, 808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project ["aabaa", "aa"] ); 818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project AddRegExpCases( 838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project /(a*)baa/, 848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project "aabaa", 858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 0, 868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project ["aabaa", "aa"] ); 878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project AddRegExpCases( 898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project /q(a|b)*q/, 908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project "xxqababqyy", 918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2, 928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project ["qababq", "b"] ); 938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project AddRegExpCases( 958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project /(a(.|[^d])c)*/, 968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project "adcaxc", 978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 0, 988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project ["adcaxc", "axc", "x"] ); 998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project AddRegExpCases( 1018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project /(a*)b\1/, 1028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project "abaaaxaabaayy", 1038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 0, 1048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project ["aba", "a"] ); 1058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project AddRegExpCases( 1078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project /(a*)b\1/, 1088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project "abaaaxaabaayy", 1098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 0, 1108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project ["aba", "a"] ); 1118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project AddRegExpCases( 1138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project /(a*)b\1/, 1148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project "cccdaaabaxaabaayy", 1158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 6, 1168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project ["aba", "a"] ); 1178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project AddRegExpCases( 1198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project /(a*)b\1/, 1208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project "cccdaaabqxaabaayy", 1218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 7, 1228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project ["b", ""] ); 1238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project AddRegExpCases( 1258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project /"(.|[^"\\\\])*"/, 1268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 'xx\"makudonarudo\"yy', 1278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2, 1288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project ["\"makudonarudo\"", "o"] ); 1298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project AddRegExpCases( 1318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project /"(.|[^"\\\\])*"/, 1328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project "xx\"ma\"yy", 1338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2, 1348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project ["\"ma\"", "a"] ); 1358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project test(); 1378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectfunction AddRegExpCases( 1398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project regexp, pattern, index, matches_array ) { 1408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // prevent a runtime error 1428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if ( regexp.exec(pattern) == null || matches_array == null ) { 1448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project AddTestCase( 1458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project regexp + ".exec(" + pattern +")", 1468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project matches_array, 1478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project regexp.exec(pattern) ); 1488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return; 1508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 1518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project AddTestCase( 1528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project regexp + ".exec(" + pattern +").length", 1538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project matches_array.length, 1548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project regexp.exec(pattern).length ); 1558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project AddTestCase( 1578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project regexp + ".exec(" + pattern +").index", 1588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project index, 1598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project regexp.exec(pattern).index ); 1608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project AddTestCase( 1628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project regexp + ".exec(" + pattern +").input", 1638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project pattern, 1648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project regexp.exec(pattern).input ); 1658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project AddTestCase( 1678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project regexp + ".exec(" + pattern +").toString()", 1688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project matches_array.toString(), 1698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project regexp.exec(pattern).toString() ); 1708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* 1718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project var limit = matches_array.length > regexp.exec(pattern).length 1728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project ? matches_array.length 1738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project : regexp.exec(pattern).length; 1748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project for ( var matches = 0; matches < limit; matches++ ) { 1768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project AddTestCase( 1778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project regexp + ".exec(" + pattern +")[" + matches +"]", 1788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project matches_array[matches], 1798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project regexp.exec(pattern)[matches] ); 1808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 1818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 1828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 183