//------------------------------------------------------------------------------------------------------- // Copyright (C) Microsoft. All rights reserved. // Licensed under the MIT license. See LICENSE.txt file in the project root for full license information. //------------------------------------------------------------------------------------------------------- function write(args) { WScript.Echo(args); } write("Test case 1"); for(var i =0;i<10;i++) { Object.defineProperty(Array.prototype, i, { get: function (i) { return function () { return "p"+i; } }(i), configurable: true, enumerable: true }); } var arr=new Array(10); var newarr=arr.splice(0,5,"d1","d2","d3","d4") write(arr); write(arr.length); write(newarr); write(newarr.length); for(var i =0;i<10;i++) { delete Array.prototype[i]; } write(""); write("Test case 2"); for(var i =0;i<10;i++) { Object.defineProperty(Array.prototype, i, { get: function (i) { return function () { return "p"+i; } }(i), configurable: true, enumerable: true }); } var arr=new Array(10); var newarr=arr.splice(0,5,"d1","d2","d3","d4","d5","d6","d7") write(arr); write(arr.length); write(newarr); write(newarr.length); for(var i =0;i<10;i++) { delete Array.prototype[i]; } write(""); write("Test case 3"); for(var i =0;i<10;i++) { i++; Object.defineProperty(Array.prototype, i, { get: function (i) { return function () { return "p"+i; } }(i), configurable: true, enumerable: true }); } var arr=new Array(10); var newarr=arr.splice(0,5,"d1","d2","d3","d4","d5","d6","d7") write(arr); write(arr.length); write(newarr); write(newarr.length); for(var i =0;i<10;i++) { delete Array.prototype[i]; } write(""); write("Test case 4"); for(var k=0;k<10;k++) { Object.defineProperty(Array.prototype, k, { get: function (k) { return function () { return "P"+k; } }(k), configurable: true, enumerable: true }); } var arr=new Array(10); var newarr=arr.splice(3,5,"d1","d2","d3") write(arr); write(arr.length); write(newarr); write(newarr.length); for(var k=0;k<10;k++) { delete Array.prototype[k]; } write(""); write("Test case 5"); for(var k=0;k<10;k++) { Object.defineProperty(Array.prototype, k, { get: function (k) { return function () { return "P"+k; } }(k), configurable: true, enumerable: true }); } var arr=new Array(10); var newarr=arr.splice(3,5,"d1","d2","d3") write(arr); write(arr.length); write(newarr); write(newarr.length); for(var k=0;k<10;k++) { delete Array.prototype[k]; } write(""); write("Test case 6"); for(var k=0;k<10;k++) { Object.defineProperty(Array.prototype, k, { get: function (k) { return function () { return "P"+k; } }(k), configurable: true, enumerable: true }); } var arr=new Array(10); var newarr=arr.splice(3,1,"d1","d2","d3") write(arr); write(arr.length); write(newarr); write(newarr.length); for(var k=0;k<10;k++) { delete Array.prototype[k]; } write(""); write("Test case 7"); Object.prototype.shift=Array.prototype.shift; var obj =new Object(); obj.length=10; obj[0]=101; obj[1]="string"; obj[9]="lastelement"; var res=obj.shift() for(var i in obj) write("expando:" + i +"=" +obj[i]); delete Object.prototype.shift; write(""); write("Test case 8"); Object.defineProperty(Object.prototype, 0, { get: function () { return "hello world"; }, configurable: true, enumerable: true }); Object.defineProperty(Array.prototype, 9, { get: function () { return "p9"; }, configurable: true, enumerable: true }); var arr =new Array(10); arr[1]=123; var res=arr.shift(); write(res); write(res.length); write(arr); write(arr.length); delete Object.prototype[0]; delete Array.prototype[9]; write(""); write("Test case 9"); var arr1 = new Array(2147483649); arr1[2147483647]=100; var newarr=arr1.slice(2147483640,2147483648); write(newarr); write(newarr.length); write(arr1.length); var test11arr = new Array(5); test11arr[2] = 2; test11arr[3] = 3; test11arr[4] = 4; write(""); write("Test case 10"); var arr = []; for(var i = 1; i< 20; i = i+3) { arr[i] = i; } for(var i = 0; i< 20; i = i+3) { Object.defineProperty(Object.prototype, i, { get: function (i) { return function () { return "O"+i; } }(i), configurable: true, enumerable: true }); } for(var i = 1; i< 20; i = i+3) { Object.defineProperty(Array.prototype, i, { get: function (i) { return function () { return "a"+i; } }(i), configurable: true, enumerable: true }); } arr.shift(); write(arr); write(arr.length); arr.unshift(10); write(arr); write(arr.length); var newarr = arr.splice(5,2,"a","b"); write(arr); write(arr.length); write(newarr); write(newarr.length); newarr = arr.splice(7,6,"a","b"); write(arr); write(arr.length); write(newarr); write(newarr.length); newarr = arr.splice(10,2,"a","b","c","e","f"); write(arr); write(arr.length); write(newarr); write(newarr.length); write(""); write("Test case 11"); Object.defineProperty(Object.prototype, 2, { get: function () { return 10; }, configurable: true, enumerable: true }); var arr = new Array(5); write(arr); write(arr.length); arr.shift(); write(arr); write(arr.length); arr.unshift("10","20"); arr.shift(); write(arr); arr.shift(); write(arr); arr.unshift(10,40); write(arr); arr.unshift(50); write(arr); arr.shift(50); write(arr); var arr = new Array(5); write(arr); write(arr.length); arr.reverse(); write(arr); write(arr.length); var arr = test11arr; write(arr); write(arr.length); arr.reverse(); write(arr); write(arr.length); var a = [1, 2, 3]; var b = []; b.length = 3; write(a.concat(b));