OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "chrome/browser/chromeos/file_system_provider/fileapi/file_stream_write
r.h" | 5 #include "chrome/browser/chromeos/file_system_provider/fileapi/file_stream_write
r.h" |
6 | 6 |
7 #include <string> | 7 #include <string> |
8 #include <vector> | 8 #include <vector> |
9 | 9 |
10 #include "base/files/file.h" | 10 #include "base/files/file.h" |
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
127 const int result = writer.Write(io_buffer.get(), | 127 const int result = writer.Write(io_buffer.get(), |
128 sizeof(kTextToWrite) - 1, | 128 sizeof(kTextToWrite) - 1, |
129 base::Bind(&LogValue, &write_log)); | 129 base::Bind(&LogValue, &write_log)); |
130 EXPECT_EQ(net::ERR_IO_PENDING, result); | 130 EXPECT_EQ(net::ERR_IO_PENDING, result); |
131 base::RunLoop().RunUntilIdle(); | 131 base::RunLoop().RunUntilIdle(); |
132 | 132 |
133 ASSERT_EQ(1u, write_log.size()); | 133 ASSERT_EQ(1u, write_log.size()); |
134 EXPECT_LT(0, write_log[0]); | 134 EXPECT_LT(0, write_log[0]); |
135 EXPECT_EQ(sizeof(kTextToWrite) - 1, static_cast<size_t>(write_log[0])); | 135 EXPECT_EQ(sizeof(kTextToWrite) - 1, static_cast<size_t>(write_log[0])); |
136 | 136 |
137 FakeEntry entry; | 137 const FakeEntry* const entry = provided_file_system_->GetEntry( |
138 ASSERT_TRUE(provided_file_system_->GetEntry( | 138 base::FilePath::FromUTF8Unsafe(kFakeFilePath)); |
139 base::FilePath::FromUTF8Unsafe(kFakeFilePath), &entry)); | 139 ASSERT_TRUE(entry); |
140 EXPECT_EQ(kTextToWrite, entry.contents.substr(0, sizeof(kTextToWrite) - 1)); | 140 |
| 141 EXPECT_EQ(kTextToWrite, |
| 142 entry->contents.substr(0, sizeof(kTextToWrite) - 1)); |
141 } | 143 } |
142 | 144 |
143 // Write additional data to be sure, that the writer's offset is shifted | 145 // Write additional data to be sure, that the writer's offset is shifted |
144 // properly. | 146 // properly. |
145 { | 147 { |
146 const int result = writer.Write(io_buffer.get(), | 148 const int result = writer.Write(io_buffer.get(), |
147 sizeof(kTextToWrite) - 1, | 149 sizeof(kTextToWrite) - 1, |
148 base::Bind(&LogValue, &write_log)); | 150 base::Bind(&LogValue, &write_log)); |
149 EXPECT_EQ(net::ERR_IO_PENDING, result); | 151 EXPECT_EQ(net::ERR_IO_PENDING, result); |
150 base::RunLoop().RunUntilIdle(); | 152 base::RunLoop().RunUntilIdle(); |
151 | 153 |
152 ASSERT_EQ(2u, write_log.size()); | 154 ASSERT_EQ(2u, write_log.size()); |
153 EXPECT_LT(0, write_log[0]); | 155 EXPECT_LT(0, write_log[0]); |
154 EXPECT_EQ(sizeof(kTextToWrite) - 1, static_cast<size_t>(write_log[0])); | 156 EXPECT_EQ(sizeof(kTextToWrite) - 1, static_cast<size_t>(write_log[0])); |
155 | 157 |
156 FakeEntry entry; | 158 const FakeEntry* const entry = provided_file_system_->GetEntry( |
157 ASSERT_TRUE(provided_file_system_->GetEntry( | 159 base::FilePath::FromUTF8Unsafe(kFakeFilePath)); |
158 base::FilePath::FromUTF8Unsafe(kFakeFilePath), &entry)); | 160 ASSERT_TRUE(entry); |
159 | 161 |
160 // The testing text is written twice. | 162 // The testing text is written twice. |
161 const std::string expected_contents = | 163 const std::string expected_contents = |
162 std::string(kTextToWrite) + kTextToWrite; | 164 std::string(kTextToWrite) + kTextToWrite; |
163 EXPECT_EQ(expected_contents, | 165 EXPECT_EQ(expected_contents, |
164 entry.contents.substr(0, expected_contents.size())); | 166 entry->contents.substr(0, expected_contents.size())); |
165 } | 167 } |
166 } | 168 } |
167 | 169 |
168 TEST_F(FileSystemProviderFileStreamWriter, Cancel) { | 170 TEST_F(FileSystemProviderFileStreamWriter, Cancel) { |
169 std::vector<int> write_log; | 171 std::vector<int> write_log; |
170 | 172 |
171 const int64 initial_offset = 0; | 173 const int64 initial_offset = 0; |
172 FileStreamWriter writer(file_url_, initial_offset); | 174 FileStreamWriter writer(file_url_, initial_offset); |
173 scoped_refptr<net::IOBuffer> io_buffer(new net::StringIOBuffer(kTextToWrite)); | 175 scoped_refptr<net::IOBuffer> io_buffer(new net::StringIOBuffer(kTextToWrite)); |
174 | 176 |
(...skipping 25 matching lines...) Expand all Loading... |
200 EXPECT_EQ(net::ERR_IO_PENDING, result); | 202 EXPECT_EQ(net::ERR_IO_PENDING, result); |
201 base::RunLoop().RunUntilIdle(); | 203 base::RunLoop().RunUntilIdle(); |
202 | 204 |
203 ASSERT_EQ(1u, write_log.size()); | 205 ASSERT_EQ(1u, write_log.size()); |
204 EXPECT_EQ(net::ERR_FILE_NOT_FOUND, write_log[0]); | 206 EXPECT_EQ(net::ERR_FILE_NOT_FOUND, write_log[0]); |
205 } | 207 } |
206 | 208 |
207 TEST_F(FileSystemProviderFileStreamWriter, Write_Append) { | 209 TEST_F(FileSystemProviderFileStreamWriter, Write_Append) { |
208 std::vector<int> write_log; | 210 std::vector<int> write_log; |
209 | 211 |
210 FakeEntry entry_before; | 212 const FakeEntry* const entry = provided_file_system_->GetEntry( |
211 ASSERT_TRUE(provided_file_system_->GetEntry( | 213 base::FilePath::FromUTF8Unsafe(kFakeFilePath)); |
212 base::FilePath::FromUTF8Unsafe(kFakeFilePath), &entry_before)); | 214 ASSERT_TRUE(entry); |
213 | 215 |
214 const int64 initial_offset = entry_before.metadata.size; | 216 const int64 initial_offset = entry->metadata->size; |
215 ASSERT_LT(0, initial_offset); | 217 ASSERT_LT(0, initial_offset); |
216 | 218 |
217 FileStreamWriter writer(file_url_, initial_offset); | 219 FileStreamWriter writer(file_url_, initial_offset); |
218 scoped_refptr<net::IOBuffer> io_buffer(new net::StringIOBuffer(kTextToWrite)); | 220 scoped_refptr<net::IOBuffer> io_buffer(new net::StringIOBuffer(kTextToWrite)); |
219 | 221 |
220 const int result = writer.Write(io_buffer.get(), | 222 const int result = writer.Write(io_buffer.get(), |
221 sizeof(kTextToWrite) - 1, | 223 sizeof(kTextToWrite) - 1, |
222 base::Bind(&LogValue, &write_log)); | 224 base::Bind(&LogValue, &write_log)); |
223 EXPECT_EQ(net::ERR_IO_PENDING, result); | 225 EXPECT_EQ(net::ERR_IO_PENDING, result); |
224 base::RunLoop().RunUntilIdle(); | 226 base::RunLoop().RunUntilIdle(); |
225 | 227 |
226 ASSERT_EQ(1u, write_log.size()); | 228 ASSERT_EQ(1u, write_log.size()); |
227 EXPECT_EQ(sizeof(kTextToWrite) - 1, static_cast<size_t>(write_log[0])); | 229 EXPECT_EQ(sizeof(kTextToWrite) - 1, static_cast<size_t>(write_log[0])); |
228 | 230 |
229 FakeEntry entry_after; | 231 const std::string expected_contents = entry->contents + kTextToWrite; |
230 ASSERT_TRUE(provided_file_system_->GetEntry( | 232 EXPECT_EQ(expected_contents, entry->contents); |
231 base::FilePath::FromUTF8Unsafe(kFakeFilePath), &entry_after)); | |
232 const std::string expected_contents = entry_before.contents + kTextToWrite; | |
233 EXPECT_EQ(expected_contents, entry_after.contents); | |
234 } | 233 } |
235 | 234 |
236 } // namespace file_system_provider | 235 } // namespace file_system_provider |
237 } // namespace chromeos | 236 } // namespace chromeos |
OLD | NEW |