// 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_MODEM_H_
#define SHILL_CELLULAR_MOCK_MODEM_H_

#include <string>

#include <gmock/gmock.h>

#include "shill/cellular/modem.h"

namespace shill {

class MockModem : public Modem {
 public:
  MockModem(const std::string& service,
            const std::string& path,
            ModemInfo* modem_info);
  ~MockModem() override;

  // This class only mocks the pure virtual methods; if you need a
  // more thorough mock, know that modem_test.cc depends on the
  // incompleteness of this mock.
  MOCK_METHOD1(SetModemStateFromProperties,
               void(const KeyValueStore& properties));
  MOCK_CONST_METHOD2(GetLinkName,
                     bool(const KeyValueStore& modem_properties,
                          std::string* name));
  MOCK_CONST_METHOD0(GetModemInterface, std::string());
  MOCK_METHOD3(ConstructCellular, Cellular*(
      const std::string& link_name,
      const std::string& device_name,
      int ifindex));
};

using StrictModem = ::testing::StrictMock<MockModem>;

}  // namespace shill

#endif  // SHILL_CELLULAR_MOCK_MODEM_H_
