michael@0: /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ michael@0: /* This Source Code Form is subject to the terms of the Mozilla Public michael@0: * License, v. 2.0. If a copy of the MPL was not distributed with this michael@0: * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ michael@0: michael@0: michael@0: /** michael@0: File Name: 15.4-2.js michael@0: ECMA Section: 15.4 Array Objects michael@0: michael@0: Description: Whenever a property is added whose name is an array michael@0: index, the length property is changed, if necessary, michael@0: to be one more than the numeric value of that array michael@0: index; and whenever the length property is changed, michael@0: every property whose name is an array index whose value michael@0: is not smaller than the new length is automatically michael@0: deleted. This constraint applies only to the Array michael@0: object itself, and is unaffected by length or array michael@0: index properties that may be inherited from its michael@0: prototype. michael@0: michael@0: Author: christine@netscape.com michael@0: Date: 28 october 1997 michael@0: michael@0: */ michael@0: var SECTION = "15.4-2"; michael@0: var VERSION = "ECMA_1"; michael@0: startTest(); michael@0: var TITLE = "Array Objects"; michael@0: michael@0: writeHeaderToLog( SECTION + " "+ TITLE); michael@0: michael@0: new TestCase( SECTION, michael@0: "var arr=new Array(); arr[Math.pow(2,16)] = 'hi'; arr.length", michael@0: Math.pow(2,16)+1, michael@0: eval("var arr=new Array(); arr[Math.pow(2,16)] = 'hi'; arr.length") ); michael@0: michael@0: new TestCase( SECTION, michael@0: "var arr=new Array(); arr[Math.pow(2,30)-2] = 'hi'; arr.length", michael@0: Math.pow(2,30)-1, michael@0: eval("var arr=new Array(); arr[Math.pow(2,30)-2] = 'hi'; arr.length") ); michael@0: michael@0: new TestCase( SECTION, michael@0: "var arr=new Array(); arr[Math.pow(2,30)-1] = 'hi'; arr.length", michael@0: Math.pow(2,30), michael@0: eval("var arr=new Array(); arr[Math.pow(2,30)-1] = 'hi'; arr.length") ); michael@0: michael@0: new TestCase( SECTION, michael@0: "var arr=new Array(); arr[Math.pow(2,30)] = 'hi'; arr.length", michael@0: Math.pow(2,30)+1, michael@0: eval("var arr=new Array(); arr[Math.pow(2,30)] = 'hi'; arr.length") ); michael@0: michael@0: michael@0: new TestCase( SECTION, michael@0: "var arr=new Array(); arr[Math.pow(2,31)-2] = 'hi'; arr.length", michael@0: Math.pow(2,31)-1, michael@0: eval("var arr=new Array(); arr[Math.pow(2,31)-2] = 'hi'; arr.length") ); michael@0: michael@0: new TestCase( SECTION, michael@0: "var arr=new Array(); arr[Math.pow(2,31)-1] = 'hi'; arr.length", michael@0: Math.pow(2,31), michael@0: eval("var arr=new Array(); arr[Math.pow(2,31)-1] = 'hi'; arr.length") ); michael@0: michael@0: new TestCase( SECTION, michael@0: "var arr=new Array(); arr[Math.pow(2,31)] = 'hi'; arr.length", michael@0: Math.pow(2,31)+1, michael@0: eval("var arr=new Array(); arr[Math.pow(2,31)] = 'hi'; arr.length") ); michael@0: michael@0: new TestCase( SECTION, michael@0: "var arr = new Array(0,1,2,3,4,5); arr.length = 2; String(arr)", michael@0: "0,1", michael@0: eval("var arr = new Array(0,1,2,3,4,5); arr.length = 2; String(arr)") ); michael@0: michael@0: new TestCase( SECTION, michael@0: "var arr = new Array(0,1); arr.length = 3; String(arr)", michael@0: "0,1,", michael@0: eval("var arr = new Array(0,1); arr.length = 3; String(arr)") ); michael@0: michael@0: test(); michael@0: