Index: net/socket/sequenced_socket_data_unittest.cc |
diff --git a/net/socket/sequenced_socket_data_unittest.cc b/net/socket/sequenced_socket_data_unittest.cc |
index e0ed3201d104df2bec7769051d931fa04a056580..920666e74809623fa31e4c820b22b7eddd6cd21c 100644 |
--- a/net/socket/sequenced_socket_data_unittest.cc |
+++ b/net/socket/sequenced_socket_data_unittest.cc |
@@ -194,6 +194,7 @@ class SequencedSocketDataTest : public testing::Test { |
void AssertSyncWriteEquals(const char* data, int len); |
void AssertAsyncWriteEquals(const char* data, int len); |
void AssertWriteReturns(const char* data, int len, int rv); |
+ void CompleteRead(); |
// When a given test completes, data_.at_eof() is expected to |
// match the value specified here. Most test should consume all |
@@ -313,6 +314,10 @@ void SequencedSocketDataTest::AssertAsyncWriteEquals(const char* data, |
ASSERT_EQ(len, write_callback_.WaitForResult()); |
} |
+void SequencedSocketDataTest::CompleteRead() { |
+ data_->CompleteRead(); |
+} |
+ |
void SequencedSocketDataTest::AssertWriteReturns(const char* data, |
int len, |
int rv) { |
@@ -603,6 +608,28 @@ TEST_F(SequencedSocketDataTest, HangingRead) { |
ASSERT_FALSE(read_callback_.have_result()); |
} |
+TEST_F(SequencedSocketDataTest, CompleteRead) { |
+ MockRead reads[] = { |
+ MockRead(ASYNC, ERR_IO_PENDING, 0), MockRead(ASYNC, kMsg1, kLen1, 1), |
+ }; |
+ |
+ Initialize(reads, arraysize(reads), nullptr, 0); |
+ |
+ AssertReadReturns(kLen1, ERR_IO_PENDING); |
+ ASSERT_FALSE(read_callback_.have_result()); |
+ |
+ // Even though the read is scheduled to complete at sequence number 0, |
+ // verify that the read callback in not called, until CompleteRead() is. |
+ base::MessageLoop::current()->RunUntilIdle(); |
+ ASSERT_FALSE(read_callback_.have_result()); |
+ |
+ CompleteRead(); |
+ |
+ ASSERT_TRUE(read_callback_.have_result()); |
+ ASSERT_EQ(kLen1, read_callback_.WaitForResult()); |
+ AssertReadBufferEquals(kMsg1, kLen1); |
+} |
+ |
// ----------- Write |
TEST_F(SequencedSocketDataTest, SingleSyncWriteTooEarly) { |