#ifndef LINUX_API_MOCK_H #define LINUX_API_MOCK_H #include #include #include #ifdef __cplusplus extern "C" { #endif // Modify all the real api. int __real_fx_open(const char *pathname, int flags); #ifdef __cplusplus } #endif constexpr int INVALID_HANDLE = -1; class LinuxApiMock { public: LinuxApiMock() = default; virtual ~LinuxApiMock() = default; static std::shared_ptr &GetInstance(std::shared_ptr *impl = nullptr) { static auto instance = std::make_shared(); if (impl) { // The non-thread-safe changing is only for gtest. instance = *impl; } return instance; } virtual void Init() {} virtual void UnInit() {} virtual int fx_open(const char *pathname, int flags); }; /** * A simulation interface class used for automated testing in Ubuntu systems, implementing the function of piling on * some Linux standard interfaces. */ class LinuxTest : public LinuxApiMock { public: LinuxTest() = default; virtual ~LinuxTest() = default; MOCK_METHOD2(fx_open, int(const char *, int)); public: /** * @brief Get the Handle For Mock object * * @return int */ virtual int GetHandleForMock(void) { return INVALID_HANDLE; } public: static std::shared_ptr CreateLinuxTest(void); }; #endif