File indexing completed on 2024-04-28 15:28:39

0001 /* Copyright (C) 2018 froglogic GmbH */
0002 
0003 shouldBe("String.prototype.includes.length", "1");
0004 
0005 // simple
0006 shouldBeTrue("'abc'.includes('a')");
0007 shouldBeTrue("'abc'.includes('b')");
0008 shouldBeTrue("'abc'.includes('c')");
0009 shouldBeTrue("'abc'.includes('bc')");
0010 shouldBeTrue("'abc'.includes('abc')");
0011 shouldBeFalse("'abc'.includes('d')");
0012 shouldBeFalse("'abc'.includes('abcd')");
0013 
0014 // with start position
0015 shouldBeTrue("'abc'.includes('a', 0)");
0016 shouldBeTrue("'abc'.includes('a', -1)");
0017 shouldBeFalse("'abc'.includes('a', 1)");
0018 shouldBeFalse("'abc'.includes('a', 4)");
0019 shouldBeTrue("'abc'.includes('a', -Infinity)");
0020 shouldBeFalse("'abc'.includes('a', +Infinity)");
0021 
0022 // non-numerical position parameter
0023 shouldBeTrue("'abc'.includes('a', undefined)");
0024 shouldBeTrue("'abc'.includes('a', null)");
0025 shouldBeTrue("'abc'.includes('a', NaN)");
0026 shouldBeTrue("'abc'.includes('a', '0')");
0027 shouldBeFalse("'abc'.includes('a', '1')");
0028 
0029 // non-string objects
0030 shouldBeTrue("'123'.includes(2)");
0031 shouldBeFalse("'123'.includes(4)");
0032 var arr = ['a', 'b'];
0033 arr.includes = String.prototype.includes;
0034 shouldBeTrue("arr.includes('a')");
0035 var obj = { toString: function() { return "xyz"; } };
0036 obj.includes = String.prototype.includes;
0037 shouldBeTrue("obj.includes('xyz')");
0038 
0039 // invalid
0040 shouldThrow("'abc'.includes(/a/)");