#ifndef LINUX_API_MOCK_H #define LINUX_API_MOCK_H #include #include #include 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); virtual int fx_tcgetattr(int fd, struct termios *termios_p); virtual int fx_tcsetattr(int fd, int optional_actions, const struct termios *termios_p); }; /** * 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)); MOCK_METHOD2(fx_tcgetattr, int(int, struct termios *)); MOCK_METHOD3(fx_tcsetattr, int(int, int, const struct termios *)); 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