| //------------------------------------------------------------------------------------------------------- |
| // 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("Scenario 0"); |
| //Array sort testing to make sure no change for Strings |
| var s = new String("world hello"); |
| s.foo = Array.prototype.sort; |
| try |
| { |
| s.foo(); |
| } |
| catch (e) |
| { |
| if (! e instanceof TypeError) |
| throw e; |
| write(s); |
| } |
| |
| //following scenario's test sparse array, prototype lookup and undefined elements |
| write("Scenario 1"); |
| var a = [undefined, undefined, undefined]; |
| a.sort(); |
| write(a); |
| write(a.length); |
| |
| write("Scenario 2"); |
| |
| var b = undefined; |
| var a = [b, b]; |
| a[10] = b; |
| a[11] = b; |
| a[21] = b; |
| a[22] = b; |
| a[8] = b; |
| a.sort(); |
| write(a); |
| write(a.length); |
| |
| write("Scenario 3"); |
| var b = undefined; |
| var a = [b]; |
| a.sort(); |
| write(a); |
| write(a.length); |
| |
| write("Scenario 4 - prototype lookup - output in cscript is different"); |
| |
| for(var i = 0;i<20;i=i+4) |
| { |
| Object.prototype[i] = "o"+i; |
| } |
| |
| for(var i = 0;i<20;i=i+3) |
| { |
| Array.prototype[i] = "p"+i; |
| } |
| |
| Array.prototype[14] = undefined; |
| Object.prototype[2] = undefined; |
| |
| var a = [23,14, undefined, 17]; |
| |
| a[10] = 5; |
| a[11] = 22; |
| a[12] = undefined; |
| a[13] = 20; |
| |
| write(a.sort()); |
| write(a); |
| write(a.length); |
| |
| write("Scenario 5 - prototype lookup"); |
| var arr=new Array(3) |
| write(arr.sort()); |
| write(arr); |
| |
| Array.prototype[0]=0; |
| Array.prototype[1]=0; |
| Array.prototype[2]=0; |
| |
| write(arr.length); |
| |
| write("Scenario 6 - prototype lookup"); |
| Array.prototype[5]=10; |
| Array.prototype[6]=1; |
| Array.prototype[7]=15; |
| |
| var arr=new Array(8) |
| arr[0]=1; |
| arr[1]=2; |
| arr[2]=3; |
| write(arr.sort()); |
| |
| write("Scenario 7 - output in cscript is different"); |
| |
| Array.prototype[5]=10; |
| var arr=new Array(8) |
| arr[1]=1; |
| arr[5]=undefined; |
| arr.sort(); |
| write(arr) |
| |
| write("Scenario 8"); |
| |
| Array.prototype[12]=10; |
| var arr=new Array(8) |
| arr[1]=1; |
| write(arr.sort()); |
| |
| write(arr); |
| |
| function comparefn(x,y) { arr[0]="test"; return x - y; } |
| var arr=new Array(2); |
| arr[0]=12; |
| arr[1]=10; |
| arr.sort(comparefn); |
| |
| write(arr); |
| |
| function comparefn(x, y) { delete arr[0]; return x - y; } |
| var arr=new Array(3); |
| arr[0]=12; |
| arr[2]=10; |
| arr.sort(comparefn); |
| |
| write(arr); |
| |