Index: net/base/upload_data_stream_unittest.cc |
diff --git a/net/base/upload_data_stream_unittest.cc b/net/base/upload_data_stream_unittest.cc |
index c6d6120c61c668b3ead63bf0329b269091802a68..dc415f84e1af0ffa817f939098960e14c14520d3 100644 |
--- a/net/base/upload_data_stream_unittest.cc |
+++ b/net/base/upload_data_stream_unittest.cc |
@@ -55,16 +55,18 @@ TEST_F(UploadDataStreamTest, EmptyUploadData) { |
upload_data_->AppendBytes("", 0); |
scoped_ptr<UploadDataStream> stream(new UploadDataStream(upload_data_)); |
ASSERT_EQ(OK, stream->Init()); |
+ EXPECT_TRUE(stream->IsInMemory()); |
ASSERT_TRUE(stream.get()); |
EXPECT_EQ(0U, stream->size()); |
EXPECT_EQ(0U, stream->position()); |
EXPECT_TRUE(stream->IsEOF()); |
} |
-TEST_F(UploadDataStreamTest, ConsumeAll) { |
+TEST_F(UploadDataStreamTest, ConsumeAllBytes) { |
upload_data_->AppendBytes(kTestData, kTestDataSize); |
scoped_ptr<UploadDataStream> stream(new UploadDataStream(upload_data_)); |
ASSERT_EQ(OK, stream->Init()); |
+ EXPECT_TRUE(stream->IsInMemory()); |
ASSERT_TRUE(stream.get()); |
EXPECT_EQ(kTestDataSize, stream->size()); |
EXPECT_EQ(0U, stream->position()); |
@@ -78,6 +80,35 @@ TEST_F(UploadDataStreamTest, ConsumeAll) { |
ASSERT_TRUE(stream->IsEOF()); |
} |
+TEST_F(UploadDataStreamTest, File) { |
+ FilePath temp_file_path; |
+ ASSERT_TRUE(file_util::CreateTemporaryFile(&temp_file_path)); |
+ ASSERT_EQ(static_cast<int>(kTestDataSize), |
+ file_util::WriteFile(temp_file_path, kTestData, kTestDataSize)); |
+ |
+ std::vector<UploadElement> elements; |
+ UploadElement element; |
+ element.SetToFilePath(temp_file_path); |
+ elements.push_back(element); |
+ upload_data_->SetElements(elements); |
+ |
+ scoped_ptr<UploadDataStream> stream(new UploadDataStream(upload_data_)); |
+ ASSERT_EQ(OK, stream->Init()); |
+ EXPECT_FALSE(stream->IsInMemory()); |
+ ASSERT_TRUE(stream.get()); |
+ EXPECT_EQ(kTestDataSize, stream->size()); |
+ EXPECT_EQ(0U, stream->position()); |
+ EXPECT_FALSE(stream->IsEOF()); |
+ scoped_refptr<IOBuffer> buf = new IOBuffer(kTestBufferSize); |
+ while (!stream->IsEOF()) { |
+ int bytes_read = stream->Read(buf, kTestBufferSize); |
+ ASSERT_LE(0, bytes_read); // Not an error. |
+ } |
+ EXPECT_EQ(kTestDataSize, stream->position()); |
+ ASSERT_TRUE(stream->IsEOF()); |
+ file_util::Delete(temp_file_path, false); |
+} |
+ |
TEST_F(UploadDataStreamTest, FileSmallerThanLength) { |
FilePath temp_file_path; |
ASSERT_TRUE(file_util::CreateTemporaryFile(&temp_file_path)); |
@@ -91,10 +122,10 @@ TEST_F(UploadDataStreamTest, FileSmallerThanLength) { |
element.SetContentLength(kFakeSize); |
elements.push_back(element); |
upload_data_->SetElements(elements); |
- EXPECT_EQ(kFakeSize, upload_data_->GetContentLengthSync()); |
scoped_ptr<UploadDataStream> stream(new UploadDataStream(upload_data_)); |
ASSERT_EQ(OK, stream->Init()); |
+ EXPECT_FALSE(stream->IsInMemory()); |
ASSERT_TRUE(stream.get()); |
EXPECT_EQ(kFakeSize, stream->size()); |
EXPECT_EQ(0U, stream->position()); |
@@ -115,6 +146,60 @@ TEST_F(UploadDataStreamTest, FileSmallerThanLength) { |
file_util::Delete(temp_file_path, false); |
} |
+TEST_F(UploadDataStreamTest, FileAndBytes) { |
+ FilePath temp_file_path; |
+ ASSERT_TRUE(file_util::CreateTemporaryFile(&temp_file_path)); |
+ ASSERT_EQ(static_cast<int>(kTestDataSize), |
+ file_util::WriteFile(temp_file_path, kTestData, kTestDataSize)); |
+ |
+ const uint64 kFileRangeOffset = 1; |
+ const uint64 kFileRangeLength = 4; |
+ upload_data_->AppendFileRange( |
+ temp_file_path, kFileRangeOffset, kFileRangeLength, base::Time()); |
+ |
+ upload_data_->AppendBytes(kTestData, kTestDataSize); |
+ |
+ const uint64 kStreamSize = kTestDataSize + kFileRangeLength; |
+ scoped_ptr<UploadDataStream> stream(new UploadDataStream(upload_data_)); |
+ ASSERT_EQ(OK, stream->Init()); |
+ EXPECT_FALSE(stream->IsInMemory()); |
+ ASSERT_TRUE(stream.get()); |
+ EXPECT_EQ(kStreamSize, stream->size()); |
+ EXPECT_EQ(0U, stream->position()); |
+ EXPECT_FALSE(stream->IsEOF()); |
+ scoped_refptr<IOBuffer> buf = new IOBuffer(kTestBufferSize); |
+ while (!stream->IsEOF()) { |
+ int bytes_read = stream->Read(buf, kTestBufferSize); |
+ ASSERT_LE(0, bytes_read); // Not an error. |
+ } |
+ EXPECT_EQ(kStreamSize, stream->position()); |
+ ASSERT_TRUE(stream->IsEOF()); |
+ |
+ file_util::Delete(temp_file_path, false); |
+} |
+ |
+TEST_F(UploadDataStreamTest, Chunk) { |
+ upload_data_->set_is_chunked(true); |
+ upload_data_->AppendChunk(kTestData, kTestDataSize, false); |
+ upload_data_->AppendChunk(kTestData, kTestDataSize, true); |
+ |
+ const uint64 kStreamSize = kTestDataSize*2; |
+ scoped_ptr<UploadDataStream> stream(new UploadDataStream(upload_data_)); |
+ ASSERT_EQ(OK, stream->Init()); |
+ EXPECT_FALSE(stream->IsInMemory()); |
+ ASSERT_TRUE(stream.get()); |
+ EXPECT_EQ(0U, stream->size()); // Content-Length is 0 for chunked data. |
+ EXPECT_EQ(0U, stream->position()); |
+ EXPECT_FALSE(stream->IsEOF()); |
+ scoped_refptr<IOBuffer> buf = new IOBuffer(kTestBufferSize); |
+ while (!stream->IsEOF()) { |
+ int bytes_read = stream->Read(buf, kTestBufferSize); |
+ ASSERT_LE(0, bytes_read); // Not an error. |
+ } |
+ EXPECT_EQ(kStreamSize, stream->position()); |
+ ASSERT_TRUE(stream->IsEOF()); |
+} |
+ |
void UploadDataStreamTest::FileChangedHelper(const FilePath& file_path, |
const base::Time& time, |
bool error_expected) { |
@@ -167,12 +252,12 @@ TEST_F(UploadDataStreamTest, UploadDataReused) { |
element.SetToFilePath(temp_file_path); |
elements.push_back(element); |
upload_data_->SetElements(elements); |
- EXPECT_EQ(kTestDataSize, upload_data_->GetContentLengthSync()); |
// Confirm that the file is read properly. |
{ |
UploadDataStream stream(upload_data_); |
ASSERT_EQ(OK, stream.Init()); |
+ EXPECT_EQ(kTestDataSize, stream.size()); |
EXPECT_EQ(kTestData, ReadFromUploadDataStream(&stream)); |
} |
@@ -181,6 +266,7 @@ TEST_F(UploadDataStreamTest, UploadDataReused) { |
{ |
UploadDataStream stream(upload_data_); |
ASSERT_EQ(OK, stream.Init()); |
+ EXPECT_EQ(kTestDataSize, stream.size()); |
EXPECT_EQ(kTestData, ReadFromUploadDataStream(&stream)); |
} |