// Copyright 2017 Google Inc. All Rights Reserved.
// Licensed under the Apache License, Version 2.0 (the "License");

// Simple unit test for DoStuff().
// This unit test does not cover the existing bug in DoStuff(),
// unless you pass an extra parameter ("BUG").
#include "my_api.h"

#include <cassert>
#include <iostream>

void TestDoStuff(const std::string &str, size_t Expected) {
  size_t Result = DoStuff(str);
  std::cerr << str << " => " << Result << std::endl;
  assert(Result == Expected);
}

int main(int argc, char **argv) {
  // Test some simple inputs, verify the output.
  TestDoStuff("", 0);
  TestDoStuff("foo", 1);
  TestDoStuff("omg", 1);
  TestDoStuff("bar", 1);
  TestDoStuff("ouch", 1);
  TestDoStuff("foobar", 3);
  TestDoStuff("foouchbar", 4);
  if (argc == 2 && std::string(argv[1]) == "BUG") {
    // This is the missing test that actually triggers the bug.
    TestDoStuff("foouchbaromg", 4);
  }
}