Update and clean up HK and Local Pool Modules
This commit is contained in:
96
unittests/mock/FilesystemMock.h
Normal file
96
unittests/mock/FilesystemMock.h
Normal file
@ -0,0 +1,96 @@
|
||||
#ifndef FSFW_MOCKS_FILESYSTEMMOCK_H
|
||||
#define FSFW_MOCKS_FILESYSTEMMOCK_H
|
||||
|
||||
#include <fstream>
|
||||
#include <map>
|
||||
#include <queue>
|
||||
#include <string>
|
||||
#include <utility>
|
||||
|
||||
#include "fsfw/filesystem.h"
|
||||
|
||||
/**
|
||||
* This mock models a filesystem in the RAM. It can be used to verify correct behaviour of
|
||||
* a component using a filesystem without relying on an actual OS filesystem implementation.
|
||||
*
|
||||
* Please note that this object does not actually check paths for validity. The file API was
|
||||
* built in a way to allow reading a file back after it was written while also remembering
|
||||
* the specific file segments which were inserted in write calls.
|
||||
*/
|
||||
class FilesystemMock : public HasFileSystemIF {
|
||||
public:
|
||||
struct FileWriteInfo {
|
||||
FileWriteInfo(std::string filename, size_t offset, const uint8_t* data, size_t len)
|
||||
: filename(std::move(filename)), offset(offset) {
|
||||
this->data.insert(this->data.end(), data, data + len);
|
||||
}
|
||||
std::string filename;
|
||||
size_t offset;
|
||||
std::vector<uint8_t> data;
|
||||
};
|
||||
using FileSegmentQueue = std::queue<FileWriteInfo>;
|
||||
|
||||
struct FileInfo {
|
||||
FileSegmentQueue fileSegQueue;
|
||||
std::vector<uint8_t> fileRaw;
|
||||
};
|
||||
|
||||
std::map<std::string, FileInfo> fileMap;
|
||||
|
||||
struct DirInfo {
|
||||
size_t createCallCount = 0;
|
||||
size_t delCallCount = 0;
|
||||
std::queue<bool> wihParentDir;
|
||||
std::queue<bool> recursiveDeletion;
|
||||
};
|
||||
std::map<std::string, DirInfo> dirMap;
|
||||
|
||||
struct RenameInfo {
|
||||
RenameInfo(std::string oldName, std::string newName)
|
||||
: oldName(std::move(oldName)), newName(std::move(newName)) {}
|
||||
|
||||
std::string oldName;
|
||||
std::string newName;
|
||||
};
|
||||
std::queue<RenameInfo> renameQueue;
|
||||
std::string truncateCalledOnFile;
|
||||
ReturnValue_t feedFile(const std::string& filename, std::ifstream& file);
|
||||
|
||||
ReturnValue_t getBaseFilename(const char* path, char* nameBuf, size_t maxLen,
|
||||
size_t& baseNameLen) override;
|
||||
|
||||
ReturnValue_t isDirectory(const char* path, bool& isDirectory) override;
|
||||
|
||||
bool fileExists(const char* path, FileSystemArgsIF* args) override;
|
||||
|
||||
ReturnValue_t truncateFile(const char* path, FileSystemArgsIF* args) override;
|
||||
|
||||
ReturnValue_t getFileSize(const char* path, uint64_t& fileSize, FileSystemArgsIF* args) override;
|
||||
|
||||
ReturnValue_t writeToFile(const char* path, size_t offset, const uint8_t* data,
|
||||
size_t size) override;
|
||||
|
||||
ReturnValue_t readFromFile(const char* path, size_t offset, size_t size, uint8_t* buffer,
|
||||
size_t& readSize, size_t maxSize) override;
|
||||
|
||||
ReturnValue_t createFile(const char* path, const uint8_t* data, size_t size) override;
|
||||
ReturnValue_t removeFile(const char* path, FileSystemArgsIF* args) override;
|
||||
|
||||
ReturnValue_t createDirectory(const char* path, bool createParentDirs,
|
||||
FileSystemArgsIF* args) override;
|
||||
|
||||
ReturnValue_t removeDirectory(const char* path, bool deleteRecurively,
|
||||
FileSystemArgsIF* args) override;
|
||||
ReturnValue_t rename(const char* oldPath, const char* newPath, FileSystemArgsIF* args) override;
|
||||
|
||||
void reset();
|
||||
|
||||
using HasFileSystemIF::createDirectory;
|
||||
using HasFileSystemIF::createFile;
|
||||
using HasFileSystemIF::readFromFile;
|
||||
|
||||
private:
|
||||
void createOrAddToFile(const char* path, size_t offset, const uint8_t* data, size_t dataSize);
|
||||
};
|
||||
|
||||
#endif // FSFW_MOCKS_FILESYSTEMMOCK_H
|
Reference in New Issue
Block a user