184bff8beSJason Ling #pragma once
284bff8beSJason Ling 
384bff8beSJason Ling #include "image_handler.hpp"
484bff8beSJason Ling 
5c78bfc82SJason Ling #include <memory>
6c78bfc82SJason Ling 
784bff8beSJason Ling #include <gmock/gmock.h>
884bff8beSJason Ling 
984bff8beSJason Ling namespace ipmi_flash
1084bff8beSJason Ling {
1184bff8beSJason Ling 
1284bff8beSJason Ling class ImageHandlerMock : public ImageHandlerInterface
1384bff8beSJason Ling {
1484bff8beSJason Ling   public:
1584bff8beSJason Ling     virtual ~ImageHandlerMock() = default;
16*f450486fSWilly Tu     MOCK_METHOD(bool, open, (const std::string&, std::ios_base::openmode),
17*f450486fSWilly Tu                 (override));
18*f450486fSWilly Tu     MOCK_METHOD(void, close, (), (override));
19*f450486fSWilly Tu     MOCK_METHOD(bool, write, (std::uint32_t, const std::vector<std::uint8_t>&),
20*f450486fSWilly Tu                 (override));
21*f450486fSWilly Tu     MOCK_METHOD(std::optional<std::vector<std::uint8_t>>, read,
22*f450486fSWilly Tu                 (std::uint32_t, std::uint32_t), (override));
23*f450486fSWilly Tu     MOCK_METHOD(int, getSize, (), (override));
2484bff8beSJason Ling };
2584bff8beSJason Ling 
26c78bfc82SJason Ling std::unique_ptr<ImageHandlerMock> CreateImageMock()
27c78bfc82SJason Ling {
28c78bfc82SJason Ling     return std::make_unique<ImageHandlerMock>();
29c78bfc82SJason Ling }
30c78bfc82SJason Ling 
3184bff8beSJason Ling } // namespace ipmi_flash
32