Index: net/base/chunked_upload_data_stream_unittest.cc |
diff --git a/net/base/chunked_upload_data_stream_unittest.cc b/net/base/chunked_upload_data_stream_unittest.cc |
index 334e9a39428a16a6c380c771836adbf4ed82233a..283465106fc0354e94d87f768745c1fe7a1743ca 100644 |
--- a/net/base/chunked_upload_data_stream_unittest.cc |
+++ b/net/base/chunked_upload_data_stream_unittest.cc |
@@ -305,4 +305,26 @@ TEST(ChunkedUploadDataStreamTest, RewindWhileReading) { |
EXPECT_FALSE(callback.have_result()); |
} |
+// Check the behavior of ChunkedUploadDataStream::Writer. |
+TEST(ChunkedUploadDataStreamTest, ChunkedUploadDataStreamWriter) { |
+ scoped_ptr<ChunkedUploadDataStream> stream(new ChunkedUploadDataStream(0)); |
+ scoped_ptr<ChunkedUploadDataStream::Writer> writer(stream->CreateWriter()); |
+ |
+ // Write before Init. |
+ ASSERT_TRUE(writer->AppendData(kTestData, 1, false)); |
+ ASSERT_EQ(OK, stream->Init(TestCompletionCallback().callback())); |
+ |
+ // Write after Init. |
+ ASSERT_TRUE(writer->AppendData(kTestData + 1, kTestDataSize - 1, false)); |
+ |
+ TestCompletionCallback callback; |
+ std::string data = ReadSync(stream.get(), kTestBufferSize); |
+ EXPECT_EQ(kTestData, data); |
+ |
+ // Writing data should gracefully fail if the stream is deleted while still |
+ // appending data to it. |
+ stream.reset(); |
+ EXPECT_FALSE(writer->AppendData(kTestData, kTestDataSize, true)); |
+} |
+ |
} // namespace net |