184bff8beSJason Ling #pragma once
284bff8beSJason Ling 
384bff8beSJason Ling #include "image_handler.hpp"
484bff8beSJason Ling 
5*c78bfc82SJason Ling #include <memory>
6*c78bfc82SJason 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;
1684bff8beSJason Ling     MOCK_METHOD2(open, bool(const std::string&, std::ios_base::openmode));
1784bff8beSJason Ling     MOCK_METHOD0(close, void());
1884bff8beSJason Ling     MOCK_METHOD2(write, bool(std::uint32_t, const std::vector<std::uint8_t>&));
1984bff8beSJason Ling     MOCK_METHOD2(read, std::optional<std::vector<std::uint8_t>>(std::uint32_t,
2084bff8beSJason Ling                                                                 std::uint32_t));
2184bff8beSJason Ling     MOCK_METHOD0(getSize, int());
2284bff8beSJason Ling };
2384bff8beSJason Ling 
24*c78bfc82SJason Ling std::unique_ptr<ImageHandlerMock> CreateImageMock()
25*c78bfc82SJason Ling {
26*c78bfc82SJason Ling     return std::make_unique<ImageHandlerMock>();
27*c78bfc82SJason Ling }
28*c78bfc82SJason Ling 
2984bff8beSJason Ling } // namespace ipmi_flash
30