| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141 |
- //-------------------------------------------------------------------------------------------------------
- // Copyright (C) Microsoft. All rights reserved.
- // Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
- //-------------------------------------------------------------------------------------------------------
- var maxPushArgs = 3; // Maximum number of arguments to push supported by this test case. Cannot be greater than 6.
- for (var b = 0; b <= 1; b++) {
- var isArray = (b === 0);
- for (var i = 1; i <= maxPushArgs; i++) {
- var testType = isArray ? "Array" : "Object";
- WScript.Echo(testType + " Test " + i);
- var a = Create(isArray);
- WScript.Echo("Pushing...");
- PushArgs(a, i, "Bef");
- Output(a, i);
- WScript.Echo("Pushing...");
- PushArgs(a, 1, "Aft");
- Output(a, i + 1);
- }
- }
- function Create(isArray)
- {
- var arr;
- if (isArray)
- {
- arr = [];
- }
- else
- {
- arr = {};
- arr.push = Array.prototype.push;
- arr.length = 4294967294;
- }
- arr[0]="Value0";
- arr[1]="Value1";
- arr[2]="Value2";
- arr[4294967293] = "Value4294967293";
- return arr;
- }
- function PushArgs(arr, num, prefix) {
- if (num < 1 || num > maxPushArgs) {
- WScript.Echo("FAIL");
- return;
- }
- try {
- if (num === 1) {
- arr.push(prefix + "1");
- }
- else if (num === 2) {
- arr.push(prefix + "1", prefix + "2");
- }
- else if (num === 3) {
- arr.push(prefix + "1", prefix + "2", prefix + "3");
- }
- WScript.Echo("No exception");
- }
- catch (e) {
- WScript.Echo(e.name + ": " + e.message);
- }
- }
- function Output(arr, numPushed)
- {
- if (numPushed > maxPushArgs) {
- WScript.Echo("FAIL");
- return;
- }
- WScript.Echo("Length is: " + arr.length);
- OutputIndex(arr, 0);
- OutputIndex(arr, 1);
- OutputIndex(arr, 2);
- for (var i = 0; i <= numPushed; i++)
- {
- var index = "429496729" + (3 + i); // Does not work if maxPushArgs > 6
- OutputIndex(arr, index);
- }
- }
- function OutputIndex(arr, index)
- {
- var v = arr[index];
- if (v == undefined)
- {
- v = "UNDEFINED";
- }
- WScript.Echo(index + ": " + v);
- }
- //implicit calls
- function foo()
- {
- var obj = {};
- Object.prototype.push = Array.prototype.push;
- var x;
- Object.defineProperty(obj, "length", {get: function() {x = true; return 5;}});
- x = false;
- try
- {
- var len = obj.push(1);
- }
- catch (e)
- {
- WScript.Echo('caught exception calling push');
- }
- WScript.Echo(x);
- return len;
- }
- WScript.Echo (foo());
- function bar()
- {
- var a = Number();
- Number.prototype.push = Array.prototype.push;
- a.push(1);
- }
- bar();
- function test0(arr)
- {
- for(var __loopvar4 = 0; __loopvar4 < 2; __loopvar4++)
- {
- arr.length --;
- arr.push(3);
- }
- return arr.length;
- }
- WScript.Echo("ary.length = " + test0(new Array(10)));
- function popTest() {
- [ , ].pop();
- };
- WScript.Echo(popTest());
|