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

Side by Side Diff: net/base/elements_upload_data_stream_unittest.cc

Issue 2109503009: Refactor net tests to use GMock matchers for checking net::Error results (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Revert changes to contents.txt files Created 4 years, 5 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
« no previous file with comments | « net/base/directory_lister_unittest.cc ('k') | net/base/file_stream_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "net/base/elements_upload_data_stream.h" 5 #include "net/base/elements_upload_data_stream.h"
6 6
7 #include <stdint.h> 7 #include <stdint.h>
8 8
9 #include <algorithm> 9 #include <algorithm>
10 #include <limits> 10 #include <limits>
11 #include <memory> 11 #include <memory>
12 #include <vector> 12 #include <vector>
13 13
14 #include "base/bind.h" 14 #include "base/bind.h"
15 #include "base/files/file_path.h" 15 #include "base/files/file_path.h"
16 #include "base/files/file_util.h" 16 #include "base/files/file_util.h"
17 #include "base/files/scoped_temp_dir.h" 17 #include "base/files/scoped_temp_dir.h"
18 #include "base/location.h" 18 #include "base/location.h"
19 #include "base/memory/ptr_util.h" 19 #include "base/memory/ptr_util.h"
20 #include "base/run_loop.h" 20 #include "base/run_loop.h"
21 #include "base/single_thread_task_runner.h" 21 #include "base/single_thread_task_runner.h"
22 #include "base/threading/thread_task_runner_handle.h" 22 #include "base/threading/thread_task_runner_handle.h"
23 #include "base/time/time.h" 23 #include "base/time/time.h"
24 #include "net/base/io_buffer.h" 24 #include "net/base/io_buffer.h"
25 #include "net/base/net_errors.h" 25 #include "net/base/net_errors.h"
26 #include "net/base/test_completion_callback.h" 26 #include "net/base/test_completion_callback.h"
27 #include "net/base/upload_bytes_element_reader.h" 27 #include "net/base/upload_bytes_element_reader.h"
28 #include "net/base/upload_data_stream.h" 28 #include "net/base/upload_data_stream.h"
29 #include "net/base/upload_file_element_reader.h" 29 #include "net/base/upload_file_element_reader.h"
30 #include "net/test/gtest_util.h"
30 #include "testing/gmock/include/gmock/gmock.h" 31 #include "testing/gmock/include/gmock/gmock.h"
31 #include "testing/gtest/include/gtest/gtest.h" 32 #include "testing/gtest/include/gtest/gtest.h"
32 #include "testing/platform_test.h" 33 #include "testing/platform_test.h"
33 34
35 using net::test::IsError;
36 using net::test::IsOk;
37
34 using ::testing::DoAll; 38 using ::testing::DoAll;
35 using ::testing::Invoke; 39 using ::testing::Invoke;
36 using ::testing::Return; 40 using ::testing::Return;
37 using ::testing::_; 41 using ::testing::_;
38 42
39 namespace net { 43 namespace net {
40 44
41 namespace { 45 namespace {
42 46
43 const char kTestData[] = "0123456789"; 47 const char kTestData[] = "0123456789";
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after
143 const base::Time& time, 147 const base::Time& time,
144 bool error_expected); 148 bool error_expected);
145 149
146 base::ScopedTempDir temp_dir_; 150 base::ScopedTempDir temp_dir_;
147 std::vector<std::unique_ptr<UploadElementReader>> element_readers_; 151 std::vector<std::unique_ptr<UploadElementReader>> element_readers_;
148 }; 152 };
149 153
150 TEST_F(ElementsUploadDataStreamTest, EmptyUploadData) { 154 TEST_F(ElementsUploadDataStreamTest, EmptyUploadData) {
151 std::unique_ptr<UploadDataStream> stream( 155 std::unique_ptr<UploadDataStream> stream(
152 new ElementsUploadDataStream(std::move(element_readers_), 0)); 156 new ElementsUploadDataStream(std::move(element_readers_), 0));
153 ASSERT_EQ(OK, stream->Init(CompletionCallback())); 157 ASSERT_THAT(stream->Init(CompletionCallback()), IsOk());
154 EXPECT_TRUE(stream->IsInMemory()); 158 EXPECT_TRUE(stream->IsInMemory());
155 EXPECT_EQ(0U, stream->size()); 159 EXPECT_EQ(0U, stream->size());
156 EXPECT_EQ(0U, stream->position()); 160 EXPECT_EQ(0U, stream->position());
157 EXPECT_TRUE(stream->IsEOF()); 161 EXPECT_TRUE(stream->IsEOF());
158 } 162 }
159 163
160 TEST_F(ElementsUploadDataStreamTest, ConsumeAllBytes) { 164 TEST_F(ElementsUploadDataStreamTest, ConsumeAllBytes) {
161 element_readers_.push_back( 165 element_readers_.push_back(
162 base::WrapUnique(new UploadBytesElementReader(kTestData, kTestDataSize))); 166 base::WrapUnique(new UploadBytesElementReader(kTestData, kTestDataSize)));
163 std::unique_ptr<UploadDataStream> stream( 167 std::unique_ptr<UploadDataStream> stream(
164 new ElementsUploadDataStream(std::move(element_readers_), 0)); 168 new ElementsUploadDataStream(std::move(element_readers_), 0));
165 ASSERT_EQ(OK, stream->Init(CompletionCallback())); 169 ASSERT_THAT(stream->Init(CompletionCallback()), IsOk());
166 EXPECT_TRUE(stream->IsInMemory()); 170 EXPECT_TRUE(stream->IsInMemory());
167 EXPECT_EQ(kTestDataSize, stream->size()); 171 EXPECT_EQ(kTestDataSize, stream->size());
168 EXPECT_EQ(0U, stream->position()); 172 EXPECT_EQ(0U, stream->position());
169 EXPECT_FALSE(stream->IsEOF()); 173 EXPECT_FALSE(stream->IsEOF());
170 scoped_refptr<IOBuffer> buf = new IOBuffer(kTestBufferSize); 174 scoped_refptr<IOBuffer> buf = new IOBuffer(kTestBufferSize);
171 while (!stream->IsEOF()) { 175 while (!stream->IsEOF()) {
172 int bytes_read = 176 int bytes_read =
173 stream->Read(buf.get(), kTestBufferSize, CompletionCallback()); 177 stream->Read(buf.get(), kTestBufferSize, CompletionCallback());
174 ASSERT_LE(0, bytes_read); // Not an error. 178 ASSERT_LE(0, bytes_read); // Not an error.
175 } 179 }
176 EXPECT_EQ(kTestDataSize, stream->position()); 180 EXPECT_EQ(kTestDataSize, stream->position());
177 ASSERT_TRUE(stream->IsEOF()); 181 ASSERT_TRUE(stream->IsEOF());
178 } 182 }
179 183
180 TEST_F(ElementsUploadDataStreamTest, File) { 184 TEST_F(ElementsUploadDataStreamTest, File) {
181 base::FilePath temp_file_path; 185 base::FilePath temp_file_path;
182 ASSERT_TRUE(base::CreateTemporaryFileInDir(temp_dir_.path(), 186 ASSERT_TRUE(base::CreateTemporaryFileInDir(temp_dir_.path(),
183 &temp_file_path)); 187 &temp_file_path));
184 ASSERT_EQ(static_cast<int>(kTestDataSize), 188 ASSERT_EQ(static_cast<int>(kTestDataSize),
185 base::WriteFile(temp_file_path, kTestData, kTestDataSize)); 189 base::WriteFile(temp_file_path, kTestData, kTestDataSize));
186 190
187 element_readers_.push_back(base::WrapUnique(new UploadFileElementReader( 191 element_readers_.push_back(base::WrapUnique(new UploadFileElementReader(
188 base::ThreadTaskRunnerHandle::Get().get(), temp_file_path, 0, 192 base::ThreadTaskRunnerHandle::Get().get(), temp_file_path, 0,
189 std::numeric_limits<uint64_t>::max(), base::Time()))); 193 std::numeric_limits<uint64_t>::max(), base::Time())));
190 194
191 TestCompletionCallback init_callback; 195 TestCompletionCallback init_callback;
192 std::unique_ptr<UploadDataStream> stream( 196 std::unique_ptr<UploadDataStream> stream(
193 new ElementsUploadDataStream(std::move(element_readers_), 0)); 197 new ElementsUploadDataStream(std::move(element_readers_), 0));
194 ASSERT_EQ(ERR_IO_PENDING, stream->Init(init_callback.callback())); 198 ASSERT_THAT(stream->Init(init_callback.callback()), IsError(ERR_IO_PENDING));
195 ASSERT_EQ(OK, init_callback.WaitForResult()); 199 ASSERT_THAT(init_callback.WaitForResult(), IsOk());
196 EXPECT_FALSE(stream->IsInMemory()); 200 EXPECT_FALSE(stream->IsInMemory());
197 EXPECT_EQ(kTestDataSize, stream->size()); 201 EXPECT_EQ(kTestDataSize, stream->size());
198 EXPECT_EQ(0U, stream->position()); 202 EXPECT_EQ(0U, stream->position());
199 EXPECT_FALSE(stream->IsEOF()); 203 EXPECT_FALSE(stream->IsEOF());
200 scoped_refptr<IOBuffer> buf = new IOBuffer(kTestBufferSize); 204 scoped_refptr<IOBuffer> buf = new IOBuffer(kTestBufferSize);
201 while (!stream->IsEOF()) { 205 while (!stream->IsEOF()) {
202 TestCompletionCallback read_callback; 206 TestCompletionCallback read_callback;
203 ASSERT_EQ( 207 ASSERT_EQ(
204 ERR_IO_PENDING, 208 ERR_IO_PENDING,
205 stream->Read(buf.get(), kTestBufferSize, read_callback.callback())); 209 stream->Read(buf.get(), kTestBufferSize, read_callback.callback()));
(...skipping 14 matching lines...) Expand all
220 UploadFileElementReader::ScopedOverridingContentLengthForTests 224 UploadFileElementReader::ScopedOverridingContentLengthForTests
221 overriding_content_length(kFakeSize); 225 overriding_content_length(kFakeSize);
222 226
223 element_readers_.push_back(base::WrapUnique(new UploadFileElementReader( 227 element_readers_.push_back(base::WrapUnique(new UploadFileElementReader(
224 base::ThreadTaskRunnerHandle::Get().get(), temp_file_path, 0, 228 base::ThreadTaskRunnerHandle::Get().get(), temp_file_path, 0,
225 std::numeric_limits<uint64_t>::max(), base::Time()))); 229 std::numeric_limits<uint64_t>::max(), base::Time())));
226 230
227 TestCompletionCallback init_callback; 231 TestCompletionCallback init_callback;
228 std::unique_ptr<UploadDataStream> stream( 232 std::unique_ptr<UploadDataStream> stream(
229 new ElementsUploadDataStream(std::move(element_readers_), 0)); 233 new ElementsUploadDataStream(std::move(element_readers_), 0));
230 ASSERT_EQ(ERR_IO_PENDING, stream->Init(init_callback.callback())); 234 ASSERT_THAT(stream->Init(init_callback.callback()), IsError(ERR_IO_PENDING));
231 ASSERT_EQ(OK, init_callback.WaitForResult()); 235 ASSERT_THAT(init_callback.WaitForResult(), IsOk());
232 EXPECT_FALSE(stream->IsInMemory()); 236 EXPECT_FALSE(stream->IsInMemory());
233 EXPECT_EQ(kFakeSize, stream->size()); 237 EXPECT_EQ(kFakeSize, stream->size());
234 EXPECT_EQ(0U, stream->position()); 238 EXPECT_EQ(0U, stream->position());
235 239
236 scoped_refptr<IOBuffer> buf = new IOBuffer(kTestBufferSize); 240 scoped_refptr<IOBuffer> buf = new IOBuffer(kTestBufferSize);
237 EXPECT_FALSE(stream->IsEOF()); 241 EXPECT_FALSE(stream->IsEOF());
238 242
239 TestCompletionCallback read_callback; 243 TestCompletionCallback read_callback;
240 ASSERT_EQ(ERR_IO_PENDING, 244 ASSERT_EQ(ERR_IO_PENDING,
241 stream->Read(buf.get(), kTestBufferSize, read_callback.callback())); 245 stream->Read(buf.get(), kTestBufferSize, read_callback.callback()));
(...skipping 19 matching lines...) Expand all
261 element_readers_.push_back(std::move(reader)); 265 element_readers_.push_back(std::move(reader));
262 266
263 // This element is ignored because of the error from the previous reader. 267 // This element is ignored because of the error from the previous reader.
264 element_readers_.push_back( 268 element_readers_.push_back(
265 base::WrapUnique(new UploadBytesElementReader(kTestData, kTestDataSize))); 269 base::WrapUnique(new UploadBytesElementReader(kTestData, kTestDataSize)));
266 270
267 std::unique_ptr<UploadDataStream> stream( 271 std::unique_ptr<UploadDataStream> stream(
268 new ElementsUploadDataStream(std::move(element_readers_), 0)); 272 new ElementsUploadDataStream(std::move(element_readers_), 0));
269 273
270 // Run Init(). 274 // Run Init().
271 ASSERT_EQ(OK, stream->Init(CompletionCallback())); 275 ASSERT_THAT(stream->Init(CompletionCallback()), IsOk());
272 EXPECT_EQ(kTestDataSize*2, stream->size()); 276 EXPECT_EQ(kTestDataSize*2, stream->size());
273 EXPECT_EQ(0U, stream->position()); 277 EXPECT_EQ(0U, stream->position());
274 EXPECT_FALSE(stream->IsEOF()); 278 EXPECT_FALSE(stream->IsEOF());
275 279
276 // Prepare a buffer filled with non-zero data. 280 // Prepare a buffer filled with non-zero data.
277 scoped_refptr<IOBuffer> buf = new IOBuffer(kTestBufferSize); 281 scoped_refptr<IOBuffer> buf = new IOBuffer(kTestBufferSize);
278 std::fill_n(buf->data(), kTestBufferSize, -1); 282 std::fill_n(buf->data(), kTestBufferSize, -1);
279 283
280 // Read() results in success even when the reader returns error. 284 // Read() results in success even when the reader returns error.
281 EXPECT_EQ(ERR_FAILED, 285 EXPECT_EQ(ERR_FAILED,
(...skipping 15 matching lines...) Expand all
297 301
298 // This element is ignored because of the error from the previous reader. 302 // This element is ignored because of the error from the previous reader.
299 element_readers_.push_back( 303 element_readers_.push_back(
300 base::WrapUnique(new UploadBytesElementReader(kTestData, kTestDataSize))); 304 base::WrapUnique(new UploadBytesElementReader(kTestData, kTestDataSize)));
301 305
302 std::unique_ptr<UploadDataStream> stream( 306 std::unique_ptr<UploadDataStream> stream(
303 new ElementsUploadDataStream(std::move(element_readers_), 0)); 307 new ElementsUploadDataStream(std::move(element_readers_), 0));
304 308
305 // Run Init(). 309 // Run Init().
306 TestCompletionCallback init_callback; 310 TestCompletionCallback init_callback;
307 ASSERT_EQ(ERR_IO_PENDING, stream->Init(init_callback.callback())); 311 ASSERT_THAT(stream->Init(init_callback.callback()), IsError(ERR_IO_PENDING));
308 EXPECT_EQ(OK, init_callback.WaitForResult()); 312 EXPECT_THAT(init_callback.WaitForResult(), IsOk());
309 EXPECT_EQ(kTestDataSize*2, stream->size()); 313 EXPECT_EQ(kTestDataSize*2, stream->size());
310 EXPECT_EQ(0U, stream->position()); 314 EXPECT_EQ(0U, stream->position());
311 EXPECT_FALSE(stream->IsEOF()); 315 EXPECT_FALSE(stream->IsEOF());
312 316
313 // Prepare a buffer filled with non-zero data. 317 // Prepare a buffer filled with non-zero data.
314 scoped_refptr<IOBuffer> buf = new IOBuffer(kTestBufferSize); 318 scoped_refptr<IOBuffer> buf = new IOBuffer(kTestBufferSize);
315 std::fill_n(buf->data(), kTestBufferSize, -1); 319 std::fill_n(buf->data(), kTestBufferSize, -1);
316 320
317 // Read() results in success even when the reader returns error. 321 // Read() results in success even when the reader returns error.
318 TestCompletionCallback read_callback; 322 TestCompletionCallback read_callback;
319 ASSERT_EQ(ERR_IO_PENDING, 323 ASSERT_EQ(ERR_IO_PENDING,
320 stream->Read(buf.get(), kTestBufferSize, read_callback.callback())); 324 stream->Read(buf.get(), kTestBufferSize, read_callback.callback()));
321 EXPECT_EQ(ERR_FAILED, read_callback.WaitForResult()); 325 EXPECT_THAT(read_callback.WaitForResult(), IsError(ERR_FAILED));
322 EXPECT_EQ(0U, stream->position()); 326 EXPECT_EQ(0U, stream->position());
323 EXPECT_FALSE(stream->IsEOF()); 327 EXPECT_FALSE(stream->IsEOF());
324 328
325 // The buffer is empty 329 // The buffer is empty
326 EXPECT_EQ(0, std::count(buf->data(), buf->data() + kTestBufferSize, 0)); 330 EXPECT_EQ(0, std::count(buf->data(), buf->data() + kTestBufferSize, 0));
327 } 331 }
328 332
329 TEST_F(ElementsUploadDataStreamTest, FileAndBytes) { 333 TEST_F(ElementsUploadDataStreamTest, FileAndBytes) {
330 base::FilePath temp_file_path; 334 base::FilePath temp_file_path;
331 ASSERT_TRUE(base::CreateTemporaryFileInDir(temp_dir_.path(), 335 ASSERT_TRUE(base::CreateTemporaryFileInDir(temp_dir_.path(),
332 &temp_file_path)); 336 &temp_file_path));
333 ASSERT_EQ(static_cast<int>(kTestDataSize), 337 ASSERT_EQ(static_cast<int>(kTestDataSize),
334 base::WriteFile(temp_file_path, kTestData, kTestDataSize)); 338 base::WriteFile(temp_file_path, kTestData, kTestDataSize));
335 339
336 const uint64_t kFileRangeOffset = 1; 340 const uint64_t kFileRangeOffset = 1;
337 const uint64_t kFileRangeLength = 4; 341 const uint64_t kFileRangeLength = 4;
338 element_readers_.push_back(base::WrapUnique(new UploadFileElementReader( 342 element_readers_.push_back(base::WrapUnique(new UploadFileElementReader(
339 base::ThreadTaskRunnerHandle::Get().get(), temp_file_path, 343 base::ThreadTaskRunnerHandle::Get().get(), temp_file_path,
340 kFileRangeOffset, kFileRangeLength, base::Time()))); 344 kFileRangeOffset, kFileRangeLength, base::Time())));
341 345
342 element_readers_.push_back( 346 element_readers_.push_back(
343 base::WrapUnique(new UploadBytesElementReader(kTestData, kTestDataSize))); 347 base::WrapUnique(new UploadBytesElementReader(kTestData, kTestDataSize)));
344 348
345 const uint64_t kStreamSize = kTestDataSize + kFileRangeLength; 349 const uint64_t kStreamSize = kTestDataSize + kFileRangeLength;
346 TestCompletionCallback init_callback; 350 TestCompletionCallback init_callback;
347 std::unique_ptr<UploadDataStream> stream( 351 std::unique_ptr<UploadDataStream> stream(
348 new ElementsUploadDataStream(std::move(element_readers_), 0)); 352 new ElementsUploadDataStream(std::move(element_readers_), 0));
349 ASSERT_EQ(ERR_IO_PENDING, stream->Init(init_callback.callback())); 353 ASSERT_THAT(stream->Init(init_callback.callback()), IsError(ERR_IO_PENDING));
350 ASSERT_EQ(OK, init_callback.WaitForResult()); 354 ASSERT_THAT(init_callback.WaitForResult(), IsOk());
351 EXPECT_FALSE(stream->IsInMemory()); 355 EXPECT_FALSE(stream->IsInMemory());
352 EXPECT_EQ(kStreamSize, stream->size()); 356 EXPECT_EQ(kStreamSize, stream->size());
353 EXPECT_EQ(0U, stream->position()); 357 EXPECT_EQ(0U, stream->position());
354 EXPECT_FALSE(stream->IsEOF()); 358 EXPECT_FALSE(stream->IsEOF());
355 scoped_refptr<IOBuffer> buf = new IOBuffer(kTestBufferSize); 359 scoped_refptr<IOBuffer> buf = new IOBuffer(kTestBufferSize);
356 while (!stream->IsEOF()) { 360 while (!stream->IsEOF()) {
357 TestCompletionCallback read_callback; 361 TestCompletionCallback read_callback;
358 const int result = 362 const int result =
359 stream->Read(buf.get(), kTestBufferSize, read_callback.callback()); 363 stream->Read(buf.get(), kTestBufferSize, read_callback.callback());
360 const int bytes_read = 364 const int bytes_read =
(...skipping 30 matching lines...) Expand all
391 std::unique_ptr<MockUploadElementReader> reader5( 395 std::unique_ptr<MockUploadElementReader> reader5(
392 new MockUploadElementReader(kTestDataSize, true)); 396 new MockUploadElementReader(kTestDataSize, true));
393 EXPECT_CALL(*reader5, Init(_)).WillOnce(Return(OK)); 397 EXPECT_CALL(*reader5, Init(_)).WillOnce(Return(OK));
394 element_readers_.push_back(std::move(reader5)); 398 element_readers_.push_back(std::move(reader5));
395 399
396 std::unique_ptr<UploadDataStream> stream( 400 std::unique_ptr<UploadDataStream> stream(
397 new ElementsUploadDataStream(std::move(element_readers_), 0)); 401 new ElementsUploadDataStream(std::move(element_readers_), 0));
398 402
399 // Run Init(). 403 // Run Init().
400 TestCompletionCallback callback; 404 TestCompletionCallback callback;
401 ASSERT_EQ(ERR_IO_PENDING, stream->Init(callback.callback())); 405 ASSERT_THAT(stream->Init(callback.callback()), IsError(ERR_IO_PENDING));
402 EXPECT_EQ(OK, callback.WaitForResult()); 406 EXPECT_THAT(callback.WaitForResult(), IsOk());
403 } 407 }
404 408
405 // Init() of a reader fails asynchronously. 409 // Init() of a reader fails asynchronously.
406 TEST_F(ElementsUploadDataStreamTest, InitAsyncFailureAsync) { 410 TEST_F(ElementsUploadDataStreamTest, InitAsyncFailureAsync) {
407 // Create UploadDataStream with a mock reader. 411 // Create UploadDataStream with a mock reader.
408 std::unique_ptr<MockUploadElementReader> reader( 412 std::unique_ptr<MockUploadElementReader> reader(
409 new MockUploadElementReader(kTestDataSize, false)); 413 new MockUploadElementReader(kTestDataSize, false));
410 reader->SetAsyncInitExpectation(ERR_FAILED); 414 reader->SetAsyncInitExpectation(ERR_FAILED);
411 element_readers_.push_back(std::move(reader)); 415 element_readers_.push_back(std::move(reader));
412 416
413 std::unique_ptr<UploadDataStream> stream( 417 std::unique_ptr<UploadDataStream> stream(
414 new ElementsUploadDataStream(std::move(element_readers_), 0)); 418 new ElementsUploadDataStream(std::move(element_readers_), 0));
415 419
416 // Run Init(). 420 // Run Init().
417 TestCompletionCallback callback; 421 TestCompletionCallback callback;
418 ASSERT_EQ(ERR_IO_PENDING, stream->Init(callback.callback())); 422 ASSERT_THAT(stream->Init(callback.callback()), IsError(ERR_IO_PENDING));
419 EXPECT_EQ(ERR_FAILED, callback.WaitForResult()); 423 EXPECT_THAT(callback.WaitForResult(), IsError(ERR_FAILED));
420 } 424 }
421 425
422 // Init() of a reader fails synchronously. 426 // Init() of a reader fails synchronously.
423 TEST_F(ElementsUploadDataStreamTest, InitAsyncFailureSync) { 427 TEST_F(ElementsUploadDataStreamTest, InitAsyncFailureSync) {
424 // Create UploadDataStream with mock readers. 428 // Create UploadDataStream with mock readers.
425 std::unique_ptr<MockUploadElementReader> reader( 429 std::unique_ptr<MockUploadElementReader> reader(
426 new MockUploadElementReader(kTestDataSize, false)); 430 new MockUploadElementReader(kTestDataSize, false));
427 reader->SetAsyncInitExpectation(OK); 431 reader->SetAsyncInitExpectation(OK);
428 element_readers_.push_back(std::move(reader)); 432 element_readers_.push_back(std::move(reader));
429 433
430 std::unique_ptr<MockUploadElementReader> reader2( 434 std::unique_ptr<MockUploadElementReader> reader2(
431 new MockUploadElementReader(kTestDataSize, true)); 435 new MockUploadElementReader(kTestDataSize, true));
432 EXPECT_CALL(*reader2, Init(_)).WillOnce(Return(ERR_FAILED)); 436 EXPECT_CALL(*reader2, Init(_)).WillOnce(Return(ERR_FAILED));
433 element_readers_.push_back(std::move(reader2)); 437 element_readers_.push_back(std::move(reader2));
434 438
435 std::unique_ptr<UploadDataStream> stream( 439 std::unique_ptr<UploadDataStream> stream(
436 new ElementsUploadDataStream(std::move(element_readers_), 0)); 440 new ElementsUploadDataStream(std::move(element_readers_), 0));
437 441
438 // Run Init(). 442 // Run Init().
439 TestCompletionCallback callback; 443 TestCompletionCallback callback;
440 ASSERT_EQ(ERR_IO_PENDING, stream->Init(callback.callback())); 444 ASSERT_THAT(stream->Init(callback.callback()), IsError(ERR_IO_PENDING));
441 EXPECT_EQ(ERR_FAILED, callback.WaitForResult()); 445 EXPECT_THAT(callback.WaitForResult(), IsError(ERR_FAILED));
442 } 446 }
443 447
444 // Read with a buffer whose size is same as the data. 448 // Read with a buffer whose size is same as the data.
445 TEST_F(ElementsUploadDataStreamTest, ReadAsyncWithExactSizeBuffer) { 449 TEST_F(ElementsUploadDataStreamTest, ReadAsyncWithExactSizeBuffer) {
446 element_readers_.push_back( 450 element_readers_.push_back(
447 base::WrapUnique(new UploadBytesElementReader(kTestData, kTestDataSize))); 451 base::WrapUnique(new UploadBytesElementReader(kTestData, kTestDataSize)));
448 std::unique_ptr<UploadDataStream> stream( 452 std::unique_ptr<UploadDataStream> stream(
449 new ElementsUploadDataStream(std::move(element_readers_), 0)); 453 new ElementsUploadDataStream(std::move(element_readers_), 0));
450 454
451 ASSERT_EQ(OK, stream->Init(CompletionCallback())); 455 ASSERT_THAT(stream->Init(CompletionCallback()), IsOk());
452 EXPECT_TRUE(stream->IsInMemory()); 456 EXPECT_TRUE(stream->IsInMemory());
453 EXPECT_EQ(kTestDataSize, stream->size()); 457 EXPECT_EQ(kTestDataSize, stream->size());
454 EXPECT_EQ(0U, stream->position()); 458 EXPECT_EQ(0U, stream->position());
455 EXPECT_FALSE(stream->IsEOF()); 459 EXPECT_FALSE(stream->IsEOF());
456 scoped_refptr<IOBuffer> buf = new IOBuffer(kTestDataSize); 460 scoped_refptr<IOBuffer> buf = new IOBuffer(kTestDataSize);
457 int bytes_read = stream->Read(buf.get(), kTestDataSize, CompletionCallback()); 461 int bytes_read = stream->Read(buf.get(), kTestDataSize, CompletionCallback());
458 ASSERT_EQ(static_cast<int>(kTestDataSize), bytes_read); // Not an error. 462 ASSERT_EQ(static_cast<int>(kTestDataSize), bytes_read); // Not an error.
459 EXPECT_EQ(kTestDataSize, stream->position()); 463 EXPECT_EQ(kTestDataSize, stream->position());
460 ASSERT_TRUE(stream->IsEOF()); 464 ASSERT_TRUE(stream->IsEOF());
461 } 465 }
(...skipping 23 matching lines...) Expand all
485 new MockUploadElementReader(kTestDataSize, false)); 489 new MockUploadElementReader(kTestDataSize, false));
486 reader4->SetAsyncInitExpectation(OK); 490 reader4->SetAsyncInitExpectation(OK);
487 reader4->SetReadExpectation(kTestDataSize); 491 reader4->SetReadExpectation(kTestDataSize);
488 element_readers_.push_back(std::move(reader4)); 492 element_readers_.push_back(std::move(reader4));
489 493
490 std::unique_ptr<UploadDataStream> stream( 494 std::unique_ptr<UploadDataStream> stream(
491 new ElementsUploadDataStream(std::move(element_readers_), 0)); 495 new ElementsUploadDataStream(std::move(element_readers_), 0));
492 496
493 // Run Init(). 497 // Run Init().
494 TestCompletionCallback init_callback; 498 TestCompletionCallback init_callback;
495 EXPECT_EQ(ERR_IO_PENDING, stream->Init(init_callback.callback())); 499 EXPECT_THAT(stream->Init(init_callback.callback()), IsError(ERR_IO_PENDING));
496 EXPECT_EQ(OK, init_callback.WaitForResult()); 500 EXPECT_THAT(init_callback.WaitForResult(), IsOk());
497 501
498 scoped_refptr<IOBuffer> buf = new IOBuffer(kTestBufferSize); 502 scoped_refptr<IOBuffer> buf = new IOBuffer(kTestBufferSize);
499 503
500 // Consume the first element. 504 // Consume the first element.
501 TestCompletionCallback read_callback1; 505 TestCompletionCallback read_callback1;
502 EXPECT_EQ(static_cast<int>(kTestDataSize), 506 EXPECT_EQ(static_cast<int>(kTestDataSize),
503 stream->Read(buf.get(), kTestDataSize, read_callback1.callback())); 507 stream->Read(buf.get(), kTestDataSize, read_callback1.callback()));
504 base::RunLoop().RunUntilIdle(); 508 base::RunLoop().RunUntilIdle();
505 EXPECT_FALSE(read_callback1.have_result()); 509 EXPECT_FALSE(read_callback1.have_result());
506 510
(...skipping 18 matching lines...) Expand all
525 bool error_expected) { 529 bool error_expected) {
526 // Don't use element_readers_ here, as this function is called twice, and 530 // Don't use element_readers_ here, as this function is called twice, and
527 // reusing element_readers_ is wrong. 531 // reusing element_readers_ is wrong.
528 std::vector<std::unique_ptr<UploadElementReader>> element_readers; 532 std::vector<std::unique_ptr<UploadElementReader>> element_readers;
529 element_readers.push_back(base::WrapUnique(new UploadFileElementReader( 533 element_readers.push_back(base::WrapUnique(new UploadFileElementReader(
530 base::ThreadTaskRunnerHandle::Get().get(), file_path, 1, 2, time))); 534 base::ThreadTaskRunnerHandle::Get().get(), file_path, 1, 2, time)));
531 535
532 TestCompletionCallback init_callback; 536 TestCompletionCallback init_callback;
533 std::unique_ptr<UploadDataStream> stream( 537 std::unique_ptr<UploadDataStream> stream(
534 new ElementsUploadDataStream(std::move(element_readers), 0)); 538 new ElementsUploadDataStream(std::move(element_readers), 0));
535 ASSERT_EQ(ERR_IO_PENDING, stream->Init(init_callback.callback())); 539 ASSERT_THAT(stream->Init(init_callback.callback()), IsError(ERR_IO_PENDING));
536 int error_code = init_callback.WaitForResult(); 540 int error_code = init_callback.WaitForResult();
537 if (error_expected) 541 if (error_expected)
538 ASSERT_EQ(ERR_UPLOAD_FILE_CHANGED, error_code); 542 ASSERT_THAT(error_code, IsError(ERR_UPLOAD_FILE_CHANGED));
539 else 543 else
540 ASSERT_EQ(OK, error_code); 544 ASSERT_THAT(error_code, IsOk());
541 } 545 }
542 546
543 TEST_F(ElementsUploadDataStreamTest, FileChanged) { 547 TEST_F(ElementsUploadDataStreamTest, FileChanged) {
544 base::FilePath temp_file_path; 548 base::FilePath temp_file_path;
545 ASSERT_TRUE(base::CreateTemporaryFileInDir(temp_dir_.path(), 549 ASSERT_TRUE(base::CreateTemporaryFileInDir(temp_dir_.path(),
546 &temp_file_path)); 550 &temp_file_path));
547 ASSERT_EQ(static_cast<int>(kTestDataSize), 551 ASSERT_EQ(static_cast<int>(kTestDataSize),
548 base::WriteFile(temp_file_path, kTestData, kTestDataSize)); 552 base::WriteFile(temp_file_path, kTestData, kTestDataSize));
549 553
550 base::File::Info file_info; 554 base::File::Info file_info;
(...skipping 22 matching lines...) Expand all
573 base::ThreadTaskRunnerHandle::Get().get(), temp_file_path, 0, 577 base::ThreadTaskRunnerHandle::Get().get(), temp_file_path, 0,
574 std::numeric_limits<uint64_t>::max(), base::Time()))); 578 std::numeric_limits<uint64_t>::max(), base::Time())));
575 std::unique_ptr<UploadDataStream> stream( 579 std::unique_ptr<UploadDataStream> stream(
576 new ElementsUploadDataStream(std::move(element_readers_), 0)); 580 new ElementsUploadDataStream(std::move(element_readers_), 0));
577 581
578 std::string expected_data(kTestData, kTestData + kTestDataSize); 582 std::string expected_data(kTestData, kTestData + kTestDataSize);
579 expected_data += expected_data; 583 expected_data += expected_data;
580 584
581 // Call Init(). 585 // Call Init().
582 TestCompletionCallback init_callback1; 586 TestCompletionCallback init_callback1;
583 ASSERT_EQ(ERR_IO_PENDING, stream->Init(init_callback1.callback())); 587 ASSERT_THAT(stream->Init(init_callback1.callback()), IsError(ERR_IO_PENDING));
584 ASSERT_EQ(OK, init_callback1.WaitForResult()); 588 ASSERT_THAT(init_callback1.WaitForResult(), IsOk());
585 EXPECT_FALSE(stream->IsEOF()); 589 EXPECT_FALSE(stream->IsEOF());
586 EXPECT_EQ(kTestDataSize*2, stream->size()); 590 EXPECT_EQ(kTestDataSize*2, stream->size());
587 591
588 // Read. 592 // Read.
589 EXPECT_EQ(expected_data, ReadFromUploadDataStream(stream.get())); 593 EXPECT_EQ(expected_data, ReadFromUploadDataStream(stream.get()));
590 EXPECT_TRUE(stream->IsEOF()); 594 EXPECT_TRUE(stream->IsEOF());
591 595
592 // Call Init() again to reset. 596 // Call Init() again to reset.
593 TestCompletionCallback init_callback2; 597 TestCompletionCallback init_callback2;
594 ASSERT_EQ(ERR_IO_PENDING, stream->Init(init_callback2.callback())); 598 ASSERT_THAT(stream->Init(init_callback2.callback()), IsError(ERR_IO_PENDING));
595 ASSERT_EQ(OK, init_callback2.WaitForResult()); 599 ASSERT_THAT(init_callback2.WaitForResult(), IsOk());
596 EXPECT_FALSE(stream->IsEOF()); 600 EXPECT_FALSE(stream->IsEOF());
597 EXPECT_EQ(kTestDataSize*2, stream->size()); 601 EXPECT_EQ(kTestDataSize*2, stream->size());
598 602
599 // Read again. 603 // Read again.
600 EXPECT_EQ(expected_data, ReadFromUploadDataStream(stream.get())); 604 EXPECT_EQ(expected_data, ReadFromUploadDataStream(stream.get()));
601 EXPECT_TRUE(stream->IsEOF()); 605 EXPECT_TRUE(stream->IsEOF());
602 } 606 }
603 607
604 TEST_F(ElementsUploadDataStreamTest, MultipleInitAsync) { 608 TEST_F(ElementsUploadDataStreamTest, MultipleInitAsync) {
605 base::FilePath temp_file_path; 609 base::FilePath temp_file_path;
606 ASSERT_TRUE(base::CreateTemporaryFileInDir(temp_dir_.path(), 610 ASSERT_TRUE(base::CreateTemporaryFileInDir(temp_dir_.path(),
607 &temp_file_path)); 611 &temp_file_path));
608 ASSERT_EQ(static_cast<int>(kTestDataSize), 612 ASSERT_EQ(static_cast<int>(kTestDataSize),
609 base::WriteFile(temp_file_path, kTestData, kTestDataSize)); 613 base::WriteFile(temp_file_path, kTestData, kTestDataSize));
610 TestCompletionCallback test_callback; 614 TestCompletionCallback test_callback;
611 615
612 // Prepare data. 616 // Prepare data.
613 element_readers_.push_back( 617 element_readers_.push_back(
614 base::WrapUnique(new UploadBytesElementReader(kTestData, kTestDataSize))); 618 base::WrapUnique(new UploadBytesElementReader(kTestData, kTestDataSize)));
615 element_readers_.push_back(base::WrapUnique(new UploadFileElementReader( 619 element_readers_.push_back(base::WrapUnique(new UploadFileElementReader(
616 base::ThreadTaskRunnerHandle::Get().get(), temp_file_path, 0, 620 base::ThreadTaskRunnerHandle::Get().get(), temp_file_path, 0,
617 std::numeric_limits<uint64_t>::max(), base::Time()))); 621 std::numeric_limits<uint64_t>::max(), base::Time())));
618 std::unique_ptr<UploadDataStream> stream( 622 std::unique_ptr<UploadDataStream> stream(
619 new ElementsUploadDataStream(std::move(element_readers_), 0)); 623 new ElementsUploadDataStream(std::move(element_readers_), 0));
620 624
621 std::string expected_data(kTestData, kTestData + kTestDataSize); 625 std::string expected_data(kTestData, kTestData + kTestDataSize);
622 expected_data += expected_data; 626 expected_data += expected_data;
623 627
624 // Call Init(). 628 // Call Init().
625 ASSERT_EQ(ERR_IO_PENDING, stream->Init(test_callback.callback())); 629 ASSERT_THAT(stream->Init(test_callback.callback()), IsError(ERR_IO_PENDING));
626 EXPECT_EQ(OK, test_callback.WaitForResult()); 630 EXPECT_THAT(test_callback.WaitForResult(), IsOk());
627 EXPECT_FALSE(stream->IsEOF()); 631 EXPECT_FALSE(stream->IsEOF());
628 EXPECT_EQ(kTestDataSize*2, stream->size()); 632 EXPECT_EQ(kTestDataSize*2, stream->size());
629 633
630 // Read. 634 // Read.
631 EXPECT_EQ(expected_data, ReadFromUploadDataStream(stream.get())); 635 EXPECT_EQ(expected_data, ReadFromUploadDataStream(stream.get()));
632 EXPECT_TRUE(stream->IsEOF()); 636 EXPECT_TRUE(stream->IsEOF());
633 637
634 // Call Init() again to reset. 638 // Call Init() again to reset.
635 ASSERT_EQ(ERR_IO_PENDING, stream->Init(test_callback.callback())); 639 ASSERT_THAT(stream->Init(test_callback.callback()), IsError(ERR_IO_PENDING));
636 EXPECT_EQ(OK, test_callback.WaitForResult()); 640 EXPECT_THAT(test_callback.WaitForResult(), IsOk());
637 EXPECT_FALSE(stream->IsEOF()); 641 EXPECT_FALSE(stream->IsEOF());
638 EXPECT_EQ(kTestDataSize*2, stream->size()); 642 EXPECT_EQ(kTestDataSize*2, stream->size());
639 643
640 // Read again. 644 // Read again.
641 EXPECT_EQ(expected_data, ReadFromUploadDataStream(stream.get())); 645 EXPECT_EQ(expected_data, ReadFromUploadDataStream(stream.get()));
642 EXPECT_TRUE(stream->IsEOF()); 646 EXPECT_TRUE(stream->IsEOF());
643 } 647 }
644 648
645 TEST_F(ElementsUploadDataStreamTest, InitToReset) { 649 TEST_F(ElementsUploadDataStreamTest, InitToReset) {
646 base::FilePath temp_file_path; 650 base::FilePath temp_file_path;
(...skipping 10 matching lines...) Expand all
657 std::numeric_limits<uint64_t>::max(), base::Time()))); 661 std::numeric_limits<uint64_t>::max(), base::Time())));
658 std::unique_ptr<UploadDataStream> stream( 662 std::unique_ptr<UploadDataStream> stream(
659 new ElementsUploadDataStream(std::move(element_readers_), 0)); 663 new ElementsUploadDataStream(std::move(element_readers_), 0));
660 664
661 std::vector<char> expected_data(kTestData, kTestData + kTestDataSize); 665 std::vector<char> expected_data(kTestData, kTestData + kTestDataSize);
662 expected_data.insert(expected_data.end(), kTestData, 666 expected_data.insert(expected_data.end(), kTestData,
663 kTestData + kTestDataSize); 667 kTestData + kTestDataSize);
664 668
665 // Call Init(). 669 // Call Init().
666 TestCompletionCallback init_callback1; 670 TestCompletionCallback init_callback1;
667 ASSERT_EQ(ERR_IO_PENDING, stream->Init(init_callback1.callback())); 671 ASSERT_THAT(stream->Init(init_callback1.callback()), IsError(ERR_IO_PENDING));
668 EXPECT_EQ(OK, init_callback1.WaitForResult()); 672 EXPECT_THAT(init_callback1.WaitForResult(), IsOk());
669 EXPECT_FALSE(stream->IsEOF()); 673 EXPECT_FALSE(stream->IsEOF());
670 EXPECT_EQ(kTestDataSize*2, stream->size()); 674 EXPECT_EQ(kTestDataSize*2, stream->size());
671 675
672 // Read some. 676 // Read some.
673 TestCompletionCallback read_callback1; 677 TestCompletionCallback read_callback1;
674 std::vector<char> buf(kTestDataSize + kTestDataSize/2); 678 std::vector<char> buf(kTestDataSize + kTestDataSize/2);
675 scoped_refptr<IOBuffer> wrapped_buffer = new WrappedIOBuffer(&buf[0]); 679 scoped_refptr<IOBuffer> wrapped_buffer = new WrappedIOBuffer(&buf[0]);
676 EXPECT_EQ( 680 EXPECT_EQ(
677 ERR_IO_PENDING, 681 ERR_IO_PENDING,
678 stream->Read(wrapped_buffer.get(), buf.size(), 682 stream->Read(wrapped_buffer.get(), buf.size(),
679 read_callback1.callback())); 683 read_callback1.callback()));
680 EXPECT_EQ(static_cast<int>(buf.size()), read_callback1.WaitForResult()); 684 EXPECT_EQ(static_cast<int>(buf.size()), read_callback1.WaitForResult());
681 EXPECT_EQ(buf.size(), stream->position()); 685 EXPECT_EQ(buf.size(), stream->position());
682 686
683 // Call Init to reset the state. 687 // Call Init to reset the state.
684 TestCompletionCallback init_callback2; 688 TestCompletionCallback init_callback2;
685 ASSERT_EQ(ERR_IO_PENDING, stream->Init(init_callback2.callback())); 689 ASSERT_THAT(stream->Init(init_callback2.callback()), IsError(ERR_IO_PENDING));
686 EXPECT_EQ(OK, init_callback2.WaitForResult()); 690 EXPECT_THAT(init_callback2.WaitForResult(), IsOk());
687 EXPECT_FALSE(stream->IsEOF()); 691 EXPECT_FALSE(stream->IsEOF());
688 EXPECT_EQ(kTestDataSize*2, stream->size()); 692 EXPECT_EQ(kTestDataSize*2, stream->size());
689 693
690 // Read. 694 // Read.
691 TestCompletionCallback read_callback2; 695 TestCompletionCallback read_callback2;
692 std::vector<char> buf2(kTestDataSize*2); 696 std::vector<char> buf2(kTestDataSize*2);
693 scoped_refptr<IOBuffer> wrapped_buffer2 = new WrappedIOBuffer(&buf2[0]); 697 scoped_refptr<IOBuffer> wrapped_buffer2 = new WrappedIOBuffer(&buf2[0]);
694 EXPECT_EQ(ERR_IO_PENDING, 698 EXPECT_EQ(ERR_IO_PENDING,
695 stream->Read( 699 stream->Read(
696 wrapped_buffer2.get(), buf2.size(), read_callback2.callback())); 700 wrapped_buffer2.get(), buf2.size(), read_callback2.callback()));
(...skipping 16 matching lines...) Expand all
713 std::numeric_limits<uint64_t>::max(), base::Time()))); 717 std::numeric_limits<uint64_t>::max(), base::Time())));
714 std::unique_ptr<UploadDataStream> stream( 718 std::unique_ptr<UploadDataStream> stream(
715 new ElementsUploadDataStream(std::move(element_readers_), 0)); 719 new ElementsUploadDataStream(std::move(element_readers_), 0));
716 720
717 std::vector<char> expected_data(kTestData, kTestData + kTestDataSize); 721 std::vector<char> expected_data(kTestData, kTestData + kTestDataSize);
718 expected_data.insert(expected_data.end(), kTestData, 722 expected_data.insert(expected_data.end(), kTestData,
719 kTestData + kTestDataSize); 723 kTestData + kTestDataSize);
720 724
721 // Start Init. 725 // Start Init.
722 TestCompletionCallback init_callback1; 726 TestCompletionCallback init_callback1;
723 EXPECT_EQ(ERR_IO_PENDING, stream->Init(init_callback1.callback())); 727 EXPECT_THAT(stream->Init(init_callback1.callback()), IsError(ERR_IO_PENDING));
724 728
725 // Call Init again to cancel the previous init. 729 // Call Init again to cancel the previous init.
726 TestCompletionCallback init_callback2; 730 TestCompletionCallback init_callback2;
727 EXPECT_EQ(ERR_IO_PENDING, stream->Init(init_callback2.callback())); 731 EXPECT_THAT(stream->Init(init_callback2.callback()), IsError(ERR_IO_PENDING));
728 EXPECT_EQ(OK, init_callback2.WaitForResult()); 732 EXPECT_THAT(init_callback2.WaitForResult(), IsOk());
729 EXPECT_FALSE(stream->IsEOF()); 733 EXPECT_FALSE(stream->IsEOF());
730 EXPECT_EQ(kTestDataSize*2, stream->size()); 734 EXPECT_EQ(kTestDataSize*2, stream->size());
731 735
732 // Read. 736 // Read.
733 TestCompletionCallback read_callback2; 737 TestCompletionCallback read_callback2;
734 std::vector<char> buf2(kTestDataSize*2); 738 std::vector<char> buf2(kTestDataSize*2);
735 scoped_refptr<IOBuffer> wrapped_buffer2 = new WrappedIOBuffer(&buf2[0]); 739 scoped_refptr<IOBuffer> wrapped_buffer2 = new WrappedIOBuffer(&buf2[0]);
736 EXPECT_EQ(ERR_IO_PENDING, 740 EXPECT_EQ(ERR_IO_PENDING,
737 stream->Read( 741 stream->Read(
738 wrapped_buffer2.get(), buf2.size(), read_callback2.callback())); 742 wrapped_buffer2.get(), buf2.size(), read_callback2.callback()));
(...skipping 20 matching lines...) Expand all
759 std::numeric_limits<uint64_t>::max(), base::Time()))); 763 std::numeric_limits<uint64_t>::max(), base::Time())));
760 std::unique_ptr<UploadDataStream> stream( 764 std::unique_ptr<UploadDataStream> stream(
761 new ElementsUploadDataStream(std::move(element_readers_), 0)); 765 new ElementsUploadDataStream(std::move(element_readers_), 0));
762 766
763 std::vector<char> expected_data(kTestData, kTestData + kTestDataSize); 767 std::vector<char> expected_data(kTestData, kTestData + kTestDataSize);
764 expected_data.insert(expected_data.end(), kTestData, 768 expected_data.insert(expected_data.end(), kTestData,
765 kTestData + kTestDataSize); 769 kTestData + kTestDataSize);
766 770
767 // Call Init(). 771 // Call Init().
768 TestCompletionCallback init_callback1; 772 TestCompletionCallback init_callback1;
769 ASSERT_EQ(ERR_IO_PENDING, stream->Init(init_callback1.callback())); 773 ASSERT_THAT(stream->Init(init_callback1.callback()), IsError(ERR_IO_PENDING));
770 EXPECT_EQ(OK, init_callback1.WaitForResult()); 774 EXPECT_THAT(init_callback1.WaitForResult(), IsOk());
771 EXPECT_FALSE(stream->IsEOF()); 775 EXPECT_FALSE(stream->IsEOF());
772 EXPECT_EQ(kTestDataSize*2, stream->size()); 776 EXPECT_EQ(kTestDataSize*2, stream->size());
773 777
774 // Start reading. 778 // Start reading.
775 TestCompletionCallback read_callback1; 779 TestCompletionCallback read_callback1;
776 std::vector<char> buf(kTestDataSize*2); 780 std::vector<char> buf(kTestDataSize*2);
777 scoped_refptr<IOBuffer> wrapped_buffer = new WrappedIOBuffer(&buf[0]); 781 scoped_refptr<IOBuffer> wrapped_buffer = new WrappedIOBuffer(&buf[0]);
778 EXPECT_EQ( 782 EXPECT_EQ(
779 ERR_IO_PENDING, 783 ERR_IO_PENDING,
780 stream->Read(wrapped_buffer.get(), buf.size(), 784 stream->Read(wrapped_buffer.get(), buf.size(),
781 read_callback1.callback())); 785 read_callback1.callback()));
782 786
783 // Call Init to cancel the previous read. 787 // Call Init to cancel the previous read.
784 TestCompletionCallback init_callback2; 788 TestCompletionCallback init_callback2;
785 EXPECT_EQ(ERR_IO_PENDING, stream->Init(init_callback2.callback())); 789 EXPECT_THAT(stream->Init(init_callback2.callback()), IsError(ERR_IO_PENDING));
786 EXPECT_EQ(OK, init_callback2.WaitForResult()); 790 EXPECT_THAT(init_callback2.WaitForResult(), IsOk());
787 EXPECT_FALSE(stream->IsEOF()); 791 EXPECT_FALSE(stream->IsEOF());
788 EXPECT_EQ(kTestDataSize*2, stream->size()); 792 EXPECT_EQ(kTestDataSize*2, stream->size());
789 793
790 // Read. 794 // Read.
791 TestCompletionCallback read_callback2; 795 TestCompletionCallback read_callback2;
792 std::vector<char> buf2(kTestDataSize*2); 796 std::vector<char> buf2(kTestDataSize*2);
793 scoped_refptr<IOBuffer> wrapped_buffer2 = new WrappedIOBuffer(&buf2[0]); 797 scoped_refptr<IOBuffer> wrapped_buffer2 = new WrappedIOBuffer(&buf2[0]);
794 EXPECT_EQ(ERR_IO_PENDING, 798 EXPECT_EQ(ERR_IO_PENDING,
795 stream->Read( 799 stream->Read(
796 wrapped_buffer2.get(), buf2.size(), read_callback2.callback())); 800 wrapped_buffer2.get(), buf2.size(), read_callback2.callback()));
797 EXPECT_EQ(static_cast<int>(buf2.size()), read_callback2.WaitForResult()); 801 EXPECT_EQ(static_cast<int>(buf2.size()), read_callback2.WaitForResult());
798 EXPECT_EQ(expected_data, buf2); 802 EXPECT_EQ(expected_data, buf2);
799 EXPECT_TRUE(stream->IsEOF()); 803 EXPECT_TRUE(stream->IsEOF());
800 804
801 // Make sure callbacks are not called for cancelled operations. 805 // Make sure callbacks are not called for cancelled operations.
802 EXPECT_FALSE(read_callback1.have_result()); 806 EXPECT_FALSE(read_callback1.have_result());
803 } 807 }
804 808
805 } // namespace net 809 } // namespace net
OLDNEW
« no previous file with comments | « net/base/directory_lister_unittest.cc ('k') | net/base/file_stream_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698