This test checks the ES6 string functions startsWith(), endsWith(), and includes(). On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". PASS String.prototype.includes.name is 'includes' PASS String.prototype.includes.length is 1 PASS 'foo bar'.includes('bar') is true PASS 'foo bar'.includes('bar', 4) is true PASS 'foo bar'.includes('ar', 5) is true PASS 'foo bar'.includes('qux') is false PASS 'foo bar'.includes('foo') is true PASS 'foo bar'.includes('foo', 0) is true PASS 'foo bar'.includes('foo', -1) is true PASS 'foo bar'.includes('') is true PASS 'foo bar'.includes() is false PASS 'foo bar qux'.includes('qux', 7) is true PASS 'foo bar qux'.includes('bar', 7) is false PASS 'foo null bar'.includes() is false PASS 'foo null bar'.includes(null) is true PASS 'foo null bar'.includes(null) is true PASS 'foo undefined bar'.includes() is true PASS 'foo undefined bar'.includes(undefined) is true PASS 'foo undefined bar'.includes() is true PASS 'foo undefined bar'.includes() is true PASS 'foo true bar'.includes(true) is true PASS 'foo false bar'.includes(false) is true PASS 'foo 1 bar'.includes(1) is true PASS 'foo 1.1 bar'.includes(1.1) is true PASS 'foo NaN bar'.includes(NaN) is true PASS 'foo 1.0 bar'.includes(1.0) is true PASS 'foo 1e+100 bar'.includes(1e+100) is true PASS 'foo 1e100 bar'.includes(1e100) is false PASS 'フーバー'.includes('ーバ') is true PASS 'フーバー'.includes('クー') is false PASS 'abc'.includes('a', 'abc'.length) is false PASS 'abc'.includes('a', Math.pow(2, 33)) is false PASS 'abc'.includes('a', Infinity) is false PASS 'abc'.includes('ab', -Infinity) is true PASS 'abc'.includes('cd', -Infinity) is false PASS 'abc'.includes('ab', 0) is true PASS 'abc'.includes('cd', 0) is false PASS String.prototype.startsWith.name is 'startsWith' PASS String.prototype.startsWith.length is 1 PASS 'foo bar'.startsWith('foo') is true PASS 'foo bar'.startsWith('foo', 0) is true PASS 'foo bar'.startsWith('foo', -1) is true PASS 'foo bar'.startsWith('oo', 1) is true PASS 'foo bar'.startsWith('qux') is false PASS 'foo bar'.startsWith('') is true PASS 'foo bar'.startsWith() is false PASS 'null'.startsWith() is false PASS 'null'.startsWith(null) is true PASS 'null bar'.startsWith(null) is true PASS 'undefined'.startsWith() is true PASS 'undefined'.startsWith(undefined) is true PASS 'undefined bar'.startsWith() is true PASS 'undefined bar'.startsWith() is true PASS 'true bar'.startsWith(true) is true PASS 'false bar'.startsWith(false) is true PASS '1 bar'.startsWith(1) is true PASS '1.1 bar'.startsWith(1.1) is true PASS 'NaN bar'.startsWith(NaN) is true PASS '1e+100 bar'.startsWith(1e+100) is true PASS '1e100 bar'.startsWith(1e100) is false PASS 'フーバー'.startsWith('フー') is true PASS 'フーバー'.startsWith('バー') is false PASS 'フーバー'.startsWith('abc') is false PASS 'フーバー'.startsWith('abc', 1) is false PASS 'foo bar'.startsWith('フー') is false PASS 'foo bar'.startsWith('フー', 1) is false PASS 'abc'.startsWith('a', Infinity) is false PASS 'abc'.startsWith('a', 1) is false PASS 'abc'.startsWith('b', 1) is true PASS 'abc'.startsWith('b', 2) is false PASS 'abc'.startsWith('c', 2) is true PASS 'abc'.startsWith('a', Math.pow(2, 33)) is false PASS String.prototype.endsWith.name is 'endsWith' PASS String.prototype.endsWith.length is 1 PASS 'foo bar'.endsWith('bar') is true PASS 'foo bar'.endsWith('ba', 6) is true PASS 'foo bar'.endsWith(' ba', 6) is true PASS 'foo bar'.endsWith('foo bar') is true PASS 'foo bar'.endsWith('foo bar', 7) is true PASS 'foo bar'.endsWith('foo bar', 8) is true PASS 'foo bar'.endsWith('foo bar', -1) is false PASS 'foo bar'.endsWith('qux') is false PASS 'foo bar'.endsWith('') is true PASS 'foo bar'.endsWith() is false PASS 'foo null'.endsWith() is false PASS 'foo null'.endsWith(null) is true PASS 'foo null'.endsWith(null) is true PASS 'foo undefined'.endsWith() is true PASS 'foo undefined'.endsWith(undefined) is true PASS 'foo undefined'.endsWith() is true PASS 'foo undefined'.endsWith() is true PASS 'foo true'.endsWith(true) is true PASS 'foo false'.endsWith(false) is true PASS 'foo 1'.endsWith(1) is true PASS 'foo 1.1'.endsWith(1.1) is true PASS 'foo NaN'.endsWith(NaN) is true PASS 'foo 1e+100'.endsWith(1e+100) is true PASS 'foo 1e100'.endsWith(1e100) is false PASS 'フーバー'.endsWith('バー') is true PASS 'フーバー'.endsWith('フー') is false PASS 'フーバー'.endsWith('abc') is false PASS 'フーバー'.endsWith('abc') is false PASS 'foo bar'.endsWith('フー') is false PASS 'foo bar'.endsWith('フー', 3) is false PASS 'abc'.endsWith('bc', Infinity) is true PASS 'abc'.endsWith('bc', Math.pow(2, 33)) is true PASS 'abc'.endsWith('a', 0) is false PASS 'abc'.endsWith('a', 1) is true PASS 'abc'.endsWith('b', 1) is false PASS 'abc'.endsWith('b', 2) is true PASS 'abc'.endsWith('bc', 2) is false PASS 'abc'.endsWith('bc', 3) is true PASS (function() { var f = String.prototype.startsWith; (function() { f('a'); })(); })() threw exception TypeError: Type error. PASS (function() { var f = String.prototype.endsWith; (function() { f('a'); })(); })() threw exception TypeError: Type error. PASS (function() { var f = String.prototype.includes; (function() { f('a'); })(); })() threw exception TypeError: Type error. PASS 'foo bar'.startsWith(/w+/) threw exception TypeError: Argument to String.prototype.startsWith cannot be a RegExp. PASS 'foo bar'.endsWith(/w+/) threw exception TypeError: Argument to String.prototype.endsWith cannot be a RegExp. PASS 'foo bar'.includes(/w+/) threw exception TypeError: Argument to String.prototype.includes cannot be a RegExp. PASS stringToSearchIn.startsWith(searchString, startOffset) is true PASS sideEffect == 'ABC' is true PASS stringToSearchIn.startsWith(searchString, startOffset) threw exception error. PASS sideEffect == '' is true PASS stringToSearchIn.startsWith(searchString, startOffset) threw exception error. PASS sideEffect == 'A' is true PASS stringToSearchIn.startsWith(searchString, startOffset) threw exception error. PASS sideEffect == 'AB' is true PASS stringToSearchIn.endsWith(searchString, endOffset) is true PASS sideEffect == 'ABC' is true PASS stringToSearchIn.endsWith(searchString, endOffset) threw exception error. PASS sideEffect == '' is true PASS stringToSearchIn.endsWith(searchString, endOffset) threw exception error. PASS sideEffect == 'A' is true PASS stringToSearchIn.endsWith(searchString, endOffset) threw exception error. PASS sideEffect == 'AB' is true PASS stringToSearchIn.includes(searchString, startOffset) is true PASS sideEffect == 'ABC' is true PASS stringToSearchIn.includes(searchString, startOffset) threw exception error. PASS sideEffect == '' is true PASS stringToSearchIn.includes(searchString, startOffset) threw exception error. PASS sideEffect == 'A' is true PASS stringToSearchIn.includes(searchString, startOffset) threw exception error. PASS sideEffect == 'AB' is true PASS successfullyParsed is true TEST COMPLETE