Index: base/file_path_unittest.cc |
diff --git a/base/file_path_unittest.cc b/base/file_path_unittest.cc |
index 6eb106be68cde0bb81324c5dd6fee7aac16676c7..1c8b99fee23ce2cbdc13976872ed2b85f30de585 100644 |
--- a/base/file_path_unittest.cc |
+++ b/base/file_path_unittest.cc |
@@ -37,6 +37,11 @@ struct BinaryIntTestData { |
int expected; |
}; |
+struct UTF8TestData { |
+ const FilePath::CharType* native; |
+ const char* utf8; |
+}; |
+ |
// file_util winds up using autoreleased objects on the Mac, so this needs |
// to be a PlatformTest |
class FilePathTest : public PlatformTest { |
@@ -1044,6 +1049,30 @@ TEST_F(FilePathTest, ReferencesParent) { |
} |
} |
+TEST_F(FilePathTest, FromUTF8Unsafe_And_AsUTF8Unsafe) { |
+ const struct UTF8TestData cases[] = { |
+ { FPL("foo.txt"), "foo.txt" }, |
+ // "aeo" with accents. Use http://0xcc.net/jsescape/ to decode them. |
+ { FPL("\u00E0\u00E8\u00F2.txt"), "\xC3\xA0\xC3\xA8\xC3\xB2.txt" }, |
+ // Full-width "ABC". |
+ { FPL("\uFF21\uFF22\uFF23.txt"), |
+ "\xEF\xBC\xA1\xEF\xBC\xA2\xEF\xBC\xA3.txt" }, |
+ }; |
+ |
+ for (size_t i = 0; i < arraysize(cases); ++i) { |
+ // Test FromUTF8Unsafe() works. |
+ FilePath from_utf8 = FilePath::FromUTF8Unsafe(cases[i].utf8); |
+ EXPECT_EQ(cases[i].native, from_utf8.value()) |
+ << "i: " << i << ", input: " << cases[i].native; |
+ // Test AsUTF8Unsafe() works. |
+ FilePath from_native = FilePath(cases[i].native); |
+ EXPECT_EQ(cases[i].utf8, from_native.AsUTF8Unsafe()) |
+ << "i: " << i << ", input: " << cases[i].native; |
+ // Test the two file paths are identical. |
+ EXPECT_EQ(from_utf8.value(), from_native.value()); |
+ } |
+} |
+ |
#if defined(FILE_PATH_USES_WIN_SEPARATORS) |
TEST_F(FilePathTest, NormalizeWindowsPathSeparators) { |
const struct UnaryTestData cases[] = { |
@@ -1086,4 +1115,5 @@ TEST_F(FilePathTest, NormalizeWindowsPathSeparators) { |
"i: " << i << ", input: " << input.value(); |
} |
} |
+ |
#endif |