fsfw/unittests/hal/testFsMock.cpp

57 lines
2.2 KiB
C++
Raw Normal View History

2022-08-17 16:47:46 +02:00
#include <catch2/catch_test_macros.hpp>
#include "fsfw/serialize/SerializeIF.h"
#include "mocks/FilesystemMock.h"
using namespace std;
TEST_CASE("Filesystem Mock", "[mocks]") {
auto fsMock = FilesystemMock();
SECTION("Create File") {
2023-01-26 17:05:25 +01:00
std::filesystem::path myPath = "hello.txt";
std::filesystem::path myPath2("hello.txt");
FilesystemParams params("hello.txt");
2022-08-22 16:35:53 +02:00
CHECK(fsMock.createFile(params) == returnvalue::OK);
2023-01-26 15:30:23 +01:00
std::string filename_c("hello.txt");
std::filesystem::path::string_type filename(filename_c.cbegin(), filename_c.cend());
auto iter = fsMock.fileMap.find(filename);
2022-08-17 16:47:46 +02:00
REQUIRE(iter != fsMock.fileMap.end());
FilesystemMock::FileInfo &stats = iter->second;
CHECK(stats.fileSegQueue.empty());
CHECK(stats.fileRaw.empty());
}
SECTION("Write to File") {
std::string testData = "test data";
FileOpParams params("hello.txt", testData.size());
2022-08-17 16:47:46 +02:00
CHECK(fsMock.writeToFile(params, reinterpret_cast<const uint8_t *>(testData.data())) ==
2022-08-22 16:35:53 +02:00
returnvalue::OK);
2023-01-26 15:30:23 +01:00
std::string filename_c("hello.txt");
std::filesystem::path::string_type filename(filename_c.cbegin(), filename_c.cend());
auto iter = fsMock.fileMap.find(filename);
2022-08-17 16:47:46 +02:00
REQUIRE(iter != fsMock.fileMap.end());
FilesystemMock::FileInfo &stats = iter->second;
CHECK(not stats.fileSegQueue.empty());
CHECK(not stats.fileRaw.empty());
auto &segment = stats.fileSegQueue.back();
CHECK(segment.offset == 0);
CHECK(std::string(reinterpret_cast<const char *>(segment.data.data()), segment.data.size()) ==
testData);
CHECK(std::string(reinterpret_cast<const char *>(stats.fileRaw.data()), segment.data.size()) ==
testData);
}
SECTION("Create Directory") {
FilesystemParams params("hello");
2022-08-22 16:35:53 +02:00
CHECK(fsMock.createDirectory(params) == returnvalue::OK);
2022-08-17 16:47:46 +02:00
REQUIRE(not fsMock.dirMap.empty());
2023-01-26 15:30:23 +01:00
std::string filename_c("hello");
std::filesystem::path::string_type filename(filename_c.cbegin(), filename_c.cend());
auto iter = fsMock.dirMap.find(filename);
2022-08-17 16:47:46 +02:00
REQUIRE(iter != fsMock.dirMap.end());
auto &dirInfo = iter->second;
CHECK(dirInfo.createCallCount == 1);
CHECK(dirInfo.delCallCount == 0);
}
}