| OLD | NEW |
| (Empty) |
| 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 | |
| 3 // found in the LICENSE file. | |
| 4 | |
| 5 #include "base/logging.h" | |
| 6 #include "chrome/browser/save_package.h" | |
| 7 #include "testing/gtest/include/gtest/gtest.h" | |
| 8 | |
| 9 // 0 1 2 3 4 5 6 | |
| 10 // 0123456789012345678901234567890123456789012345678901234567890123456789 | |
| 11 static const wchar_t* const kLongFilePath = | |
| 12 L"C:\\EFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz01234567" | |
| 13 L"89ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz012345" | |
| 14 L"6789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz0123" | |
| 15 L"456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789a.htm"; | |
| 16 | |
| 17 static const wchar_t* const kLongDirPath = | |
| 18 L"C:\\EFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz01234567" | |
| 19 L"89ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz012345" | |
| 20 L"6789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz0123" | |
| 21 L"456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789a_files"; | |
| 22 | |
| 23 class SavePackageTest : public testing::Test { | |
| 24 public: | |
| 25 SavePackageTest() { | |
| 26 save_package_success_ = new SavePackage(L"c:\\testfile.htm", | |
| 27 L"c:\\testfile_files"); | |
| 28 save_package_fail_ = new SavePackage(kLongFilePath, kLongDirPath); | |
| 29 } | |
| 30 | |
| 31 bool GetGeneratedFilename(bool need_success_generate_filename, | |
| 32 const std::string& disposition, | |
| 33 const std::wstring& url, | |
| 34 bool need_htm_ext, | |
| 35 std::wstring* generated_name) { | |
| 36 SavePackage* save_package; | |
| 37 if (need_success_generate_filename) | |
| 38 save_package = save_package_success_.get(); | |
| 39 else | |
| 40 save_package = save_package_fail_.get(); | |
| 41 return save_package->GenerateFilename(disposition, url, need_htm_ext, | |
| 42 generated_name); | |
| 43 } | |
| 44 | |
| 45 protected: | |
| 46 DISALLOW_EVIL_CONSTRUCTORS(SavePackageTest); | |
| 47 | |
| 48 private: | |
| 49 // SavePackage for successfully generating file name. | |
| 50 scoped_refptr<SavePackage> save_package_success_; | |
| 51 // SavePackage for failed generating file name. | |
| 52 scoped_refptr<SavePackage> save_package_fail_; | |
| 53 }; | |
| 54 | |
| 55 static const struct { | |
| 56 const char* disposition; | |
| 57 const wchar_t* url; | |
| 58 const wchar_t* expected_name; | |
| 59 bool need_htm_ext; | |
| 60 } kGeneratedFiles[] = { | |
| 61 // We mainly focus on testing duplicated names here, since retrieving file | |
| 62 // name from disposition and url has been tested in DownloadManagerTest. | |
| 63 | |
| 64 // No useful information in disposition or URL, use default. | |
| 65 {"1.html", L"http://www.savepage.com/", L"saved_resource.htm", true}, | |
| 66 | |
| 67 // No duplicate occurs. | |
| 68 {"filename=1.css", L"http://www.savepage.com", L"1.css", false}, | |
| 69 | |
| 70 // No duplicate occurs. | |
| 71 {"filename=1.js", L"http://www.savepage.com", L"1.js", false}, | |
| 72 | |
| 73 // Append numbers for duplicated names. | |
| 74 {"filename=1.css", L"http://www.savepage.com", L"1(1).css", false}, | |
| 75 | |
| 76 // No duplicate occurs. | |
| 77 {"filename=1(1).js", L"http://www.savepage.com", L"1(1).js", false}, | |
| 78 | |
| 79 // Append numbers for duplicated names. | |
| 80 {"filename=1.css", L"http://www.savepage.com", L"1(2).css", false}, | |
| 81 | |
| 82 // Change number for duplicated names. | |
| 83 {"filename=1(1).css", L"http://www.savepage.com", L"1(3).css", false}, | |
| 84 | |
| 85 // No duplicate occurs. | |
| 86 {"filename=1(11).css", L"http://www.savepage.com", L"1(11).css", false}, | |
| 87 | |
| 88 // test length of file path is great than MAX_PATH(260 characters). | |
| 89 {"", | |
| 90 // 0 1 2 3 4 5 6 | |
| 91 // 0123456789012345678901234567890123456789012345678901234567890123456789 | |
| 92 // 0 1 2 3 4 | |
| 93 // 01234567890123456789012345678901234567890123456789 | |
| 94 L"http://www.google.com/ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmn" | |
| 95 L"opqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijkl" | |
| 96 L"mnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghij" | |
| 97 L"klmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefgh" | |
| 98 L"test.css", | |
| 99 // 0 1 2 3 4 5 6 | |
| 100 // 0123456789012345678901234567890123456789012345678901234567890123456789 | |
| 101 L"ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz01234567" | |
| 102 L"89ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz012345" | |
| 103 L"6789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz0123" | |
| 104 L"456789ABCDEFGHIJKLMNOPQRSTU.css", | |
| 105 false}, | |
| 106 | |
| 107 // test duplicated file name, its length of file path is great than | |
| 108 // MAX_PATH(260 characters). | |
| 109 {"", | |
| 110 // 0 1 2 3 4 5 6 | |
| 111 // 0123456789012345678901234567890123456789012345678901234567890123456789 | |
| 112 // 0 1 2 3 4 | |
| 113 // 01234567890123456789012345678901234567890123456789 | |
| 114 L"http://www.google.com/ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmn" | |
| 115 L"opqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijkl" | |
| 116 L"mnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghij" | |
| 117 L"klmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefgh" | |
| 118 L"test.css", | |
| 119 // 0 1 2 3 4 5 6 | |
| 120 // 0123456789012345678901234567890123456789012345678901234567890123456789 | |
| 121 L"ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz01234567" | |
| 122 L"89ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz012345" | |
| 123 L"6789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz0123" | |
| 124 L"456789ABCDEFGHIJKLMNO(1).css", | |
| 125 false}, | |
| 126 | |
| 127 {"", | |
| 128 // 0 1 2 3 4 5 6 | |
| 129 // 0123456789012345678901234567890123456789012345678901234567890123456789 | |
| 130 // 0 1 2 3 4 | |
| 131 // 01234567890123456789012345678901234567890123456789 | |
| 132 L"http://www.google.com/ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmn" | |
| 133 L"opqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijkl" | |
| 134 L"mnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghij" | |
| 135 L"klmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefgh" | |
| 136 L"test.css", | |
| 137 // 0 1 2 3 4 5 6 | |
| 138 // 0123456789012345678901234567890123456789012345678901234567890123456789 | |
| 139 L"ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz01234567" | |
| 140 L"89ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz012345" | |
| 141 L"6789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz0123" | |
| 142 L"456789ABCDEFGHIJKLMNO(2).css", | |
| 143 false} | |
| 144 }; | |
| 145 | |
| 146 TEST_F(SavePackageTest, TestSuccessfullyGenerateSavePackageFilename) { | |
| 147 for (int i = 0; i < arraysize(kGeneratedFiles); ++i) { | |
| 148 std::wstring file_name; | |
| 149 bool ok = GetGeneratedFilename(true, | |
| 150 kGeneratedFiles[i].disposition, | |
| 151 kGeneratedFiles[i].url, | |
| 152 kGeneratedFiles[i].need_htm_ext, | |
| 153 &file_name); | |
| 154 ASSERT_TRUE(ok); | |
| 155 EXPECT_EQ(file_name, kGeneratedFiles[i].expected_name); | |
| 156 } | |
| 157 } | |
| 158 | |
| 159 TEST_F(SavePackageTest, TestUnSuccessfullyGenerateSavePackageFilename) { | |
| 160 for (int i = 0; i < arraysize(kGeneratedFiles); ++i) { | |
| 161 std::wstring file_name; | |
| 162 bool ok = GetGeneratedFilename(false, | |
| 163 kGeneratedFiles[i].disposition, | |
| 164 kGeneratedFiles[i].url, | |
| 165 kGeneratedFiles[i].need_htm_ext, | |
| 166 &file_name); | |
| 167 ASSERT_FALSE(ok); | |
| 168 } | |
| 169 } | |
| 170 | |
| OLD | NEW |