33 lines
807 B
JavaScript
33 lines
807 B
JavaScript
description(
|
|
"Tests that defining a setter on the Array prototype works even if it is done after arrays are allocated."
|
|
);
|
|
|
|
var ouches = 0;
|
|
|
|
function foo(haveABadTime) {
|
|
var result = [];
|
|
result.length = 5;
|
|
for (var i = 0; i < result.length; ++i) {
|
|
if (i == haveABadTime) {
|
|
debug("Henceforth I will have a bad time.");
|
|
Array.prototype.__defineSetter__("3", function() { debug("Ouch!"); ouches++; });
|
|
}
|
|
result[i] = i;
|
|
}
|
|
return result;
|
|
}
|
|
|
|
var expected = "\"0,1,2,3,4\"";
|
|
|
|
for (var i = 0; i < 1000; ++i) {
|
|
var haveABadTime;
|
|
if (i == 950) {
|
|
haveABadTime = 2;
|
|
expected = "\"0,1,2,,4\"";
|
|
} else
|
|
haveABadTime = -1;
|
|
shouldBe("\"" + foo(haveABadTime).join(",") + "\"", expected);
|
|
}
|
|
|
|
shouldBe("ouches", "50");
|