// Copyright (c) 2012 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_MOCK_VIRTUAL_DEVICE_H_
#define SHILL_MOCK_VIRTUAL_DEVICE_H_

#include <gmock/gmock.h>

#include "shill/virtual_device.h"

namespace shill {

class MockVirtualDevice : public VirtualDevice {
 public:
  MockVirtualDevice(ControlInterface *control,
                    EventDispatcher *dispatcher,
                    Metrics *metrics,
                    Manager *manager,
                    const std::string &link_name,
                    int interface_index,
                    Technology::Identifier technology);
  virtual ~MockVirtualDevice();

  MOCK_METHOD2(Stop,
               void(Error *error, const EnabledStateChangedCallback &callback));
  MOCK_METHOD1(UpdateIPConfig,
               void(const IPConfig::Properties &properties));
  MOCK_METHOD0(DropConnection, void());
  MOCK_METHOD1(SetEnabled, void(bool));

 private:
  DISALLOW_COPY_AND_ASSIGN(MockVirtualDevice);
};

}  // namespace shill

#endif  // SHILL_MOCK_VIRTUAL_DEVICE_H_
