Index: net/base/upload_data_stream_unittest.cc |
=================================================================== |
--- net/base/upload_data_stream_unittest.cc (revision 42417) |
+++ net/base/upload_data_stream_unittest.cc (working copy) |
@@ -9,6 +9,9 @@ |
#include "base/basictypes.h" |
#include "base/file_path.h" |
#include "base/file_util.h" |
+#include "base/scoped_ptr.h" |
+#include "base/time.h" |
+#include "net/base/net_errors.h" |
#include "net/base/upload_data.h" |
#include "testing/gtest/include/gtest/gtest.h" |
#include "testing/platform_test.h" |
@@ -26,20 +29,28 @@ |
public: |
UploadDataStreamTest() : upload_data_(new UploadData) { } |
+ void FileChangedHelper(const FilePath& file_path, |
+ const base::Time& time, |
+ bool error_expected); |
+ |
scoped_refptr<UploadData> upload_data_; |
}; |
TEST_F(UploadDataStreamTest, EmptyUploadData) { |
upload_data_->AppendBytes("", 0); |
- UploadDataStream stream(upload_data_); |
- EXPECT_TRUE(stream.eof()); |
+ scoped_ptr<UploadDataStream> stream( |
+ UploadDataStream::Create(upload_data_, NULL)); |
+ ASSERT_TRUE(stream.get()); |
+ EXPECT_TRUE(stream->eof()); |
} |
TEST_F(UploadDataStreamTest, ConsumeAll) { |
upload_data_->AppendBytes(kTestData, kTestDataSize); |
- UploadDataStream stream(upload_data_); |
- while (!stream.eof()) { |
- stream.DidConsume(stream.buf_len()); |
+ scoped_ptr<UploadDataStream> stream( |
+ UploadDataStream::Create(upload_data_, NULL)); |
+ ASSERT_TRUE(stream.get()); |
+ while (!stream->eof()) { |
+ stream->DidConsume(stream->buf_len()); |
} |
} |
@@ -58,17 +69,57 @@ |
upload_data_->set_elements(elements); |
EXPECT_EQ(kFakeSize, upload_data_->GetContentLength()); |
- UploadDataStream stream(upload_data_); |
- EXPECT_FALSE(stream.eof()); |
+ scoped_ptr<UploadDataStream> stream( |
+ UploadDataStream::Create(upload_data_, NULL)); |
+ ASSERT_TRUE(stream.get()); |
+ EXPECT_FALSE(stream->eof()); |
uint64 read_counter = 0; |
- while (!stream.eof()) { |
- read_counter += stream.buf_len(); |
- stream.DidConsume(stream.buf_len()); |
+ while (!stream->eof()) { |
+ read_counter += stream->buf_len(); |
+ stream->DidConsume(stream->buf_len()); |
} |
- EXPECT_LT(read_counter, stream.size()); |
+ EXPECT_LT(read_counter, stream->size()); |
file_util::Delete(temp_file_path, false); |
} |
+void UploadDataStreamTest::FileChangedHelper(const FilePath& file_path, |
+ const base::Time& time, |
+ bool error_expected) { |
+ std::vector<UploadData::Element> elements; |
+ UploadData::Element element; |
+ element.SetToFilePathRange(file_path, 1, 2, time); |
+ elements.push_back(element); |
+ upload_data_->set_elements(elements); |
+ |
+ int error_code; |
+ scoped_ptr<UploadDataStream> stream( |
+ UploadDataStream::Create(upload_data_, &error_code)); |
+ if (error_expected) |
+ ASSERT_TRUE(!stream.get() && error_code == net::ERR_UPLOAD_FILE_CHANGED); |
+ else |
+ ASSERT_TRUE(stream.get() && error_code == net::OK); |
+} |
+ |
+TEST_F(UploadDataStreamTest, FileChanged) { |
+ FilePath temp_file_path; |
+ ASSERT_TRUE(file_util::CreateTemporaryFile(&temp_file_path)); |
+ ASSERT_EQ(kTestDataSize, file_util::WriteFile(temp_file_path, |
+ kTestData, kTestDataSize)); |
+ |
+ file_util::FileInfo file_info; |
+ ASSERT_TRUE(file_util::GetFileInfo(temp_file_path, &file_info)); |
+ |
+ // Test file not changed. |
+ FileChangedHelper(temp_file_path, file_info.last_modified, false); |
+ |
+ // Test file changed. |
+ FileChangedHelper(temp_file_path, |
+ file_info.last_modified - base::TimeDelta::FromSeconds(1), |
+ true); |
+ |
+ file_util::Delete(temp_file_path, false); |
+} |
+ |
} // namespace net |