// Copyright 2016 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "gmock/gmock.h"

namespace blink {

namespace simple_test {

class Interface {
 public:
  virtual void MyMethod(int my_param) {}
};

class MockedInterface : public Interface {
 public:
  MOCK_METHOD1(MyMethod, void(int));
};

void Test() {
  MockedInterface mocked_interface;
  EXPECT_CALL(mocked_interface, MyMethod(1));
  EXPECT_CALL(
      mocked_interface,  // A comment to prevent reformatting into single line.
      MyMethod(1));
  mocked_interface.MyMethod(123);

  int arg;
  ON_CALL(mocked_interface, MyMethod(1))
      .WillByDefault(testing::SaveArg<0>(&arg));
}

}  // namespace simple_test

namespace no_base_method_to_override {

class MockDestructible {
 public:
  MOCK_METHOD0(Destruct, void());
};

void Test() {
  MockDestructible destructible;
  EXPECT_CALL(destructible, Destruct());
}

}  // namespace no_base_method_to_override

}  // namespace blink