This test checks the behavior of the Array.prototype.fill()

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


PASS Array.prototype.fill.length is 1
PASS Array.prototype.fill.name is 'fill'
PASS [0, 0, 0, 0, 0].fill() is [undefined, undefined, undefined, undefined, undefined]
PASS [0, 0, 0, 0, 0].fill(3) is [3, 3, 3, 3, 3]
PASS [0, 0, 0, 0, 0].fill(3, 1) is [0, 3, 3, 3, 3]
PASS [0, 0, 0, 0, 0].fill(3, 1, 3) is [0, 3, 3, 0, 0]
PASS [0, 0, 0, 0, 0].fill(3, 1, 1000) is [0, 3, 3, 3, 3]
PASS [0, 0, 0, 0, 0].fill(3, -2, 1000) is [0, 0, 0, 3, 3]
PASS [0, 0, 0, 0, 0].fill(3, -2, 4) is [0, 0, 0, 3, 0]
PASS [0, 0, 0, 0, 0].fill(3, -2, -1) is [0, 0, 0, 3, 0]
PASS [0, 0, 0, 0, 0].fill(3, -2, -3) is [0, 0, 0, 0, 0]
PASS [0, 0, 0, 0, 0].fill(3, undefined, 4) is [3, 3, 3, 3, 0]
PASS [ ,  ,  ,  , 0].fill(3, 1, 3) is [, 3, 3, , 0]
Array-like object with invalid lengths
PASS var obj = Object.freeze({ 0: 1, length: 0 }); Array.prototype.fill.call(obj, throwError); JSON.stringify(obj) is '{"0":1,"length":0}'
PASS var obj = Object.freeze({ 0: 1, length: -0 }); Array.prototype.fill.call(obj, throwError); JSON.stringify(obj) is '{"0":1,"length":0}'
PASS var obj = Object.freeze({ 0: 1, length: -3 }); Array.prototype.fill.call(obj, throwError); JSON.stringify(obj) is '{"0":1,"length":-3}'
PASS successfullyParsed is true

TEST COMPLETE

