| 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 | 
|---|