| OLD | NEW |
| 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "build/build_config.h" | 5 #include "build/build_config.h" |
| 6 | 6 |
| 7 #if defined(OS_WIN) | 7 #if defined(OS_WIN) |
| 8 #include <windows.h> | 8 #include <windows.h> |
| 9 #include <shellapi.h> | 9 #include <shellapi.h> |
| 10 #include <shlobj.h> | 10 #include <shlobj.h> |
| (...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 140 std::wstring result = value.path; | 140 std::wstring result = value.path; |
| 141 file_util::AppendToPath(&result, value.ending); | 141 file_util::AppendToPath(&result, value.ending); |
| 142 EXPECT_EQ(value.result, result); | 142 EXPECT_EQ(value.result, result); |
| 143 } | 143 } |
| 144 | 144 |
| 145 #ifdef NDEBUG | 145 #ifdef NDEBUG |
| 146 file_util::AppendToPath(NULL, L"path"); // asserts in debug mode | 146 file_util::AppendToPath(NULL, L"path"); // asserts in debug mode |
| 147 #endif | 147 #endif |
| 148 } | 148 } |
| 149 | 149 |
| 150 // TODO(port): enable this test for non-Windows. | |
| 151 #if defined(OS_WIN) | |
| 152 static const struct InsertBeforeExtensionCase { | 150 static const struct InsertBeforeExtensionCase { |
| 153 std::wstring path; | 151 std::wstring path; |
| 154 std::wstring suffix; | 152 FilePath::StringType suffix; |
| 155 std::wstring result; | 153 std::wstring result; |
| 156 } kInsertBeforeExtension[] = { | 154 } kInsertBeforeExtension[] = { |
| 157 {L"", L"", L""}, | 155 {L"", FILE_PATH_LITERAL(""), L""}, |
| 158 {L"", L"txt", L"txt"}, | 156 {L"", FILE_PATH_LITERAL("txt"), L"txt"}, |
| 159 {L".", L"txt", L"txt."}, | 157 {L".", FILE_PATH_LITERAL("txt"), L"txt."}, |
| 160 {L".", L"", L"."}, | 158 {L".", FILE_PATH_LITERAL(""), L"."}, |
| 161 {L"foo.dll", L"txt", L"footxt.dll"}, | 159 {L"foo.dll", FILE_PATH_LITERAL("txt"), L"footxt.dll"}, |
| 162 {L"foo.dll", L".txt", L"foo.txt.dll"}, | 160 {L"foo.dll", FILE_PATH_LITERAL(".txt"), L"foo.txt.dll"}, |
| 163 {L"foo", L"txt", L"footxt"}, | 161 {L"foo", FILE_PATH_LITERAL("txt"), L"footxt"}, |
| 164 {L"foo", L".txt", L"foo.txt"}, | 162 {L"foo", FILE_PATH_LITERAL(".txt"), L"foo.txt"}, |
| 165 {L"foo.baz.dll", L"txt", L"foo.baztxt.dll"}, | 163 {L"foo.baz.dll", FILE_PATH_LITERAL("txt"), L"foo.baztxt.dll"}, |
| 166 {L"foo.baz.dll", L".txt", L"foo.baz.txt.dll"}, | 164 {L"foo.baz.dll", FILE_PATH_LITERAL(".txt"), L"foo.baz.txt.dll"}, |
| 167 {L"foo.dll", L"", L"foo.dll"}, | 165 {L"foo.dll", FILE_PATH_LITERAL(""), L"foo.dll"}, |
| 168 {L"foo.dll", L".", L"foo..dll"}, | 166 {L"foo.dll", FILE_PATH_LITERAL("."), L"foo..dll"}, |
| 169 {L"foo", L"", L"foo"}, | 167 {L"foo", FILE_PATH_LITERAL(""), L"foo"}, |
| 170 {L"foo", L".", L"foo."}, | 168 {L"foo", FILE_PATH_LITERAL("."), L"foo."}, |
| 171 {L"foo.baz.dll", L"", L"foo.baz.dll"}, | 169 {L"foo.baz.dll", FILE_PATH_LITERAL(""), L"foo.baz.dll"}, |
| 172 {L"foo.baz.dll", L".", L"foo.baz..dll"}, | 170 {L"foo.baz.dll", FILE_PATH_LITERAL("."), L"foo.baz..dll"}, |
| 173 #if defined(OS_WIN) | 171 #if defined(OS_WIN) |
| 174 {L"\\", L"", L"\\"}, | 172 {L"\\", L"", L"\\"}, |
| 175 {L"\\", L"txt", L"\\txt"}, | 173 {L"\\", L"txt", L"\\txt"}, |
| 176 {L"\\.", L"txt", L"\\txt."}, | 174 {L"\\.", L"txt", L"\\txt."}, |
| 177 {L"\\.", L"", L"\\."}, | 175 {L"\\.", L"", L"\\."}, |
| 178 {L"C:\\bar\\foo.dll", L"txt", L"C:\\bar\\footxt.dll"}, | 176 {L"C:\\bar\\foo.dll", L"txt", L"C:\\bar\\footxt.dll"}, |
| 179 {L"C:\\bar.baz\\foodll", L"txt", L"C:\\bar.baz\\foodlltxt"}, | 177 {L"C:\\bar.baz\\foodll", L"txt", L"C:\\bar.baz\\foodlltxt"}, |
| 180 {L"C:\\bar.baz\\foo.dll", L"txt", L"C:\\bar.baz\\footxt.dll"}, | 178 {L"C:\\bar.baz\\foo.dll", L"txt", L"C:\\bar.baz\\footxt.dll"}, |
| 181 {L"C:\\bar.baz\\foo.dll.exe", L"txt", L"C:\\bar.baz\\foo.dlltxt.exe"}, | 179 {L"C:\\bar.baz\\foo.dll.exe", L"txt", L"C:\\bar.baz\\foo.dlltxt.exe"}, |
| 182 {L"C:\\bar.baz\\foo", L"", L"C:\\bar.baz\\foo"}, | 180 {L"C:\\bar.baz\\foo", L"", L"C:\\bar.baz\\foo"}, |
| 183 {L"C:\\bar.baz\\foo.exe", L"", L"C:\\bar.baz\\foo.exe"}, | 181 {L"C:\\bar.baz\\foo.exe", L"", L"C:\\bar.baz\\foo.exe"}, |
| 184 {L"C:\\bar.baz\\foo.dll.exe", L"", L"C:\\bar.baz\\foo.dll.exe"}, | 182 {L"C:\\bar.baz\\foo.dll.exe", L"", L"C:\\bar.baz\\foo.dll.exe"}, |
| 185 {L"C:\\bar\\baz\\foo.exe", L" (1)", L"C:\\bar\\baz\\foo (1).exe"}, | 183 {L"C:\\bar\\baz\\foo.exe", L" (1)", L"C:\\bar\\baz\\foo (1).exe"}, |
| 186 #elif defined(OS_POSIX) | 184 #elif defined(OS_POSIX) |
| 187 {L"/", L"", L"/"}, | 185 {L"/", "", L"/"}, |
| 188 {L"/", L"txt", L"/txt"}, | 186 {L"/", "txt", L"/txt"}, |
| 189 {L"/.", L"txt", L"/txt."}, | 187 {L"/.", "txt", L"/txt."}, |
| 190 {L"/.", L"", L"/."}, | 188 {L"/.", "", L"/."}, |
| 191 {L"/bar/foo.dll", L"txt", L"/bar/footxt.dll"}, | 189 {L"/bar/foo.dll", "txt", L"/bar/footxt.dll"}, |
| 192 {L"/bar.baz/foodll", L"txt", L"/bar.baz/foodlltxt"}, | 190 {L"/bar.baz/foodll", "txt", L"/bar.baz/foodlltxt"}, |
| 193 {L"/bar.baz/foo.dll", L"txt", L"/bar.baz/footxt.dll"}, | 191 {L"/bar.baz/foo.dll", "txt", L"/bar.baz/footxt.dll"}, |
| 194 {L"/bar.baz/foo.dll.exe", L"txt", L"/bar.baz/foo.dlltxt.exe"}, | 192 {L"/bar.baz/foo.dll.exe", "txt", L"/bar.baz/foo.dlltxt.exe"}, |
| 195 {L"/bar.baz/foo", L"", L"/bar.baz/foo"}, | 193 {L"/bar.baz/foo", "", L"/bar.baz/foo"}, |
| 196 {L"/bar.baz/foo.exe", L"", L"/bar.baz/foo.exe"}, | 194 {L"/bar.baz/foo.exe", "", L"/bar.baz/foo.exe"}, |
| 197 {L"/bar.baz/foo.dll.exe", L"", L"/bar.baz/foo.dll.exe"}, | 195 {L"/bar.baz/foo.dll.exe", "", L"/bar.baz/foo.dll.exe"}, |
| 198 {L"/bar/baz/foo.exe", L" (1)", L"/bar/baz/foo (1).exe"}, | 196 {L"/bar/baz/foo.exe", " (1)", L"/bar/baz/foo (1).exe"}, |
| 199 #endif | 197 #endif |
| 200 }; | 198 }; |
| 201 | 199 |
| 202 TEST_F(FileUtilTest, InsertBeforeExtensionTest) { | 200 TEST_F(FileUtilTest, InsertBeforeExtensionTest) { |
| 203 for (unsigned int i = 0; i < arraysize(kInsertBeforeExtension); ++i) { | 201 for (unsigned int i = 0; i < arraysize(kInsertBeforeExtension); ++i) { |
| 204 std::wstring path(kInsertBeforeExtension[i].path); | 202 FilePath path = FilePath::FromWStringHack(kInsertBeforeExtension[i].path); |
| 205 file_util::InsertBeforeExtension(&path, kInsertBeforeExtension[i].suffix); | 203 file_util::InsertBeforeExtension(&path, kInsertBeforeExtension[i].suffix); |
| 206 EXPECT_EQ(path, kInsertBeforeExtension[i].result); | 204 EXPECT_EQ(kInsertBeforeExtension[i].result, path.ToWStringHack()); |
| 207 } | 205 } |
| 208 } | 206 } |
| 209 #endif // defined(OS_WIN) | |
| 210 | 207 |
| 211 static const struct filename_case { | 208 static const struct filename_case { |
| 212 const wchar_t* path; | 209 const wchar_t* path; |
| 213 const wchar_t* filename; | 210 const wchar_t* filename; |
| 214 } filename_cases[] = { | 211 } filename_cases[] = { |
| 215 #if defined(OS_WIN) | 212 #if defined(OS_WIN) |
| 216 {L"c:\\colon\\backslash", L"backslash"}, | 213 {L"c:\\colon\\backslash", L"backslash"}, |
| 217 {L"c:\\colon\\backslash\\", L""}, | 214 {L"c:\\colon\\backslash\\", L""}, |
| 218 {L"\\\\filename.exe", L"filename.exe"}, | 215 {L"\\\\filename.exe", L"filename.exe"}, |
| 219 {L"filename.exe", L"filename.exe"}, | 216 {L"filename.exe", L"filename.exe"}, |
| (...skipping 561 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 781 }; | 778 }; |
| 782 | 779 |
| 783 TEST_F(FileUtilTest, ReplaceIllegalCharactersTest) { | 780 TEST_F(FileUtilTest, ReplaceIllegalCharactersTest) { |
| 784 for (unsigned int i = 0; i < arraysize(kIllegalCharacterCases); ++i) { | 781 for (unsigned int i = 0; i < arraysize(kIllegalCharacterCases); ++i) { |
| 785 std::wstring bad_name(kIllegalCharacterCases[i].bad_name); | 782 std::wstring bad_name(kIllegalCharacterCases[i].bad_name); |
| 786 file_util::ReplaceIllegalCharacters(&bad_name, L'-'); | 783 file_util::ReplaceIllegalCharacters(&bad_name, L'-'); |
| 787 EXPECT_EQ(kIllegalCharacterCases[i].good_name, bad_name); | 784 EXPECT_EQ(kIllegalCharacterCases[i].good_name, bad_name); |
| 788 } | 785 } |
| 789 } | 786 } |
| 790 | 787 |
| 791 // TODO(port): enable this test for non-windows. | |
| 792 #if defined(OS_WIN) | |
| 793 static const struct ReplaceExtensionCase { | 788 static const struct ReplaceExtensionCase { |
| 794 std::wstring file_name; | 789 std::wstring file_name; |
| 795 std::wstring extension; | 790 FilePath::StringType extension; |
| 796 std::wstring result; | 791 std::wstring result; |
| 797 } kReplaceExtension[] = { | 792 } kReplaceExtension[] = { |
| 798 {L"", L"", L""}, | 793 {L"", FILE_PATH_LITERAL(""), L""}, |
| 799 {L"", L"txt", L".txt"}, | 794 {L"", FILE_PATH_LITERAL("txt"), L".txt"}, |
| 800 {L".", L"txt", L".txt"}, | 795 {L".", FILE_PATH_LITERAL("txt"), L".txt"}, |
| 801 {L".", L"", L""}, | 796 {L".", FILE_PATH_LITERAL(""), L""}, |
| 802 {L"foo.dll", L"txt", L"foo.txt"}, | 797 {L"foo.dll", FILE_PATH_LITERAL("txt"), L"foo.txt"}, |
| 803 {L"foo.dll", L".txt", L"foo.txt"}, | 798 {L"foo.dll", FILE_PATH_LITERAL(".txt"), L"foo.txt"}, |
| 804 {L"foo", L"txt", L"foo.txt"}, | 799 {L"foo", FILE_PATH_LITERAL("txt"), L"foo.txt"}, |
| 805 {L"foo", L".txt", L"foo.txt"}, | 800 {L"foo", FILE_PATH_LITERAL(".txt"), L"foo.txt"}, |
| 806 {L"foo.baz.dll", L"txt", L"foo.baz.txt"}, | 801 {L"foo.baz.dll", FILE_PATH_LITERAL("txt"), L"foo.baz.txt"}, |
| 807 {L"foo.baz.dll", L".txt", L"foo.baz.txt"}, | 802 {L"foo.baz.dll", FILE_PATH_LITERAL(".txt"), L"foo.baz.txt"}, |
| 808 {L"foo.dll", L"", L"foo"}, | 803 {L"foo.dll", FILE_PATH_LITERAL(""), L"foo"}, |
| 809 {L"foo.dll", L".", L"foo"}, | 804 {L"foo.dll", FILE_PATH_LITERAL("."), L"foo"}, |
| 810 {L"foo", L"", L"foo"}, | 805 {L"foo", FILE_PATH_LITERAL(""), L"foo"}, |
| 811 {L"foo", L".", L"foo"}, | 806 {L"foo", FILE_PATH_LITERAL("."), L"foo"}, |
| 812 {L"foo.baz.dll", L"", L"foo.baz"}, | 807 {L"foo.baz.dll", FILE_PATH_LITERAL(""), L"foo.baz"}, |
| 813 {L"foo.baz.dll", L".", L"foo.baz"}, | 808 {L"foo.baz.dll", FILE_PATH_LITERAL("."), L"foo.baz"}, |
| 814 }; | 809 }; |
| 815 | 810 |
| 816 TEST_F(FileUtilTest, ReplaceExtensionTest) { | 811 TEST_F(FileUtilTest, ReplaceExtensionTest) { |
| 817 for (unsigned int i = 0; i < arraysize(kReplaceExtension); ++i) { | 812 for (unsigned int i = 0; i < arraysize(kReplaceExtension); ++i) { |
| 818 std::wstring file_name(kReplaceExtension[i].file_name); | 813 FilePath path = FilePath::FromWStringHack(kReplaceExtension[i].file_name); |
| 819 file_util::ReplaceExtension(&file_name, kReplaceExtension[i].extension); | 814 file_util::ReplaceExtension(&path, kReplaceExtension[i].extension); |
| 820 EXPECT_EQ(file_name, kReplaceExtension[i].result); | 815 EXPECT_EQ(kReplaceExtension[i].result, path.ToWStringHack()); |
| 821 } | 816 } |
| 822 } | 817 } |
| 823 | 818 |
| 824 // Make sure ReplaceExtension doesn't replace an extension that occurs as one of | 819 // Make sure ReplaceExtension doesn't replace an extension that occurs as one of |
| 825 // the directory names of the path. | 820 // the directory names of the path. |
| 826 TEST_F(FileUtilTest, ReplaceExtensionTestWithPathSeparators) { | 821 TEST_F(FileUtilTest, ReplaceExtensionTestWithPathSeparators) { |
| 827 std::wstring path; | 822 FilePath path; |
| 828 file_util::AppendToPath(&path, L"foo.bar"); | 823 path = path.Append(FILE_PATH_LITERAL("foo.bar")); |
| 829 file_util::AppendToPath(&path, L"foo"); | 824 path = path.Append(FILE_PATH_LITERAL("foo")); |
| 830 // '/foo.bar/foo' with extension '.baz' | 825 // '/foo.bar/foo' with extension '.baz' |
| 831 std::wstring result_path = path; | 826 FilePath result_path = path; |
| 832 file_util::ReplaceExtension(&result_path, L".baz"); | 827 file_util::ReplaceExtension(&result_path, FILE_PATH_LITERAL(".baz")); |
| 833 EXPECT_EQ(path + L".baz", result_path); | 828 EXPECT_EQ(path.ToWStringHack() + L".baz", result_path.ToWStringHack()); |
| 834 } | 829 } |
| 835 #endif // defined(OS_WIN) | |
| 836 | 830 |
| 837 TEST_F(FileUtilTest, FileEnumeratorTest) { | 831 TEST_F(FileUtilTest, FileEnumeratorTest) { |
| 838 // Test an empty directory. | 832 // Test an empty directory. |
| 839 file_util::FileEnumerator f0(test_dir_.ToWStringHack(), true, | 833 file_util::FileEnumerator f0(test_dir_.ToWStringHack(), true, |
| 840 file_util::FileEnumerator::FILES_AND_DIRECTORIES); | 834 file_util::FileEnumerator::FILES_AND_DIRECTORIES); |
| 841 EXPECT_EQ(f0.Next(), L""); | 835 EXPECT_EQ(f0.Next(), L""); |
| 842 EXPECT_EQ(f0.Next(), L""); | 836 EXPECT_EQ(f0.Next(), L""); |
| 843 | 837 |
| 844 // create the directories | 838 // create the directories |
| 845 FilePath dir1 = test_dir_.Append(FILE_PATH_LITERAL("dir1")); | 839 FilePath dir1 = test_dir_.Append(FILE_PATH_LITERAL("dir1")); |
| (...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 977 for (size_t j = 0; j < comps.size(); ++j) { | 971 for (size_t j = 0; j < comps.size(); ++j) { |
| 978 result.append(comps[j]); | 972 result.append(comps[j]); |
| 979 if (j < comps.size() - 1) | 973 if (j < comps.size() - 1) |
| 980 result.append(FILE_PATH_LITERAL("|"), 1); | 974 result.append(FILE_PATH_LITERAL("|"), 1); |
| 981 } | 975 } |
| 982 EXPECT_EQ(kPathComponents[i].result, result); | 976 EXPECT_EQ(kPathComponents[i].result, result); |
| 983 } | 977 } |
| 984 } | 978 } |
| 985 | 979 |
| 986 } // namespace | 980 } // namespace |
| OLD | NEW |