Path: Unicode handling and tests for SanitizeFileName

This commit is contained in:
Connor McLaughlin
2022-07-30 21:46:14 +10:00
parent 12875cbcac
commit 89659db7ee
9 changed files with 131 additions and 51 deletions

View File

@ -222,4 +222,20 @@ TEST(FileSystem, ChangeFileName)
#else
ASSERT_EQ(Path::ChangeFileName("/foo/bar", "baz"), "/foo/baz");
#endif
}
TEST(FileSystem, SanitizeFileName)
{
ASSERT_EQ(Path::SanitizeFileName(u8"foo"), u8"foo");
ASSERT_EQ(Path::SanitizeFileName(u8"foo/bar"), u8"foo_bar");
ASSERT_EQ(Path::SanitizeFileName(u8"f🙃o"), u8"f🙃o");
ASSERT_EQ(Path::SanitizeFileName(u8"ŻąłóРстуぬねのはen🍪⟑η∏☉ⴤ∩₲ ₱⟑♰⫳🐱"), u8"ŻąłóРстуぬねのはen🍪⟑η∏☉ⴤ∩₲ ₱⟑♰⫳🐱");
#ifdef _WIN32
ASSERT_EQ(Path::SanitizeFileName(u8"foo:"), u8"foo_");
ASSERT_EQ(Path::SanitizeFileName(u8"foo:bar."), u8"foo_bar_");
ASSERT_EQ(Path::SanitizeFileName(u8"foo\\bar"), u8"foo_bar");
ASSERT_EQ(Path::SanitizeFileName(u8"foo>bar"), u8"foo_bar");
ASSERT_EQ(Path::SanitizeFileName(u8"foo\\bar", false), u8"foo\\bar");
#endif
ASSERT_EQ(Path::SanitizeFileName(u8"foo/bar", false), u8"foo/bar");
}