OLD | NEW |
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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 "base/file_util.h" | 5 #include "base/file_util.h" |
6 #include "base/message_loop.h" | 6 #include "base/message_loop.h" |
7 #include "base/scoped_temp_dir.h" | 7 #include "base/scoped_temp_dir.h" |
8 #include "chrome/browser/browser_thread.h" | 8 #include "chrome/browser/browser_thread.h" |
9 #include "chrome/browser/download/base_file.h" | 9 #include "chrome/browser/download/base_file.h" |
10 #include "net/base/file_stream.h" | 10 #include "net/base/file_stream.h" |
11 #include "testing/gtest/include/gtest/gtest.h" | 11 #include "testing/gtest/include/gtest/gtest.h" |
12 | 12 |
13 namespace { | 13 namespace { |
14 | 14 |
15 const char kTestData1[] = "Let's write some data to the file!\n"; | 15 const char kTestData1[] = "Let's write some data to the file!\n"; |
16 const char kTestData2[] = "Writing more data.\n"; | 16 const char kTestData2[] = "Writing more data.\n"; |
17 const char kTestData3[] = "Final line."; | 17 const char kTestData3[] = "Final line."; |
18 | 18 |
19 class BaseFileTest : public testing::Test { | 19 class BaseFileTest : public testing::Test { |
20 public: | 20 public: |
21 BaseFileTest() : file_thread_(BrowserThread::FILE, &message_loop_) { | 21 BaseFileTest() : file_thread_(BrowserThread::FILE, &message_loop_) { |
22 } | 22 } |
23 | 23 |
24 virtual void SetUp() { | 24 virtual void SetUp() { |
25 ASSERT_TRUE(temp_dir_.CreateUniqueTempDir()); | 25 ASSERT_TRUE(temp_dir_.CreateUniqueTempDir()); |
26 base_file_.reset(new BaseFile(FilePath(), GURL(), GURL(), 0, file_stream_)); | 26 base_file_.reset( |
| 27 new BaseFile(FilePath(), GURL(), GURL(), 0, file_stream_, false)); |
27 } | 28 } |
28 | 29 |
29 virtual void TearDown() { | 30 virtual void TearDown() { |
30 EXPECT_FALSE(base_file_->in_progress()); | 31 EXPECT_FALSE(base_file_->in_progress()); |
31 EXPECT_EQ(static_cast<int64>(expected_data_.size()), | 32 EXPECT_EQ(static_cast<int64>(expected_data_.size()), |
32 base_file_->bytes_so_far()); | 33 base_file_->bytes_so_far()); |
33 | 34 |
34 if (!expected_data_.empty()) { | 35 if (!expected_data_.empty()) { |
35 // Make sure the data has been properly written to disk. | 36 // Make sure the data has been properly written to disk. |
36 std::string disk_data; | 37 std::string disk_data; |
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
101 TEST_F(BaseFileTest, MultipleWrites) { | 102 TEST_F(BaseFileTest, MultipleWrites) { |
102 ASSERT_TRUE(base_file_->Initialize()); | 103 ASSERT_TRUE(base_file_->Initialize()); |
103 AppendDataToFile(kTestData1); | 104 AppendDataToFile(kTestData1); |
104 AppendDataToFile(kTestData2); | 105 AppendDataToFile(kTestData2); |
105 AppendDataToFile(kTestData3); | 106 AppendDataToFile(kTestData3); |
106 base_file_->Finish(); | 107 base_file_->Finish(); |
107 | 108 |
108 EXPECT_FALSE(base_file_->path_renamed()); | 109 EXPECT_FALSE(base_file_->path_renamed()); |
109 } | 110 } |
110 | 111 |
| 112 // Write data to the file once and calculate its sha256 hash. |
| 113 TEST_F(BaseFileTest, SingleWriteWithHash) { |
| 114 base_file_.reset( |
| 115 new BaseFile(FilePath(), GURL(), GURL(), 0, file_stream_, true)); |
| 116 ASSERT_TRUE(base_file_->Initialize()); |
| 117 AppendDataToFile(kTestData1); |
| 118 base_file_->Finish(); |
| 119 |
| 120 EXPECT_FALSE(base_file_->path_renamed()); |
| 121 |
| 122 std::string hash; |
| 123 base_file_->GetSha256Hash(&hash); |
| 124 EXPECT_EQ("0b2d3f3f7943ad64b860df94d05cb56a8a97c6ec5768b5b70b930c5aa7fa9ade", |
| 125 hash); |
| 126 } |
| 127 |
| 128 // Write data to the file multiple times and calculate its sha256 hash. |
| 129 TEST_F(BaseFileTest, MultipleWritesWithHash) { |
| 130 base_file_.reset( |
| 131 new BaseFile(FilePath(), GURL(), GURL(), 0, file_stream_, true)); |
| 132 ASSERT_TRUE(base_file_->Initialize()); |
| 133 AppendDataToFile(kTestData1); |
| 134 AppendDataToFile(kTestData2); |
| 135 AppendDataToFile(kTestData3); |
| 136 base_file_->Finish(); |
| 137 |
| 138 EXPECT_FALSE(base_file_->path_renamed()); |
| 139 |
| 140 std::string hash; |
| 141 base_file_->GetSha256Hash(&hash); |
| 142 EXPECT_EQ("cbf68bf10f8003db86b31343afac8c7175bd03fb5fc905650f8c80af087443a8", |
| 143 hash); |
| 144 } |
| 145 |
| 146 |
111 // Rename the file after all writes to it. | 147 // Rename the file after all writes to it. |
112 TEST_F(BaseFileTest, WriteThenRename) { | 148 TEST_F(BaseFileTest, WriteThenRename) { |
113 ASSERT_TRUE(base_file_->Initialize()); | 149 ASSERT_TRUE(base_file_->Initialize()); |
114 | 150 |
115 FilePath initial_path(base_file_->full_path()); | 151 FilePath initial_path(base_file_->full_path()); |
116 EXPECT_TRUE(file_util::PathExists(initial_path)); | 152 EXPECT_TRUE(file_util::PathExists(initial_path)); |
117 FilePath new_path(temp_dir_.path().AppendASCII("NewFile")); | 153 FilePath new_path(temp_dir_.path().AppendASCII("NewFile")); |
118 EXPECT_FALSE(file_util::PathExists(new_path)); | 154 EXPECT_FALSE(file_util::PathExists(new_path)); |
119 | 155 |
120 AppendDataToFile(kTestData1); | 156 AppendDataToFile(kTestData1); |
(...skipping 24 matching lines...) Expand all Loading... |
145 EXPECT_TRUE(file_util::PathExists(new_path)); | 181 EXPECT_TRUE(file_util::PathExists(new_path)); |
146 | 182 |
147 AppendDataToFile(kTestData2); | 183 AppendDataToFile(kTestData2); |
148 | 184 |
149 base_file_->Finish(); | 185 base_file_->Finish(); |
150 | 186 |
151 EXPECT_TRUE(base_file_->path_renamed()); | 187 EXPECT_TRUE(base_file_->path_renamed()); |
152 } | 188 } |
153 | 189 |
154 } // namespace | 190 } // namespace |
OLD | NEW |