//------------------------------------------------------------------------------------------------------- // Copyright (C) Microsoft. All rights reserved. // Licensed under the MIT license. See LICENSE.txt file in the project root for full license information. //------------------------------------------------------------------------------------------------------- //Test odd parameters var a = [0, 1, 2, 3, 4, 5, 6]; var x = a.splice(-100, -100); WScript.Echo(a); WScript.Echo(x); x = a.splice(); WScript.Echo(a); WScript.Echo(x); x = a.splice(0); WScript.Echo(a); WScript.Echo(x); var x = a.splice(0, 0); WScript.Echo(a); WScript.Echo(x); var x = a.splice(1, -4); WScript.Echo(a); WScript.Echo(x); var x = a.splice(7, -4, 8, 9, 10); WScript.Echo(a); WScript.Echo(x); var x = a.splice(20, 40); WScript.Echo(a); WScript.Echo(x); var x = a.splice(-20, 4, 11, 12); WScript.Echo(a); WScript.Echo(x); x = a.splice(-100, -100); WScript.Echo(a); WScript.Echo(x); //Test array var b = [8,9]; var c = [11,12]; x = a.splice(5,1); WScript.Echo(x); WScript.Echo(a); x = a.splice(2, 2, b, c); WScript.Echo(x); WScript.Echo(a); x = a.splice(-2, -2, b, c); WScript.Echo(x); WScript.Echo(a); x = a.splice(10, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b, b); WScript.Echo(x); WScript.Echo(a); var d = [1, [2, 3, 4], [5, 6, 7]]; x = a.splice(5, 1, d); WScript.Echo(x); WScript.Echo(a); var f = new Object(); f.x = 0; f.y = 1; f.z = 2; x = a.splice(1,2, f, "hello"); WScript.Echo(x); WScript.Echo(a); //Test object var x = new Object(); x.length = 6; x[0] = 1; x[1] = 2; x[2] = 3; x[3] = 4; x[4] = 5; x[5] = 6; x.foo = Array.prototype.splice; WScript.Echo(x.length); var y = x.foo(0, 1, 9, 10, 11, 12); WScript.Echo(y); WScript.Echo(x.length); y = x.foo(0, 9); WScript.Echo(y); WScript.Echo(x.length); y = x.foo(0, 0, 1, 2, 3, 4, 5, 6); WScript.Echo(y); WScript.Echo(x.length); y = x.foo(3, 3, 7); WScript.Echo(y); WScript.Echo(x.length); y = x.foo(0, 8); WScript.Echo(y); WScript.Echo(x.length); //Test string x = new String("hello world"); x.foo = Array.prototype.splice; y = undefined; try { y = x.foo(0, 5); } catch(e) { if (!e instanceof TypeError) throw(e); WScript.Echo(y); WScript.Echo(x); } try { y = x.foo(0, 5); } catch(e) { if (!e instanceof TypeError) throw(e); WScript.Echo(y); WScript.Echo(x); } try { y = x.foo(0, 13); } catch(e) { if (!e instanceof TypeError) throw(e); WScript.Echo(y); WScript.Echo(x); } WScript.Echo("Test: splice when the item to replace is not writable."); // WOOB: 1139812 var a = {}; Object.defineProperty(a, "0", { value: 0 }); Object.defineProperty(a, "1", { value: 1 }); a.length = 2; try { Array.prototype.splice.apply(a, [0, 1, 'z']); } catch (ex) { WScript.Echo("e instanceOf TypeError = " + (ex instanceof TypeError)); } WScript.Echo("a.length = " + a.length); a = new Array(1000); x = a.splice(1, 17, "a"); function test0() { var arr = [0,1,2,3,4,5,6,7,8,9]; for(var __loopvar4 = 0; __loopvar4 < 2; __loopvar4++) { arr.length --; arr.splice(3,1,31,32,33); } return arr.length; } WScript.Echo("arr.length = " + test0());