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

Side by Side Diff: chrome/browser/save_package_unittest.cc

Issue 3040: Move the Save Page code. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 12 years, 3 months 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 | « chrome/browser/save_package.cc ('k') | chrome/browser/save_page_model.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(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
OLDNEW
« no previous file with comments | « chrome/browser/save_package.cc ('k') | chrome/browser/save_page_model.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698