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 |