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 'abc'.includes('', 3) is true
PASS 'abc'.includes('', 4) is true
PASS 'abc'.includes('', Infinity) is true
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 'abc'.startsWith('', 3) is true
PASS 'abc'.startsWith('', 4) is true
PASS 'abc'.startsWith('', Infinity) is true
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 'abc'.endsWith('', 3) is true
PASS 'abc'.endsWith('', 4) is true
PASS 'abc'.endsWith('', Infinity) 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

