Chromium Code Reviews| Index: net/base/upload_file_element_reader_unittest.cc |
| diff --git a/net/base/upload_file_element_reader_unittest.cc b/net/base/upload_file_element_reader_unittest.cc |
| index 6a807167c3f814c35f12bdc63a6f92f40c5e34e0..522b1ed7c32958ac47d1600819d214c51c6cbe6c 100644 |
| --- a/net/base/upload_file_element_reader_unittest.cc |
| +++ b/net/base/upload_file_element_reader_unittest.cc |
| @@ -6,7 +6,9 @@ |
| #include "base/file_util.h" |
| #include "base/scoped_temp_dir.h" |
| +#include "net/base/io_buffer.h" |
| #include "net/base/net_errors.h" |
| +#include "net/base/test_completion_callback.h" |
| #include "testing/gtest/include/gtest/gtest.h" |
| #include "testing/platform_test.h" |
| @@ -43,8 +45,9 @@ class UploadFileElementReaderTest : public PlatformTest { |
| TEST_F(UploadFileElementReaderTest, ReadPartially) { |
| const size_t kHalfSize = bytes_.size() / 2; |
| std::vector<char> buf(kHalfSize); |
| + scoped_refptr<IOBuffer> wrapped_buffer = new WrappedIOBuffer(&buf[0]); |
| EXPECT_EQ(static_cast<int>(buf.size()), |
| - reader_->ReadSync(&buf[0], buf.size())); |
| + reader_->ReadSync(wrapped_buffer, buf.size())); |
| EXPECT_EQ(bytes_.size() - buf.size(), reader_->BytesRemaining()); |
| bytes_.resize(kHalfSize); // Resize to compare. |
| EXPECT_EQ(bytes_, buf); |
| @@ -52,19 +55,66 @@ TEST_F(UploadFileElementReaderTest, ReadPartially) { |
| TEST_F(UploadFileElementReaderTest, ReadAll) { |
| std::vector<char> buf(bytes_.size()); |
| + scoped_refptr<IOBuffer> wrapped_buffer = new WrappedIOBuffer(&buf[0]); |
| EXPECT_EQ(static_cast<int>(buf.size()), |
| - reader_->ReadSync(&buf[0], buf.size())); |
| + reader_->ReadSync(wrapped_buffer, buf.size())); |
| EXPECT_EQ(0U, reader_->BytesRemaining()); |
| EXPECT_EQ(bytes_, buf); |
| // Try to read again. |
| - EXPECT_EQ(0, reader_->ReadSync(&buf[0], buf.size())); |
| + EXPECT_EQ(0, reader_->ReadSync(wrapped_buffer, buf.size())); |
| } |
| TEST_F(UploadFileElementReaderTest, ReadTooMuch) { |
| const size_t kTooLargeSize = bytes_.size() * 2; |
| std::vector<char> buf(kTooLargeSize); |
| + scoped_refptr<IOBuffer> wrapped_buffer = new WrappedIOBuffer(&buf[0]); |
| EXPECT_EQ(static_cast<int>(bytes_.size()), |
| - reader_->ReadSync(&buf[0], buf.size())); |
| + reader_->ReadSync(wrapped_buffer, buf.size())); |
| + EXPECT_EQ(0U, reader_->BytesRemaining()); |
| + buf.resize(bytes_.size()); // Resize to compare. |
| + EXPECT_EQ(bytes_, buf); |
| +} |
| + |
| +TEST_F(UploadFileElementReaderTest, ReadPartiallyAsync) { |
| + const size_t kHalfSize = bytes_.size() / 2; |
| + std::vector<char> buf(kHalfSize); |
| + scoped_refptr<IOBuffer> wrapped_buffer = new WrappedIOBuffer(&buf[0]); |
| + TestCompletionCallback test_callback; |
| + EXPECT_EQ(ERR_IO_PENDING, |
| + reader_->Read(wrapped_buffer, buf.size(), |
| + test_callback.callback())); |
| + |
| + EXPECT_EQ(static_cast<int>(buf.size()), test_callback.WaitForResult()); |
| + EXPECT_EQ(bytes_.size() - buf.size(), reader_->BytesRemaining()); |
| + bytes_.resize(kHalfSize); // Resize to compare. |
| + EXPECT_EQ(bytes_, buf); |
|
mmenke
2012/10/12 21:30:29
How about reading the rest of the file, too, in a
hashimoto
2012/10/15 11:21:37
Done for both ReadPartially and ReadPartiallyAsync
|
| +} |
| + |
| +TEST_F(UploadFileElementReaderTest, ReadAllAsync) { |
| + std::vector<char> buf(bytes_.size()); |
| + scoped_refptr<IOBuffer> wrapped_buffer = new WrappedIOBuffer(&buf[0]); |
| + TestCompletionCallback test_callback; |
| + EXPECT_EQ(ERR_IO_PENDING, |
| + reader_->Read(wrapped_buffer, buf.size(), |
| + test_callback.callback())); |
| + |
| + EXPECT_EQ(static_cast<int>(buf.size()), test_callback.WaitForResult()); |
| + EXPECT_EQ(0U, reader_->BytesRemaining()); |
| + EXPECT_EQ(bytes_, buf); |
| + // Try to read again. |
| + EXPECT_EQ(0, reader_->ReadSync(wrapped_buffer, buf.size())); |
| +} |
| + |
| +TEST_F(UploadFileElementReaderTest, ReadTooMuchAsync) { |
| + const size_t kTooLargeSize = bytes_.size() * 2; |
| + std::vector<char> buf(kTooLargeSize); |
| + scoped_refptr<IOBuffer> wrapped_buffer = new WrappedIOBuffer(&buf[0]); |
| + TestCompletionCallback test_callback; |
| + EXPECT_EQ(ERR_IO_PENDING, |
| + reader_->Read(wrapped_buffer, buf.size(), |
| + test_callback.callback())); |
| + |
| + EXPECT_EQ(static_cast<int>(bytes_.size()), test_callback.WaitForResult()); |
| EXPECT_EQ(0U, reader_->BytesRemaining()); |
| buf.resize(bytes_.size()); // Resize to compare. |
| EXPECT_EQ(bytes_, buf); |
| @@ -79,8 +129,9 @@ TEST_F(UploadFileElementReaderTest, Range) { |
| EXPECT_EQ(kLength, reader_->GetContentLength()); |
| EXPECT_EQ(kLength, reader_->BytesRemaining()); |
| std::vector<char> buf(kLength); |
| + scoped_refptr<IOBuffer> wrapped_buffer = new WrappedIOBuffer(&buf[0]); |
| EXPECT_EQ(static_cast<int>(kLength), |
| - reader_->ReadSync(&buf[0], kLength)); |
| + reader_->ReadSync(wrapped_buffer, kLength)); |
| const std::vector<char> expected(bytes_.begin() + kOffset, |
| bytes_.begin() + kOffset + kLength); |
| EXPECT_EQ(expected, buf); |