add fs mock feed function

This commit is contained in:
2022-08-17 16:47:46 +02:00
parent 12c452e7ce
commit 0bb82e0da2
4 changed files with 75 additions and 2 deletions

View File

@ -1,7 +1,21 @@
#include "FilesystemMock.h"
#include <filesystem>
#include "fsfw/serialize/SerializeIF.h"
ReturnValue_t FilesystemMock::feedFile(const std::string &filename, std::ifstream &file) {
if (not std::filesystem::exists(filename)) {
return HasReturnvaluesIF::RETURN_FAILED;
}
size_t fileSize = std::filesystem::file_size(filename);
FileOpParams params(filename.c_str(), fileSize);
std::vector<uint8_t> rawData(fileSize);
file.read(reinterpret_cast<char *>(rawData.data()), static_cast<unsigned int>(rawData.size()));
createOrAddToFile(params, rawData.data());
return HasReturnvaluesIF::RETURN_OK;
}
ReturnValue_t FilesystemMock::writeToFile(FileOpParams params, const uint8_t *data) {
createOrAddToFile(params, data);
return HasReturnvaluesIF::RETURN_OK;
@ -75,7 +89,9 @@ void FilesystemMock::createOrAddToFile(FileOpParams params, const uint8_t *data)
auto iter = fileMap.find(filename);
if (iter == fileMap.end()) {
FileSegmentQueue queue;
queue.push(FileWriteInfo(filename, params.offset, data, params.size));
if (params.size > 0) {
queue.push(FileWriteInfo(filename, params.offset, data, params.size));
}
FileInfo info;
info.fileSegQueue = queue;
if (data != nullptr) {
@ -105,4 +121,6 @@ void FilesystemMock::createOrAddToFile(FileOpParams params, const uint8_t *data)
void FilesystemMock::reset() {
fileMap.clear();
dirMap.clear();
std::queue<RenameInfo> empty;
std::swap(renameQueue, empty);
}