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

