Skip to content

Commit

Permalink
Add MultiFileSystem tests
Browse files Browse the repository at this point in the history
  • Loading branch information
TheIndra55 committed May 14, 2024
1 parent b3091ee commit 4f0f2b2
Show file tree
Hide file tree
Showing 4 changed files with 59 additions and 3 deletions.
6 changes: 3 additions & 3 deletions premake5.lua
Original file line number Diff line number Diff line change
Expand Up @@ -68,14 +68,14 @@ project "Tests"
includedirs { "src", "vendor/catch2/extras" }
dofile "vendor.lua"

-- Define this as dummy game
defines { "TR7" }

filter "configurations:Debug"
defines { "DEBUG", "_DEBUG" }

filter "configurations:Release"
defines { "NDEBUG" }
optimize "On"

-- Define this as dummy game
defines { "TR7" }

end
5 changes: 5 additions & 0 deletions src/file/MultiFileSystem.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,11 @@ void MultiFileSystem::Add(cdc::FileSystem* fileSystem)
m_fileSystems.push_back(fileSystem);
}

void MultiFileSystem::Remove(cdc::FileSystem* fileSystem)
{
m_fileSystems.erase(std::remove(m_fileSystems.begin(), m_fileSystems.end(), fileSystem));
}

cdc::FileRequest* MultiFileSystem::RequestRead(cdc::FileReceiver* receiver, const char* fileName, unsigned int startOffset)
{
auto fileSystem = GetBestFileSystem(fileName);
Expand Down
5 changes: 5 additions & 0 deletions src/file/MultiFileSystem.h
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,12 @@ class MultiFileSystem : public cdc::FileSystem
cdc::FileSystem* GetBestFileSystem(const char* fileName);
public:
MultiFileSystem();

void Add(cdc::FileSystem* fileSystem);
void Remove(cdc::FileSystem* fileSystem);

// This should not really be exposed, currently only for tests - do not use directly
const auto& GetSystems() const noexcept { return m_fileSystems; };

cdc::FileRequest* RequestRead(cdc::FileReceiver* receiver, const char* fileName, unsigned int startOffset);
cdc::File* OpenFile(const char* fileName);
Expand Down
46 changes: 46 additions & 0 deletions tests/TestFileSystem.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
#include <catch_amalgamated.hpp>

#include "cdc/file/FileSystem.h"
#include "file/MultiFileSystem.h"

class DummyFileSystem : public cdc::FileSystem
{
public:
cdc::FileRequest* RequestRead(cdc::FileReceiver* receiver, const char* fileName, unsigned int startOffset) { return nullptr; }
cdc::File* OpenFile(const char* fileName) { return nullptr; }
bool FileExists(const char* fileName) { return false; }
unsigned int GetFileSize(const char* fileName) { return 0; }
void SetSpecialisationMask(unsigned int specMask) { }
unsigned int GetSpecialisationMask() { return 0; }
Status GetStatus() { return IDLE; }
void Update() { }
void Synchronize() { }
};

TEST_CASE("multifilesystem test")
{
auto multiFileSystem = new MultiFileSystem();

SECTION("can add and remove systems")
{
auto fileSystem1 = new DummyFileSystem();
auto fileSystem2 = new DummyFileSystem();

multiFileSystem->Add(fileSystem1);
multiFileSystem->Add(fileSystem2);

REQUIRE(multiFileSystem->GetSystems().size() == 2);

multiFileSystem->Remove(fileSystem1);

REQUIRE(multiFileSystem->GetSystems().size() == 1);
}

SECTION("can check if file exists")
{
multiFileSystem->Add(new DummyFileSystem());
multiFileSystem->Add(new DummyFileSystem());

REQUIRE(multiFileSystem->FileExists("lara.drm") == false);
}
}

0 comments on commit 4f0f2b2

Please sign in to comment.