// Copyright 2018 the V8 project authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

function createSuiteWithWarmup( name, count, fn) {
  new BenchmarkSuite(name, [count], [
    new Benchmark(name, true, false, 0, fn),
  ]);
}

const inputs = [
  'I\xF1t\xEBrn\xE2ti\xF4n\xE0liz\xE6ti\xF8n\u2603\uD83D\uDCA9\uFFFD',
  'Lorem ipsum dolor sit amet, consectetur adipiscing elit.',
  'Integer eu augue suscipit, accumsan ipsum nec, sagittis sem.',
  'In vitae pellentesque dolor. Curabitur leo nunc, luctus vitae',
  'risus eget, fermentum hendrerit justo.',
];
const first = 'I';

function helper(fn) {
  let sum = 0;
  for (const input of inputs) {
    sum += fn(input);
  }
  return sum;
}

function startsWith(string) {
  return string.startsWith(first);
}

function startsIndex(string) {
  return string[0] === first;
}

function endsWith(string) {
  return string.endsWith(first);
}

function endsIndex(string) {
  return string[string.length - 1] === first;
}

createSuiteWithWarmup('startsWith', 1, () => helper(startsWith));
createSuiteWithWarmup('startsIndex', 1, () => helper(startsIndex));
createSuiteWithWarmup('endsWith', 1, () => helper(endsWith));
createSuiteWithWarmup('endsIndex', 1, () => helper(endsIndex));