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..5b56de1a97fef07d4187606ac7a5e6eba7a6bc33 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" |
| @@ -16,7 +18,7 @@ class UploadFileElementReaderTest : public PlatformTest { |
| protected: |
| virtual void SetUp() OVERRIDE { |
| const char kData[] = "123456789abcdefghi"; |
| - bytes_.assign(kData, kData + arraysize(kData)); |
| + bytes_.assign(kData, kData + arraysize(kData) - 1); |
|
mmenke
2012/10/16 19:13:41
Suggest a comment that some tests rely on this bei
hashimoto
2012/10/17 08:04:31
Done.
|
| ASSERT_TRUE(temp_dir_.CreateUniqueTempDir()); |
| @@ -42,29 +44,90 @@ class UploadFileElementReaderTest : public PlatformTest { |
| TEST_F(UploadFileElementReaderTest, ReadPartially) { |
| const size_t kHalfSize = bytes_.size() / 2; |
| + ASSERT_EQ(bytes_.size(), kHalfSize * 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); |
| + EXPECT_EQ(std::vector<char>(bytes_.begin(), bytes_.begin() + kHalfSize), buf); |
| + |
| + EXPECT_EQ(static_cast<int>(buf.size()), |
| + reader_->ReadSync(wrapped_buffer, buf.size())); |
| + EXPECT_EQ(0U, reader_->BytesRemaining()); |
| + EXPECT_EQ(std::vector<char>(bytes_.begin() + kHalfSize, bytes_.end()), buf); |
| } |
| 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; |
| + ASSERT_EQ(bytes_.size(), kHalfSize * 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()); |
| + EXPECT_EQ(std::vector<char>(bytes_.begin(), bytes_.begin() + kHalfSize), buf); |
| + |
| + 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(std::vector<char>(bytes_.begin() + kHalfSize, bytes_.end()), buf); |
| +} |
| + |
| +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 +142,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); |