blob: ca7373672973a726dc9ce6bb879308cc564a1bf0 [file] [log] [blame]
Tests for Array.prototype.includes
On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
PASS Array.prototype.includes.length is 1
PASS Array.prototype.includes.name is 'includes'
PASS [1, 2, 3].includes(2) is true
PASS [1, 2, 3].includes(4) is false
PASS [].includes(1) is false
PASS [1, 2, 3].includes(1, 2) is false
PASS [1, 2, 3].includes(3, 3) is false
PASS [1, 2, 3].includes(2, undefined) is true
PASS [1, 2, 3].includes(2, null) is true
PASS [1, 2, 3].includes(2, 1, 2) is true
PASS [1, 2, 3].includes(2, Number) is true
PASS [1, 2, 3].includes(2, Number(2)) is false
PASS [1, 2, 3].includes(2, 'egg') is true
PASS [1, 2, 3].includes(2, '3') is false
PASS [1, 2, 3].includes(3, -1) is true
PASS [1, 2, 3].includes(1, -2) is false
PASS [1, 2, 3].includes(1, -3) is true
PASS [1, 2, NaN, 4].includes(NaN) is true
PASS ['egg', 'bacon', 'sausage'].includes('egg') is true
PASS ['egg', 'bacon', 'sausage'].includes('spinach') is false
Array with holes (sparse array)
PASS a.includes('egg') is true
PASS a.includes('sausage') is true
PASS a.includes('hashbrown') is false
PASS a.includes('toast') is false
PASS Array.prototype.includes.call(undefined, 1) threw exception TypeError: Array.prototype.includes requires that |this| not be null or undefined.
PASS Array.prototype.includes.call(null, 1) threw exception TypeError: Array.prototype.includes requires that |this| not be null or undefined.
Array-like object with invalid lengths
PASS var obj = { 0: 1, 1: 1, 2: 1, length: 0 }; Array.prototype.includes.call(obj, 1) is false
PASS var obj = { 0: 1, 1: 1, 2: 1, length: -0 }; Array.prototype.includes.call(obj, 1) is false
PASS var obj = { 0: 1, 1: 1, 2: 1, length: -3 }; Array.prototype.includes.call(obj, 1) is false
The index is converted to integer
PASS [2, 3, 5, 7, 11, 13, 17].includes(2, NaN) is true
PASS [2, 3, 5, 7, 11, 13, 17].includes(7, NaN) is true
PASS [2, 3, 5, 7, 11, 13, 17].includes(17, NaN) is true
PASS [2, 3, 5, 7, 11, 13, 17].includes(2, Infinity) is false
PASS [2, 3, 5, 7, 11, 13, 17].includes(7, Infinity) is false
PASS [2, 3, 5, 7, 11, 13, 17].includes(17, Infinity) is false
PASS [2, 3, 5, 7, 11, 13, 17].includes(2, -Infinity) is true
PASS [2, 3, 5, 7, 11, 13, 17].includes(7, -Infinity) is true
PASS [2, 3, 5, 7, 11, 13, 17].includes(17, -Infinity) is true
PASS [2, 3, 5, 7, 11, 13, 17].includes(2, Number.MAX_SAFE_INTEGER) is false
PASS [2, 3, 5, 7, 11, 13, 17].includes(7, Number.MAX_SAFE_INTEGER) is false
PASS [2, 3, 5, 7, 11, 13, 17].includes(17, Number.MAX_SAFE_INTEGER) is false
PASS [2, 3, 5, 7, 11, 13, 17].includes(2, Number.MAX_SAFE_INTEGER + 1) is false
PASS [2, 3, 5, 7, 11, 13, 17].includes(7, Number.MAX_SAFE_INTEGER + 1) is false
PASS [2, 3, 5, 7, 11, 13, 17].includes(17, Number.MAX_SAFE_INTEGER + 1) is false
PASS [2, 3, 5, 7, 11, 13, 17].includes(2, Number.MIN_SAFE_INTEGER) is true
PASS [2, 3, 5, 7, 11, 13, 17].includes(7, Number.MIN_SAFE_INTEGER) is true
PASS [2, 3, 5, 7, 11, 13, 17].includes(17, Number.MIN_SAFE_INTEGER) is true
PASS [2, 3, 5, 7, 11, 13, 17].includes(2, Number.MIN_SAFE_INTEGER - 1) is true
PASS [2, 3, 5, 7, 11, 13, 17].includes(7, Number.MIN_SAFE_INTEGER - 1) is true
PASS [2, 3, 5, 7, 11, 13, 17].includes(17, Number.MIN_SAFE_INTEGER - 1) is true
PASS [2, 3, 5, 7, 11, 13, 17].includes(2, { valueOf: () => { return 1; } }) is false
PASS [2, 3, 5, 7, 11, 13, 17].includes(7, { valueOf: () => { return 1; } }) is true
PASS [2, 3, 5, 7, 11, 13, 17].includes(17, { valueOf: () => { return 1; } }) is true
PASS [2, 3, 5, 7, 11, 13, 17].includes(2, { toString: () => { return '1'; } }) is false
PASS [2, 3, 5, 7, 11, 13, 17].includes(7, { toString: () => { return '1'; } }) is true
PASS [2, 3, 5, 7, 11, 13, 17].includes(17, { toString: () => { return '1'; } }) is true
PASS [2, 3, 5, 7, 11, 13, 17].includes(2, '1') is false
PASS [2, 3, 5, 7, 11, 13, 17].includes(7, '1') is true
PASS [2, 3, 5, 7, 11, 13, 17].includes(17, '1') is true
PASS successfullyParsed is true
TEST COMPLETE