/* * Copyright (c) 2023 Fancy Code. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "LinuxApiMock.h" #include "LinuxTestImpl.h" #include "WrapApi.h" #if defined(__x86_64__) #include #endif #include #include #include #include #include #include #include std::shared_ptr &LinuxApiMock::GetInstance(std::shared_ptr *impl) { static auto instance = std::make_shared(); if (impl) { // The non-thread-safe changing is only for gtest. instance = *impl; } return instance; } void LinuxApiMock::Init() { } void LinuxApiMock::UnInit() { } int LinuxApiMock::fx_open(const char *pathname, int flags) { // LogInfo("Call the real api.\n"); return __real_fx_open(pathname, flags); } int LinuxApiMock::fx_tcgetattr(int fd, struct termios *termios_p) { // LogInfo("Call the real api.\n"); return __real_fx_tcgetattr(fd, termios_p); } int LinuxApiMock::fx_tcsetattr(int fd, int optional_actions, const struct termios *termios_p) { return __real_fx_tcsetattr(fd, optional_actions, termios_p); } ssize_t LinuxApiMock::fx_write(int fd, const void *buf, size_t count) { // LogInfo("Call the real api.\n"); return __real_fx_write(fd, buf, count); } ssize_t LinuxApiMock::fx_read(int fd, void *buf, size_t count) { // LogInfo("Call the real api.\n"); return __real_fx_read(fd, buf, count); } int LinuxApiMock::fx_select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout) { // LogInfo("Call the real api.\n"); return __real_fx_select(nfds, readfds, writefds, exceptfds, timeout); } int LinuxApiMock::fx_fstat(int fd, struct stat *statbuf) { return __real_fx_fstat(fd, statbuf); } int LinuxApiMock::fx_access(const char *pathname, int mode) { return __real_fx_access(pathname, mode); } FILE *LinuxApiMock::fx_fopen(const char *pathname, const char *mode) { return __real_fx_fopen(pathname, mode); } std::shared_ptr LinuxTest::CreateLinuxTest(void) { std::shared_ptr test = std::make_shared(); LinuxTestImpl::ApiInit(test); return test; } int LinuxTest::GetHandleForMock(void) { return INVALID_HANDLE; }