blob: 1f5cd908f919e523bcb314e52ccef4557112e919 [file] [log] [blame]
description("Tests for Array.prototype.includes");
shouldBe("Array.prototype.includes.length", "1");
shouldBe("Array.prototype.includes.name", "'includes'");
shouldBeTrue("[1, 2, 3].includes(2)");
shouldBeFalse("[1, 2, 3].includes(4)");
shouldBeFalse("[].includes(1)");
shouldBeFalse("[1, 2, 3].includes(1, 2)");
shouldBeFalse("[1, 2, 3].includes(3, 3)");
shouldBeTrue("[1, 2, 3].includes(2, undefined)");
shouldBeTrue("[1, 2, 3].includes(2, null)");
shouldBeTrue("[1, 2, 3].includes(2, 1, 2)");
shouldBeTrue("[1, 2, 3].includes(2, Number)");
shouldBeFalse("[1, 2, 3].includes(2, Number(2))");
shouldBeTrue("[1, 2, 3].includes(2, 'egg')");
shouldBeFalse("[1, 2, 3].includes(2, '3')");
shouldBeTrue("[1, 2, 3].includes(3, -1)");
shouldBeFalse("[1, 2, 3].includes(1, -2)");
shouldBeTrue("[1, 2, 3].includes(1, -3)");
shouldBeTrue("[1, 2, NaN, 4].includes(NaN)");
shouldBeTrue("['egg', 'bacon', 'sausage'].includes('egg')");
shouldBeFalse("['egg', 'bacon', 'sausage'].includes('spinach')");
debug("Array with holes (sparse array)");
var a = [];
a[0] = 'egg';
a[1] = 'bacon';
a[5] = 'sausage';
a[6] = 'spinach';
a[-2] = 'toast';
shouldBeTrue("a.includes('egg')");
shouldBeTrue("a.includes('sausage')");
shouldBeFalse("a.includes('hashbrown')");
shouldBeFalse("a.includes('toast')");
shouldThrow("Array.prototype.includes.call(undefined, 1)");
shouldThrow("Array.prototype.includes.call(null, 1)");
debug("Array-like object with invalid lengths");
shouldBeFalse("var obj = { 0: 1, 1: 1, 2: 1, length: 0 }; Array.prototype.includes.call(obj, 1)");
shouldBeFalse("var obj = { 0: 1, 1: 1, 2: 1, length: -0 }; Array.prototype.includes.call(obj, 1)");
shouldBeFalse("var obj = { 0: 1, 1: 1, 2: 1, length: -3 }; Array.prototype.includes.call(obj, 1)");