Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(42)

Side by Side Diff: base/file_util_unittest.cc

Issue 12893: Get rid of kPathSeparator on windows. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 12 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « base/file_util.cc ('k') | base/file_util_win.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
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
OLDNEW
« no previous file with comments | « base/file_util.cc ('k') | base/file_util_win.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698