summaryrefslogtreecommitdiffstats
path: root/js/src/jit-test/tests/warp/string-indexof-is-startswith.js
blob: 1d9f31e38cdc900fb24daf9b3ff03f1020da51fd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
// |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);
  }
}