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

#ifndef SHILL_CELLULAR_MOCK_DBUS_OBJECTMANAGER_PROXY_H_
#define SHILL_CELLULAR_MOCK_DBUS_OBJECTMANAGER_PROXY_H_

#include <base/macros.h>
#include <gmock/gmock.h>

#include "shill/cellular/dbus_objectmanager_proxy_interface.h"

namespace shill {

class MockDBusObjectManagerProxy : public DBusObjectManagerProxyInterface {
 public:
  MockDBusObjectManagerProxy();
  ~MockDBusObjectManagerProxy() override;

  MOCK_METHOD(void,
              GetManagedObjects,
              (Error*, const ManagedObjectsCallback&, int),
              (override));
  MOCK_METHOD(void,
              set_interfaces_added_callback,
              (const InterfacesAddedSignalCallback&),
              (override));
  MOCK_METHOD(void,
              set_interfaces_removed_callback,
              (const InterfacesRemovedSignalCallback&),
              (override));
  void IgnoreSetCallbacks();

 private:
  DISALLOW_COPY_AND_ASSIGN(MockDBusObjectManagerProxy);
};

}  // namespace shill

#endif  // SHILL_CELLULAR_MOCK_DBUS_OBJECTMANAGER_PROXY_H_
