This test checks that functions on the array prototype correctly handle exceptions from property getters when called on non-array objects.

On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".


PASS test(Array.prototype.sort) is true
PASS test(Array.prototype.every) is true
PASS test(Array.prototype.some) is true
PASS test(Array.prototype.forEach) is true
PASS test(Array.prototype.map) is true
PASS test(Array.prototype.filter) is true
PASS test(Array.prototype.reduce) is true
PASS test(Array.prototype.reduceRight) is true
PASS test(Array.prototype.join) is true
PASS test(Array.prototype.pop) is true
PASS test(Array.prototype.push) is false
PASS test(Array.prototype.reverse) is true
PASS test(Array.prototype.shift) is true
PASS test(Array.prototype.slice) is true
PASS test(Array.prototype.splice) is true
PASS test(Array.prototype.unshift) is true
PASS test(Array.prototype.indexOf) is true
PASS test(Array.prototype.lastIndexOf) is true
PASS successfullyParsed is true

TEST COMPLETE

