18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ 28e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* ***** BEGIN LICENSE BLOCK ***** 38e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Version: MPL 1.1/GPL 2.0/LGPL 2.1 48e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 58e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * The contents of this file are subject to the Mozilla Public License Version 68e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 1.1 (the "License"); you may not use this file except in compliance with 78e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * the License. You may obtain a copy of the License at 88e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * http://www.mozilla.org/MPL/ 98e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Software distributed under the License is distributed on an "AS IS" basis, 118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License 128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * for the specific language governing rights and limitations under the 138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * License. 148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * The Original Code is JavaScript Engine testing utilities. 168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * The Initial Developer of the Original Code is 188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Mozilla Foundation. 198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Portions created by the Initial Developer are Copyright (C) 2005 208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * the Initial Developer. All Rights Reserved. 218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Contributor(s): Mike Shaver 238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Bob Clary 248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Alternatively, the contents of this file may be used under the terms of 268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * either the GNU General Public License Version 2 or later (the "GPL"), or 278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), 288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * in which case the provisions of the GPL or the LGPL are applicable instead 298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * of those above. If you wish to allow use of your version of this file only 308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * under the terms of either the GPL or the LGPL, and not to allow others to 318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * use your version of this file under the terms of the MPL, indicate your 328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * decision by deleting the provisions above and replace them with the notice 338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * and other provisions required by the GPL or the LGPL. If you do not delete 348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * the provisions above, a recipient may use your version of this file under 358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * the terms of any one of the MPL, the GPL or the LGPL. 368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * ***** END LICENSE BLOCK ***** */ 388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project//----------------------------------------------------------------------------- 398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvar bug = 290592; 408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvar summary = 'Array extras: forEach, indexOf, filter, map'; 418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvar actual = ''; 428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvar expect = ''; 438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectprintBugNumber (bug); 458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectprintStatus (summary); 468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project// Utility functions 488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectfunction identity(v, index, array) 508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project reportCompare(v, array[index], 'identity: check callback argument consistency'); 528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return v; 538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectfunction mutate(v, index, array) 568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project reportCompare(v, array[index], 'mutate: check callback argument consistency'); 588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (index == 0) 598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project array[1] = 'mutated'; 618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project delete array[2]; 628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project array.push('not visited'); 638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return v; 658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectfunction mutateForEach(v, index, array) 688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project reportCompare(v, array[index], 'mutateForEach: check callback argument consistency'); 708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (index == 0) 718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project array[1] = 'mutated'; 738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project delete array[2]; 748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project array.push('not visited'); 758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project actual += v + ','; 778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectfunction makeUpperCase(v, index, array) 808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project reportCompare(v, array[index], 'makeUpperCase: check callback argument consistency'); 828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project try 838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return v.toUpperCase(); 858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project catch(e) 878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return v; 908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectfunction concat(v, index, array) 948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project reportCompare(v, array[index], 'concat: check callback argument consistency'); 968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project actual += v + ','; 978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectfunction isUpperCase(v, index, array) 1018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 1028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project reportCompare(v, array[index], 'isUpperCase: check callback argument consistency'); 1038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project try 1048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 1058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return v == v.toUpperCase(); 1068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 1078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project catch(e) 1088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 1098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 1108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return false; 1118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 1128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectfunction isString(v, index, array) 1148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 1158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project reportCompare(v, array[index], 'isString: check callback argument consistency'); 1168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return typeof v == 'string'; 1178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 1188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project// callback object. 1218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectfunction ArrayCallback(state) 1228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 1238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project this.state = state; 1248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 1258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectArrayCallback.prototype.makeUpperCase = function (v, index, array) 1278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 1288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project reportCompare(v, array[index], 'ArrayCallback.prototype.makeUpperCase: check callback argument consistency'); 1298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project try 1308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 1318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return this.state ? v.toUpperCase() : v.toLowerCase(); 1328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 1338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project catch(e) 1348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 1358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 1368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return v; 1378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}; 1388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectArrayCallback.prototype.concat = function(v, index, array) 1408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 1418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project reportCompare(v, array[index], 'ArrayCallback.prototype.concat: check callback argument consistency'); 1428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project actual += v + ','; 1438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}; 1448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectArrayCallback.prototype.isUpperCase = function(v, index, array) 1468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 1478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project reportCompare(v, array[index], 'ArrayCallback.prototype.isUpperCase: check callback argument consistency'); 1488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project try 1498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 1508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return this.state ? true : (v == v.toUpperCase()); 1518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 1528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project catch(e) 1538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 1548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 1558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return false; 1568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}; 1578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectArrayCallback.prototype.isString = function(v, index, array) 1598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 1608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project reportCompare(v, array[index], 'ArrayCallback.prototype.isString: check callback argument consistency'); 1618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return this.state ? true : (typeof v == 'string'); 1628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}; 1638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectfunction dumpError(e) 1658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 1668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project var s = e.name + ': ' + e.message + 1678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project ' File: ' + e.fileName + 1688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project ', Line: ' + e.lineNumber + 1698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project ', Stack: ' + e.stack; 1708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return s; 1718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 1728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvar obj; 1748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvar strings = ['hello', 'Array', 'WORLD']; 1758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvar mixed = [0, '0', 0]; 1768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvar sparsestrings = new Array(); 1778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectsparsestrings[2] = 'sparse'; 1788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectif ('map' in Array.prototype) 1808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 1818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project// see http://developer-test.mozilla.org/docs/Core_JavaScript_1.5_Reference:Objects:Array:map 1828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // test Array.map 1848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // map has 1 required argument 1868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project expect = 1; 1878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project actual = Array.prototype.map.length; 1888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project reportCompare(expect, actual, 'Array.prototype.map.length == 1'); 1898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // throw TypeError if no callback function specified 1918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project expect = 'TypeError'; 1928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project try 1938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 1948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project strings.map(); 1958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project actual = 'no error'; 1968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 1978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project catch(e) 1988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 1998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project actual = e.name; 2008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 2018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project reportCompare(expect, actual, 'Array.map(undefined) throws TypeError'); 2028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project try 2048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 2058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // identity map 2068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project expect = 'hello,Array,WORLD'; 2078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project actual = strings.map(identity).toString(); 2088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 2098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project catch(e) 2108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 2118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project actual = dumpError(e); 2128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 2138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project reportCompare(expect, actual, 'Array.map: identity'); 2148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project try 2178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 2188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project expect = 'hello,mutated,'; 2198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project actual = strings.map(mutate).toString(); 2208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 2218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project catch(e) 2228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 2238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project actual = dumpError(e); 2248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 2258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project reportCompare(expect, actual, 'Array.map: mutate'); 2268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project strings = ['hello', 'Array', 'WORLD']; 2288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project try 2308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 2318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // general map 2328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project expect = 'HELLO,ARRAY,WORLD'; 2338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project actual = strings.map(makeUpperCase).toString(); 2348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 2358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project catch(e) 2368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 2378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project actual = dumpError(e); 2388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 2398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project reportCompare(expect, actual, 'Array.map: uppercase'); 2408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project try 2428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 2438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // pass object method as map callback 2448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project expect = 'HELLO,ARRAY,WORLD'; 2458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project var obj = new ArrayCallback(true); 2468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project actual = strings.map(obj.makeUpperCase, obj).toString(); 2478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 2488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project catch(e) 2498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 2508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project actual = dumpError(e); 2518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 2528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project reportCompare(expect, actual, 'Array.map: uppercase with object callback'); 2538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project try 2558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 2568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project expect = 'hello,array,world'; 2578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project obj = new ArrayCallback(false); 2588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project actual = strings.map(obj.makeUpperCase, obj).toString(); 2598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 2608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project catch(e) 2618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 2628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project actual = dumpError(e); 2638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 2648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project reportCompare(expect, actual, 'Array.map: lowercase with object callback'); 2658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project try 2678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 2688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // map on sparse arrays 2698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project expect = ',,SPARSE'; 2708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project actual = sparsestrings.map(makeUpperCase).toString(); 2718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 2728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project catch(e) 2738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 2748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project actual = dumpError(e); 2758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 2768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project reportCompare(expect, actual, 'Array.map: uppercase on sparse array'); 2778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 2788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectif ('forEach' in Array.prototype) 2808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 2818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project// see http://developer-test.mozilla.org/docs/Core_JavaScript_1.5_Reference:Objects:Array:forEach 2828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // test Array.forEach 2848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // forEach has 1 required argument 2868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project expect = 1; 2878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project actual = Array.prototype.forEach.length; 2888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project reportCompare(expect, actual, 'Array.prototype.forEach.length == 1'); 2898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // throw TypeError if no callback function specified 2918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project expect = 'TypeError'; 2928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project try 2938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 2948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project strings.forEach(); 2958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project actual = 'no error'; 2968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 2978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project catch(e) 2988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 2998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project actual = e.name; 3008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 3018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project reportCompare(expect, actual, 'Array.forEach(undefined) throws TypeError'); 3028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project try 3048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 3058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // general forEach 3068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project expect = 'hello,Array,WORLD,'; 3078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project actual = ''; 3088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project strings.forEach(concat); 3098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 3108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project catch(e) 3118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 3128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project actual = dumpError(e); 3138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 3148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project reportCompare(expect, actual, 'Array.forEach'); 3158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project try 3178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 3188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project expect = 'hello,mutated,'; 3198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project actual = ''; 3208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project strings.forEach(mutateForEach); 3218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 3228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project catch(e) 3238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 3248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project actual = dumpError(e); 3258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 3268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project reportCompare(expect, actual, 'Array.forEach: mutate'); 3278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project strings = ['hello', 'Array', 'WORLD']; 3298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project try 3338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 3348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // pass object method as forEach callback 3358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project expect = 'hello,Array,WORLD,'; 3368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project actual = ''; 3378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project obj = new ArrayCallback(true); 3388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project strings.forEach(obj.concat, obj); 3398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 3408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project catch(e) 3418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 3428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project actual = dumpError(e); 3438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 3448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project reportCompare(expect, actual, 'Array.forEach with object callback 1'); 3458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project try 3478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 3488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project expect = 'hello,Array,WORLD,'; 3498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project actual = ''; 3508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project obj = new ArrayCallback(false); 3518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project strings.forEach(obj.concat, obj); 3528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 3538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project catch(e) 3548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 3558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project actual = dumpError(e); 3568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 3578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project reportCompare(expect, actual, 'Array.forEach with object callback 2'); 3588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project try 3608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 3618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // test forEach on sparse arrays 3628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // see https://bugzilla.mozilla.org/show_bug.cgi?id=311082 3638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project expect = 'sparse,'; 3648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project actual = ''; 3658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project sparsestrings.forEach(concat); 3668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 3678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project catch(e) 3688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 3698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project actual = dumpError(e); 3708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 3718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project reportCompare(expect, actual, 'Array.forEach on sparse array'); 3728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 3738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectif ('filter' in Array.prototype) 3758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 3768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project// see http://developer-test.mozilla.org/docs/Core_JavaScript_1.5_Reference:Objects:Array:filter 3778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // test Array.filter 3798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // filter has 1 required argument 3818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project expect = 1; 3828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project actual = Array.prototype.filter.length; 3838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project reportCompare(expect, actual, 'Array.prototype.filter.length == 1'); 3848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // throw TypeError if no callback function specified 3868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project expect = 'TypeError'; 3878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project try 3888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 3898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project strings.filter(); 3908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project actual = 'no error'; 3918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 3928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project catch(e) 3938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 3948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project actual = e.name; 3958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 3968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project reportCompare(expect, actual, 'Array.filter(undefined) throws TypeError'); 3978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project try 3998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 4008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // test general filter 4018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project expect = 'WORLD'; 4028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project actual = strings.filter(isUpperCase).toString(); 4038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 4048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project catch(e) 4058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 4068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project actual = dumpError(e); 4078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 4088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project reportCompare(expect, actual, 'Array.filter'); 4098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 4108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project try 4118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 4128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project expect = 'WORLD'; 4138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project obj = new ArrayCallback(false); 4148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project actual = strings.filter(obj.isUpperCase, obj).toString(); 4158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 4168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project catch(e) 4178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 4188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project actual = dumpError(e); 4198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 4208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project reportCompare(expect, actual, 'Array.filter object callback 1'); 4218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 4228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project try 4238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 4248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project expect = 'hello,Array,WORLD'; 4258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project obj = new ArrayCallback(true); 4268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project actual = strings.filter(obj.isUpperCase, obj).toString(); 4278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 4288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project catch(e) 4298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 4308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project actual = dumpError(e); 4318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 4328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project reportCompare(expect, actual, 'Array.filter object callback 2'); 4338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 4348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 4358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectif ('every' in Array.prototype) 4368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 4378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project// see http://developer-test.mozilla.org/docs/Core_JavaScript_1.5_Reference:Objects:Array:every 4388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 4398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // test Array.every 4408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 4418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // every has 1 required argument 4428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 4438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project expect = 1; 4448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project actual = Array.prototype.every.length; 4458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project reportCompare(expect, actual, 'Array.prototype.every.length == 1'); 4468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 4478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // throw TypeError if no every callback function specified 4488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project expect = 'TypeError'; 4498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project try 4508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 4518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project strings.every(); 4528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project actual = 'no error'; 4538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 4548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project catch(e) 4558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 4568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project actual = e.name; 4578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 4588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project reportCompare(expect, actual, 'Array.every(undefined) throws TypeError'); 4598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 4608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // test general every 4618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 4628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project try 4638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 4648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project expect = true; 4658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project actual = strings.every(isString); 4668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 4678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project catch(e) 4688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 4698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project actual = dumpError(e); 4708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 4718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project reportCompare(expect, actual, 'strings: every element is a string'); 4728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 4738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project try 4748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 4758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project expect = false; 4768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project actual = mixed.every(isString); 4778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 4788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project catch(e) 4798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 4808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project actual = dumpError(e); 4818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 4828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project reportCompare(expect, actual, 'mixed: every element is a string'); 4838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 4848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project try 4858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 4868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // see https://bugzilla.mozilla.org/show_bug.cgi?id=311082 4878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project expect = true; 4888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project actual = sparsestrings.every(isString); 4898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 4908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project catch(e) 4918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 4928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project actual = dumpError(e); 4938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 4948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project reportCompare(expect, actual, 'sparsestrings: every element is a string'); 4958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 4968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // pass object method as map callback 4978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 4988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project obj = new ArrayCallback(false); 4998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 5008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project try 5018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 5028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project expect = true; 5038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project actual = strings.every(obj.isString, obj); 5048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 5058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project catch(e) 5068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 5078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project actual = dumpError(e); 5088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 5098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project reportCompare(expect, actual, 'strings: every element is a string, via object callback'); 5108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 5118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project try 5128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 5138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project expect = false; 5148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project actual = mixed.every(obj.isString, obj); 5158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 5168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project catch(e) 5178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 5188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project actual = dumpError(e) ; 5198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 5208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project reportCompare(expect, actual, 'mixed: every element is a string, via object callback'); 5218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 5228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project try 5238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 5248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // see https://bugzilla.mozilla.org/show_bug.cgi?id=311082 5258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project expect = true; 5268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project actual = sparsestrings.every(obj.isString, obj); 5278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 5288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project catch(e) 5298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 5308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project actual = dumpError(e); 5318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 5328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project reportCompare(expect, actual, 'sparsestrings: every element is a string, via object callback'); 5338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 5348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 5358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 5368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectif ('some' in Array.prototype) 5378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 5388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project// see http://developer-test.mozilla.org/docs/Core_JavaScript_1.5_Reference:Objects:Array:some 5398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 5408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // test Array.some 5418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 5428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // some has 1 required argument 5438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 5448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project expect = 1; 5458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project actual = Array.prototype.some.length; 5468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project reportCompare(expect, actual, 'Array.prototype.some.length == 1'); 5478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 5488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // throw TypeError if no some callback function specified 5498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project expect = 'TypeError'; 5508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project try 5518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 5528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project strings.some(); 5538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project actual = 'no error'; 5548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 5558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project catch(e) 5568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 5578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project actual = e.name; 5588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 5598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project reportCompare(expect, actual, 'Array.some(undefined) throws TypeError'); 5608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 5618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // test general some 5628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 5638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project try 5648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 5658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project expect = true; 5668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project actual = strings.some(isString); 5678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 5688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project catch(e) 5698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 5708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project actual = dumpError(e); 5718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 5728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project reportCompare(expect, actual, 'strings: some element is a string'); 5738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 5748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project try 5758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 5768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project expect = true; 5778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project actual = mixed.some(isString); 5788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 5798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project catch(e) 5808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 5818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project actual = dumpError(e); 5828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 5838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project reportCompare(expect, actual, 'mixed: some element is a string'); 5848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 5858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project try 5868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 5878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project expect = true; 5888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project actual = sparsestrings.some(isString); 5898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 5908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project catch(e) 5918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 5928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project actual = dumpError(e); 5938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 5948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project reportCompare(expect, actual, 'sparsestrings: some element is a string'); 5958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 5968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // pass object method as map callback 5978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 5988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project obj = new ArrayCallback(false); 5998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 6008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project try 6018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 6028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project expect = true; 6038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project actual = strings.some(obj.isString, obj); 6048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 6058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project catch(e) 6068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 6078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project actual = dumpError(e); 6088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 6098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project reportCompare(expect, actual, 'strings: some element is a string, via object callback'); 6108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 6118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project try 6128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 6138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project expect = true; 6148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project actual = mixed.some(obj.isString, obj); 6158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 6168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project catch(e) 6178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 6188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project actual = dumpError(e); 6198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 6208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project reportCompare(expect, actual, 'mixed: some element is a string, via object callback'); 6218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 6228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project try 6238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 6248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project expect = true; 6258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project actual = sparsestrings.some(obj.isString, obj); 6268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 6278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project catch(e) 6288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 6298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project actual = dumpError(e); 6308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 6318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project reportCompare(expect, actual, 'sparsestrings: some element is a string, via object callback'); 6328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 6338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 6348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 6358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectif ('indexOf' in Array.prototype) 6368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 6378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project// see http://developer-test.mozilla.org/docs/Core_JavaScript_1.5_Reference:Objects:Array:indexOf 6388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 6398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // test Array.indexOf 6408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 6418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // indexOf has 1 required argument 6428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 6438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project expect = 1; 6448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project actual = Array.prototype.indexOf.length; 6458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project reportCompare(expect, actual, 'Array.prototype.indexOf.length == 1'); 6468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 6478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // test general indexOf 6488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 6498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project try 6508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 6518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project expect = -1; 6528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project actual = mixed.indexOf('not found'); 6538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 6548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project catch(e) 6558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 6568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project actual = dumpError(e); 6578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 6588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project reportCompare(expect, actual, 'indexOf returns -1 if value not found'); 6598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 6608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project try 6618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 6628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project expect = 0; 6638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project actual = mixed.indexOf(0); 6648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 6658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project catch(e) 6668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 6678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project actual = dumpError(e); 6688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 6698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project reportCompare(expect, actual, 'indexOf matches using strict equality'); 6708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 6718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project try 6728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 6738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project expect = 1; 6748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project actual = mixed.indexOf('0'); 6758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 6768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project catch(e) 6778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 6788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project actual = dumpError(e); 6798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 6808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project reportCompare(expect, actual, 'indexOf matches using strict equality'); 6818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 6828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project try 6838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 6848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project expect = 2; 6858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project actual = mixed.indexOf(0, 1); 6868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 6878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project catch(e) 6888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project { 6898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project actual = dumpError(e); 6908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 6918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project reportCompare(expect, actual, 'indexOf begins searching at fromIndex'); 6928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 6938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 694