Source code

Revision control

Copy as Markdown

Other Tools

// |str.indexOf(searchStr) == 0| is compiled as |str.startsWith(searchStr)|.
// |str.indexOf(searchStr) != 0| is compiled as |!str.startsWith(searchStr)|.
const strings = [
"",
"a", "b",
"ab", "ba", "ac", "ca",
"aba", "abb", "abc", "aca",
];
function StringIndexOf(str, searchStr) {
// Prevent Warp compilation when computing the expected result.
with ({});
return str.indexOf(searchStr);
}
for (let str of strings) {
for (let searchStr of strings) {
let startsWith = str.indexOf(searchStr) === 0;
assertEq(startsWith, str.startsWith(searchStr));
assertEq(startsWith, StringIndexOf(str, searchStr) === 0);
let notStartsWith = str.indexOf(searchStr) !== 0;
assertEq(notStartsWith, !str.startsWith(searchStr));
assertEq(notStartsWith, StringIndexOf(str, searchStr) !== 0);
}
}