1//
2// Copyright (C) 2013 The Android Open Source Project
3//
4// Licensed under the Apache License, Version 2.0 (the "License");
5// you may not use this file except in compliance with the License.
6// You may obtain a copy of the License at
7//
8//      http://www.apache.org/licenses/LICENSE-2.0
9//
10// Unless required by applicable law or agreed to in writing, software
11// distributed under the License is distributed on an "AS IS" BASIS,
12// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13// See the License for the specific language governing permissions and
14// limitations under the License.
15//
16
17#ifndef UPDATE_ENGINE_COMMON_MOCK_HARDWARE_H_
18#define UPDATE_ENGINE_COMMON_MOCK_HARDWARE_H_
19
20#include <string>
21
22#include "update_engine/common/fake_hardware.h"
23
24#include <gmock/gmock.h>
25
26namespace chromeos_update_engine {
27
28// A mocked, fake implementation of HardwareInterface.
29class MockHardware : public HardwareInterface {
30 public:
31  MockHardware() {
32    // Delegate all calls to the fake instance
33    ON_CALL(*this, IsOfficialBuild())
34      .WillByDefault(testing::Invoke(&fake_,
35            &FakeHardware::IsOfficialBuild));
36    ON_CALL(*this, IsNormalBootMode())
37      .WillByDefault(testing::Invoke(&fake_,
38            &FakeHardware::IsNormalBootMode));
39    ON_CALL(*this, IsOOBEComplete(testing::_))
40      .WillByDefault(testing::Invoke(&fake_,
41            &FakeHardware::IsOOBEComplete));
42    ON_CALL(*this, GetHardwareClass())
43      .WillByDefault(testing::Invoke(&fake_,
44            &FakeHardware::GetHardwareClass));
45    ON_CALL(*this, GetFirmwareVersion())
46      .WillByDefault(testing::Invoke(&fake_,
47            &FakeHardware::GetFirmwareVersion));
48    ON_CALL(*this, GetECVersion())
49      .WillByDefault(testing::Invoke(&fake_,
50            &FakeHardware::GetECVersion));
51    ON_CALL(*this, GetPowerwashCount())
52      .WillByDefault(testing::Invoke(&fake_,
53            &FakeHardware::GetPowerwashCount));
54    ON_CALL(*this, GetNonVolatileDirectory(testing::_))
55      .WillByDefault(testing::Invoke(&fake_,
56            &FakeHardware::GetNonVolatileDirectory));
57    ON_CALL(*this, GetPowerwashSafeDirectory(testing::_))
58      .WillByDefault(testing::Invoke(&fake_,
59            &FakeHardware::GetPowerwashSafeDirectory));
60  }
61
62  ~MockHardware() override = default;
63
64  // Hardware overrides.
65  MOCK_CONST_METHOD0(IsOfficialBuild, bool());
66  MOCK_CONST_METHOD0(IsNormalBootMode, bool());
67  MOCK_CONST_METHOD1(IsOOBEComplete, bool(base::Time* out_time_of_oobe));
68  MOCK_CONST_METHOD0(GetHardwareClass, std::string());
69  MOCK_CONST_METHOD0(GetFirmwareVersion, std::string());
70  MOCK_CONST_METHOD0(GetECVersion, std::string());
71  MOCK_CONST_METHOD0(GetPowerwashCount, int());
72  MOCK_CONST_METHOD1(GetNonVolatileDirectory, bool(base::FilePath*));
73  MOCK_CONST_METHOD1(GetPowerwashSafeDirectory, bool(base::FilePath*));
74
75  // Returns a reference to the underlying FakeHardware.
76  FakeHardware& fake() {
77    return fake_;
78  }
79
80 private:
81  // The underlying FakeHardware.
82  FakeHardware fake_;
83
84  DISALLOW_COPY_AND_ASSIGN(MockHardware);
85};
86
87
88}  // namespace chromeos_update_engine
89
90#endif  // UPDATE_ENGINE_COMMON_MOCK_HARDWARE_H_
91