// Copyright (c) 2011 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_MODEM_GSM_NETWORK_PROXY_H_
#define SHILL_MOCK_MODEM_GSM_NETWORK_PROXY_H_

#include <string>

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

#include "shill/modem_gsm_network_proxy_interface.h"

namespace shill {

class MockModemGSMNetworkProxy : public ModemGSMNetworkProxyInterface {
 public:
  MockModemGSMNetworkProxy();
  virtual ~MockModemGSMNetworkProxy();

  MOCK_METHOD0(GetRegistrationInfo, RegistrationInfo());
  MOCK_METHOD0(GetSignalQuality, uint32());
  MOCK_METHOD1(Register, void(const std::string &network_id));
  MOCK_METHOD0(Scan, ScanResults());
  MOCK_METHOD0(AccessTechnology, uint32());

 private:
  DISALLOW_COPY_AND_ASSIGN(MockModemGSMNetworkProxy);
};

}  // namespace shill

#endif  // SHILL_MOCK_MODEM_GSM_NETWORK_PROXY_H_
