| /* |
| * Any copyright is dedicated to the Public Domain. |
| * http://creativecommons.org/licenses/publicdomain/ |
| */ |
| |
| //----------------------------------------------------------------------------- |
| var BUGNUMBER = 909602; |
| var summary = |
| "Array.prototype.pop shouldn't touch elements greater than length on " + |
| "non-arrays"; |
| |
| print(BUGNUMBER + ": " + summary); |
| |
| /************** |
| * BEGIN TEST * |
| **************/ |
| |
| function doTest(obj, index) |
| { |
| // print("testing " + JSON.stringify(obj) + " with index " + index); |
| assertEq(Array.prototype.pop.call(obj), undefined); |
| assertEq(index in obj, true); |
| assertEq(obj[index], 42); |
| } |
| |
| // not-super-much-later element |
| |
| // non-zero length |
| function testPop1() |
| { |
| var obj = { length: 2, 3: 42 }; |
| doTest(obj, 3); |
| } |
| for (var i = 0; i < 50; i++) |
| testPop1(); |
| |
| // zero length |
| function testPop2() |
| { |
| var obj = { length: 0, 3: 42 }; |
| doTest(obj, 3); |
| } |
| for (var i = 0; i < 50; i++) |
| testPop2(); |
| |
| // much-later (but dense) element |
| |
| // non-zero length |
| function testPop3() |
| { |
| var obj = { length: 2, 55: 42 }; |
| doTest(obj, 55); |
| } |
| for (var i = 0; i < 50; i++) |
| testPop3(); |
| |
| // zero length |
| function testPop4() |
| { |
| var obj = { length: 0, 55: 42 }; |
| doTest(obj, 55); |
| } |
| for (var i = 0; i < 50; i++) |
| testPop4(); |
| |
| // much much much later (sparse) element |
| |
| // non-zero length |
| function testPop5() |
| { |
| var obj = { length: 2, 65530: 42 }; |
| doTest(obj, 65530); |
| } |
| for (var i = 0; i < 50; i++) |
| testPop5(); |
| |
| // zero length |
| function testPop6() |
| { |
| var obj = { length: 0, 65530: 42 }; |
| doTest(obj, 65530); |
| } |
| for (var i = 0; i < 50; i++) |
| testPop6(); |
| |
| /******************************************************************************/ |
| |
| if (typeof reportCompare === "function") |
| reportCompare(true, true); |
| |
| print("Tests complete"); |