From f3a56d272e685a131210c69e8dd48a935f276f6e Mon Sep 17 00:00:00 2001 From: Vladyslav Baranovskyi Date: Wed, 9 Oct 2024 15:15:20 +0300 Subject: [PATCH 1/2] Tests for IO/FsUtils --- tests/IO/FsUtils.cpp | 70 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 tests/IO/FsUtils.cpp diff --git a/tests/IO/FsUtils.cpp b/tests/IO/FsUtils.cpp new file mode 100644 index 0000000..961d8b7 --- /dev/null +++ b/tests/IO/FsUtils.cpp @@ -0,0 +1,70 @@ +/* + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at https://mozilla.org/MPL/2.0/. + */ + +#include + +#include "IO/FsUtils.hpp" +#include "IO/AppFolders.hpp" + +#include +#include + +using namespace OpenVulkano; + +TEST_CASE("DeleteEmptyDirs", "[FsUtils]") +{ + auto baseDir = AppFolders::GetAppTempDir() / "testEmptyDirs"; + std::filesystem::create_directories(baseDir / "emptyDir"); + std::filesystem::create_directories(baseDir / "nonEmptyDir"); + std::ofstream(baseDir / "nonEmptyDir/file.txt").put('x'); + + REQUIRE(FsUtils::DeleteEmptyDirs(baseDir)); + REQUIRE(!std::filesystem::exists(baseDir / "emptyDir")); + REQUIRE(std::filesystem::exists(baseDir / "nonEmptyDir")); + + std::filesystem::create_directories(baseDir / "emptyDir"); + REQUIRE(FsUtils::DeleteEmptyDirs(baseDir, false)); + REQUIRE(!std::filesystem::exists(baseDir / "emptyDir")); + + std::filesystem::remove_all(baseDir); +} + +TEST_CASE("DeleteEmptySubTrees", "[FsUtils]") +{ + auto baseDir = AppFolders::GetAppTempDir() / "testEmptySubtrees"; + std::filesystem::create_directories(baseDir / "emptyTree" / "subDir1"); + std::filesystem::create_directories(baseDir / "emptyTree" / "subDir2"); + + REQUIRE(FsUtils::DeleteEmptySubTrees(baseDir)); + REQUIRE(!std::filesystem::exists(baseDir / "emptyTree")); + + std::filesystem::remove_all(baseDir); +} + +TEST_CASE("IsTreeEmpty", "[FsUtils]") +{ + auto baseDir = AppFolders::GetAppTempDir() / "testTreeEmpty"; + std::filesystem::create_directories(baseDir / "emptyDir"); + std::filesystem::create_directories(baseDir / "nonEmptyDir"); + std::ofstream(baseDir / "nonEmptyDir/file.txt").put('x'); + + REQUIRE(FsUtils::IsTreeEmpty(baseDir / "emptyDir")); + REQUIRE(!FsUtils::IsTreeEmpty(baseDir / "nonEmptyDir")); + + std::filesystem::remove_all(baseDir); +} + +TEST_CASE("GetDirSize", "[FsUtils]") +{ + auto baseDir = AppFolders::GetAppTempDir() / "testDirSize"; + std::filesystem::create_directories(baseDir / "dir"); + std::ofstream(baseDir / "dir/file1.txt").put('x'); + std::ofstream(baseDir / "dir/file2.txt").put('y'); + + REQUIRE(FsUtils::GetDirSize(baseDir / "dir") == 2); + + std::filesystem::remove_all(baseDir); +} \ No newline at end of file From e9c0a980953b83fe3a175560e0d8107a203e1f79 Mon Sep 17 00:00:00 2001 From: Vladyslav Baranovskyi Date: Wed, 9 Oct 2024 15:39:23 +0300 Subject: [PATCH 2/2] Added tests for non-empty trees deletion --- tests/IO/FsUtils.cpp | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/tests/IO/FsUtils.cpp b/tests/IO/FsUtils.cpp index 961d8b7..c42c215 100644 --- a/tests/IO/FsUtils.cpp +++ b/tests/IO/FsUtils.cpp @@ -41,6 +41,27 @@ TEST_CASE("DeleteEmptySubTrees", "[FsUtils]") REQUIRE(FsUtils::DeleteEmptySubTrees(baseDir)); REQUIRE(!std::filesystem::exists(baseDir / "emptyTree")); + std::filesystem::create_directories(baseDir / "partialTree" / "subDir1"); + std::filesystem::create_directories(baseDir / "partialTree" / "subDir2"); + std::ofstream(baseDir / "partialTree" / "subDir2/file.txt").put('x'); + + REQUIRE(FsUtils::DeleteEmptySubTrees(baseDir / "partialTree")); + + REQUIRE(!std::filesystem::exists(baseDir / "partialTree" / "subDir1")); + REQUIRE(std::filesystem::exists(baseDir / "partialTree" / "subDir2")); + REQUIRE(std::filesystem::exists(baseDir / "partialTree" / "subDir2/file.txt")); + + std::filesystem::remove(baseDir / "partialTree" / "subDir2/file.txt"); + + REQUIRE(!std::filesystem::exists(baseDir / "partialTree" / "subDir1")); + REQUIRE(std::filesystem::exists(baseDir / "partialTree" / "subDir2")); + REQUIRE(!std::filesystem::exists(baseDir / "partialTree" / "subDir2/file.txt")); + + REQUIRE(FsUtils::DeleteEmptySubTrees(baseDir / "partialTree")); + + REQUIRE(!std::filesystem::exists(baseDir / "partialTree" / "subDir1")); + REQUIRE(!std::filesystem::exists(baseDir / "partialTree" / "subDir2")); + std::filesystem::remove_all(baseDir); }