diff --git a/tests/IO/FsUtils.cpp b/tests/IO/FsUtils.cpp index c42c215..6ba75f2 100644 --- a/tests/IO/FsUtils.cpp +++ b/tests/IO/FsUtils.cpp @@ -88,4 +88,45 @@ TEST_CASE("GetDirSize", "[FsUtils]") REQUIRE(FsUtils::GetDirSize(baseDir / "dir") == 2); std::filesystem::remove_all(baseDir); -} \ No newline at end of file +} + +TEST_CASE("ToValidFileName", "[FsUtils]") +{ + REQUIRE(FsUtils::ToValidFileName("file") == "file<name>"); + REQUIRE(FsUtils::ToValidFileName("file:name") == "file꞉name"); + REQUIRE(FsUtils::ToValidFileName("file\"name\"") == "file"name""); + REQUIRE(FsUtils::ToValidFileName("file/name\\") == "file⁄name⧹"); + REQUIRE(FsUtils::ToValidFileName("file|name") == "file|name"); + REQUIRE(FsUtils::ToValidFileName("file?name*") == "file?name∗"); + + REQUIRE(FsUtils::ToValidFileName("file~name") == "filename"); + REQUIRE(FsUtils::ToValidFileName("file`name") == "filename"); + REQUIRE(FsUtils::ToValidFileName("file!@#$%^&name") == "filename"); + REQUIRE(FsUtils::ToValidFileName("file(name{name}") == "filenamename"); + REQUIRE(FsUtils::ToValidFileName("file=name") == "filename"); + REQUIRE(FsUtils::ToValidFileName("file+name,name") == "filenamename"); + + REQUIRE(FsUtils::ToValidFileName(" file name ") == "file name"); + REQUIRE(FsUtils::ToValidFileName("..file name..") == "file name"); + REQUIRE(FsUtils::ToValidFileName(".file.") == "file"); + + REQUIRE(FsUtils::ToValidFileName("file name") == "file name"); + REQUIRE(FsUtils::ToValidFileName("file name") == "file name"); + + REQUIRE(FsUtils::ToValidFileName("") == "unnamed_file"); + REQUIRE(FsUtils::ToValidFileName(" ") == "unnamed_file"); + REQUIRE(FsUtils::ToValidFileName("...") == "unnamed_file"); + + std::string long_name(300, 'a'); + REQUIRE(FsUtils::ToValidFileName(long_name).length() == 255); + + std::string utf8_name = "name_" + std::string(250, 'a') + "∗"; + REQUIRE(FsUtils::ToValidFileName(utf8_name).back() == 'a'); + + REQUIRE(FsUtils::ToValidFileName("<>:/\\|?*") == "<>꞉⁄⧹|?∗"); + REQUIRE(FsUtils::ToValidFileName("~~~~") == "unnamed_file"); + REQUIRE(FsUtils::ToValidFileName("..") == "unnamed_file"); + + REQUIRE(FsUtils::ToValidFileName("file:name<>") == "file꞉name<>"); + REQUIRE(FsUtils::ToValidFileName(" file?") == "file<name>?"); +}