Added tests for DeleteEmptyFilesAndDirs(), GetDirFileAndDirCount(), + bugfixes

This commit is contained in:
Vladyslav Baranovskyi
2024-10-10 21:15:30 +03:00
parent fc1630828a
commit 7db6169a6f
3 changed files with 143 additions and 3 deletions

View File

@@ -15,6 +15,15 @@
using namespace OpenVulkano;
namespace
{
void touch(const std::filesystem::path& file)
{
std::ofstream foo(file);
foo.close();
}
}
TEST_CASE("DeleteEmptyDirs", "[FsUtils]")
{
Logger::SetupLogger("", "tests.log");
@@ -135,3 +144,134 @@ TEST_CASE("ToValidFileName", "[FsUtils]")
REQUIRE(FsUtils::ToValidFileName("file:name<>") == "filename");
REQUIRE(FsUtils::ToValidFileName(" file<name>?") == "filename");
}
TEST_CASE("DeleteEmptyFilesAndDirs", "[FsUtils]")
{
const auto testDir = AppFolders::GetAppTempDir() / "testDirectory";
{
std::filesystem::create_directories(testDir);
auto emptyFile = testDir / "empty_file.txt";
auto emptyDir = testDir / "empty_dir";
auto nonEmptyFile = testDir / "non_empty_file.txt";
std::filesystem::create_directory(emptyDir);
std::ofstream(nonEmptyFile) << "non-empty content";
touch(emptyFile);
REQUIRE(std::filesystem::exists(emptyFile));
REQUIRE(std::filesystem::exists(emptyDir));
REQUIRE(std::filesystem::exists(nonEmptyFile));
bool result = FsUtils::DeleteEmptyFilesAndDirs(testDir, false);
REQUIRE(result == true);
REQUIRE(!std::filesystem::exists(emptyFile));
REQUIRE(!std::filesystem::exists(emptyDir));
REQUIRE(std::filesystem::exists(nonEmptyFile));
std::filesystem::remove_all(testDir);
}
{
std::filesystem::create_directories(testDir);
auto nestedDir = testDir / "nested";
auto nestedEmptyFile = nestedDir / "empty_file_nested.txt";
auto nonEmptyFile = nestedDir / "non_empty_file_nested.txt";
std::filesystem::create_directories(nestedDir);
touch(nestedEmptyFile);
std::ofstream(nonEmptyFile) << "data";
REQUIRE(std::filesystem::exists(nestedDir));
REQUIRE(std::filesystem::exists(nestedEmptyFile));
REQUIRE(std::filesystem::exists(nonEmptyFile));
bool result = FsUtils::DeleteEmptyFilesAndDirs(testDir, true);
REQUIRE(result == true);
REQUIRE(!std::filesystem::exists(nestedEmptyFile));
REQUIRE(std::filesystem::exists(nonEmptyFile));
REQUIRE(std::filesystem::exists(nestedDir));
std::filesystem::remove_all(testDir);
}
{
std::filesystem::create_directories(testDir);
auto nonEmptyDir = testDir / "non_empty_dir";
auto nonEmptyFile = nonEmptyDir / "non_empty_file.txt";
std::filesystem::create_directory(nonEmptyDir);
std::ofstream(nonEmptyFile) << "data";
bool result = FsUtils::DeleteEmptyFilesAndDirs(testDir, false);
REQUIRE(result == false);
REQUIRE(std::filesystem::exists(nonEmptyFile));
REQUIRE(std::filesystem::exists(nonEmptyDir));
std::filesystem::remove_all(testDir);
}
{
std::filesystem::create_directories(testDir);
auto emptyDir = testDir / "empty_dir";
std::filesystem::create_directory(emptyDir);
REQUIRE(std::filesystem::exists(emptyDir));
bool result = FsUtils::DeleteEmptyFilesAndDirs(emptyDir, false);
REQUIRE(result == false);
REQUIRE(std::filesystem::exists(emptyDir));
std::filesystem::remove_all(testDir);
}
}
TEST_CASE("GetDirFileAndDirCount", "[FsUtils]")
{
const auto testDir = AppFolders::GetAppTempDir() / "count_test_directory";
{
std::filesystem::create_directories(testDir);
auto file1 = testDir / "file1.txt";
auto file2 = testDir / "file2.txt";
auto dir1 = testDir / "dir1";
auto dir2 = testDir / "dir2";
std::filesystem::create_directories(dir1);
std::filesystem::create_directories(dir2);
touch(file1);
touch(file2);
REQUIRE(std::filesystem::exists(file1));
REQUIRE(std::filesystem::exists(file2));
REQUIRE(std::filesystem::exists(dir1));
REQUIRE(std::filesystem::exists(dir2));
FsCount count = FsUtils::GetDirFileAndDirCount(testDir);
REQUIRE(count.fileCount == 2);
REQUIRE(count.dirCount == 2);
std::filesystem::remove_all(testDir);
}
{
std::filesystem::create_directories(testDir);
auto emptyDir = testDir / "empty_dir";
std::filesystem::create_directory(emptyDir);
REQUIRE(std::filesystem::exists(emptyDir));
FsCount count = FsUtils::GetDirFileAndDirCount(testDir);
REQUIRE(count.fileCount == 0);
REQUIRE(count.dirCount == 1);
std::filesystem::remove_all(testDir);
}
}