1 #pragma once
2 
3 #include "pmbus.hpp"
4 #include "util_base.hpp"
5 
6 #include <gmock/gmock.h>
7 
8 namespace phosphor
9 {
10 namespace pmbus
11 {
12 class MockedPMBus : public PMBusBase
13 {
14 
15   public:
16     virtual ~MockedPMBus() = default;
17 
18     MOCK_METHOD(uint64_t, read, (const std::string& name, Type type),
19                 (override));
20     MOCK_METHOD(std::string, readString, (const std::string& name, Type type),
21                 (override));
22     MOCK_METHOD(void, writeBinary,
23                 (const std::string& name, std::vector<uint8_t> data, Type type),
24                 (override));
25 };
26 } // namespace pmbus
27 
28 namespace power
29 {
30 namespace psu
31 {
32 class MockedUtil : public UtilBase
33 {
34   public:
35     virtual ~MockedUtil() = default;
36 
37     MOCK_METHOD(bool, getPresence,
38                 (sdbusplus::bus::bus & bus, const std::string& invpath),
39                 (const, override));
40 };
41 
42 static std::unique_ptr<MockedUtil> util;
43 inline const UtilBase& getUtils()
44 {
45     if (!util)
46     {
47         util = std::make_unique<MockedUtil>();
48     }
49     return *util;
50 }
51 
52 inline void freeUtils()
53 {
54     util.reset();
55 }
56 
57 } // namespace psu
58 } // namespace power
59 
60 } // namespace phosphor
61