diff --git a/core/include/cubos/core/data/fs/standard_archive.hpp b/core/include/cubos/core/data/fs/standard_archive.hpp index 46f020d32..c3913bdd7 100644 --- a/core/include/cubos/core/data/fs/standard_archive.hpp +++ b/core/include/cubos/core/data/fs/standard_archive.hpp @@ -35,6 +35,10 @@ namespace cubos::core::data /// @param readOnly True if the archive is read-only, false otherwise. StandardArchive(const std::filesystem::path& osPath, bool isDirectory, bool readOnly); + /// @brief Checks if the archive was successfully initialized. + /// @return True if the archive was successfully initialized, false otherwise. + bool initialized() const; + std::size_t create(std::size_t parent, std::string_view name, bool directory = false) override; bool destroy(std::size_t id) override; std::string name(std::size_t id) const override; diff --git a/core/src/data/fs/standard_archive.cpp b/core/src/data/fs/standard_archive.cpp index 34cf73e39..32e342d08 100644 --- a/core/src/data/fs/standard_archive.cpp +++ b/core/src/data/fs/standard_archive.cpp @@ -109,6 +109,11 @@ void StandardArchive::generate(std::size_t parent) } } +bool StandardArchive::initialized() const +{ + return !mFiles.empty(); +} + std::size_t StandardArchive::create(std::size_t parent, std::string_view name, bool directory) { INIT_OR_RETURN(0); diff --git a/core/tests/data/fs/standard_archive.cpp b/core/tests/data/fs/standard_archive.cpp index e2ec5abf7..9ef878908 100644 --- a/core/tests/data/fs/standard_archive.cpp +++ b/core/tests/data/fs/standard_archive.cpp @@ -16,6 +16,7 @@ using cubos::core::memory::Stream; static void assertInitializationFailed(StandardArchive& archive) { REQUIRE_FALSE(archive.directory(1)); // Independently of it was created as a directory or not. + REQUIRE_FALSE(archive.initialized()); REQUIRE(archive.parent(1) == 0); REQUIRE(archive.sibling(1) == 0); REQUIRE(archive.child(1) == 0); @@ -62,6 +63,7 @@ TEST_CASE("data::StandardArchive") // NOLINT(readability-function-size) // Check if the structure is correct. CHECK(archive.readOnly() == readOnly); + CHECK(archive.initialized()); CHECK(archive.parent(1) == 0); CHECK(archive.sibling(1) == 0); CHECK(archive.child(1) == 0); @@ -133,6 +135,7 @@ TEST_CASE("data::StandardArchive") // NOLINT(readability-function-size) { archive = std::make_unique(path, true, false); CHECK_FALSE(archive->readOnly()); + CHECK(archive->initialized()); // Check initial structure. CHECK(archive->parent(1) == 0); @@ -220,6 +223,7 @@ TEST_CASE("data::StandardArchive") // NOLINT(readability-function-size) // Create a read-only archive on the generated directory. archive = std::make_unique(path, true, true); CHECK(archive->readOnly()); + CHECK(archive->initialized()); // Check root. CHECK(archive->directory(1));