Index: net/base/file_stream_unittest.cc |
diff --git a/net/base/file_stream_unittest.cc b/net/base/file_stream_unittest.cc |
index 17579188d026c841dc0ed4400e3b876c12169945..1f79747fb5ebf97b2f648761d85e6619df21f423 100644 |
--- a/net/base/file_stream_unittest.cc |
+++ b/net/base/file_stream_unittest.cc |
@@ -1031,6 +1031,44 @@ TEST_F(FileStreamTest, AsyncOpenAndDelete) { |
EXPECT_FALSE(open_callback.have_result()); |
} |
+// Verify that async Write() errors are mapped correctly. |
+TEST_F(FileStreamTest, AsyncWriteError) { |
+ scoped_ptr<FileStream> stream(new FileStream(NULL)); |
+ int flags = base::PLATFORM_FILE_CREATE_ALWAYS | |
+ base::PLATFORM_FILE_WRITE | |
+ base::PLATFORM_FILE_ASYNC; |
+ int rv = stream->OpenSync(temp_file_path(), flags); |
+ EXPECT_EQ(OK, rv); |
+ |
+ TestCompletionCallback callback; |
+ |
+ // Try passing NULL buffer to Write() and check that it fails. |
+ scoped_refptr<IOBuffer> buf = new WrappedIOBuffer(NULL); |
+ rv = stream->Write(buf, 1, callback.callback()); |
+ if (rv == ERR_IO_PENDING) |
+ rv = callback.WaitForResult(); |
+ EXPECT_LT(rv, 0); |
+} |
+ |
+// Verify that async Read() errors are mapped correctly. |
+TEST_F(FileStreamTest, AsyncReadError) { |
+ scoped_ptr<FileStream> stream(new FileStream(NULL)); |
+ int flags = base::PLATFORM_FILE_OPEN | |
+ base::PLATFORM_FILE_READ | |
+ base::PLATFORM_FILE_ASYNC; |
+ int rv = stream->OpenSync(temp_file_path(), flags); |
+ EXPECT_EQ(OK, rv); |
+ |
+ TestCompletionCallback callback; |
+ |
+ // Try passing NULL buffer to Read() and check that it fails. |
+ scoped_refptr<IOBuffer> buf = new WrappedIOBuffer(NULL); |
+ rv = stream->Read(buf, 1, callback.callback()); |
+ if (rv == ERR_IO_PENDING) |
+ rv = callback.WaitForResult(); |
+ EXPECT_LT(rv, 0); |
+} |
+ |
} // namespace |
} // namespace net |