Index: remoting/protocol/message_reader_unittest.cc |
diff --git a/remoting/protocol/message_reader_unittest.cc b/remoting/protocol/message_reader_unittest.cc |
index c789b96867eb2e74bbe1e459687c729fc13dd543..f4e2e0c951f59a54df4b0afd52adb0b3494ce310 100644 |
--- a/remoting/protocol/message_reader_unittest.cc |
+++ b/remoting/protocol/message_reader_unittest.cc |
@@ -43,7 +43,20 @@ class MockMessageReceivedCallback { |
class MessageReaderTest : public testing::Test { |
public: |
MessageReaderTest() |
- : run_task_finished_(false, false) { |
+ : in_callback_(false) { |
+ } |
+ |
+ // Following two methods are used by the ReadFromCallback test. |
+ void AddSecondMessage(const base::Closure& task) { |
+ AddMessage(kTestMessage2); |
+ in_callback_ = true; |
+ task.Run(); |
+ in_callback_ = false; |
+ } |
+ |
+ void OnSecondMessage(const base::Closure& task) { |
+ EXPECT_FALSE(in_callback_); |
+ task.Run(); |
} |
protected: |
@@ -73,11 +86,6 @@ class MessageReaderTest : public testing::Test { |
return result == expected; |
} |
- void RunClosure(const base::Closure& task) { |
- task.Run(); |
- run_task_finished_.Signal(); |
- } |
- |
void OnMessage(scoped_ptr<CompoundBuffer> buffer, |
const base::Closure& done_callback) { |
messages_.push_back(buffer.release()); |
@@ -85,11 +93,11 @@ class MessageReaderTest : public testing::Test { |
} |
MessageLoop message_loop_; |
- base::WaitableEvent run_task_finished_; |
scoped_ptr<MessageReader> reader_; |
FakeSocket socket_; |
MockMessageReceivedCallback callback_; |
std::vector<CompoundBuffer*> messages_; |
+ bool in_callback_; |
}; |
// Receive one message and process it with delay |
@@ -266,5 +274,19 @@ TEST_F(MessageReaderTest, ReadError) { |
InitReader(); |
} |
+TEST_F(MessageReaderTest, ReadFromCallback) { |
+ AddMessage(kTestMessage1); |
+ |
+ EXPECT_CALL(callback_, OnMessage(_)) |
+ .Times(2) |
+ .WillOnce(Invoke(this, &MessageReaderTest::AddSecondMessage)) |
+ .WillOnce(Invoke(this, &MessageReaderTest::OnSecondMessage)); |
+ |
+ InitReader(); |
+ message_loop_.RunAllPending(); |
+ |
+ EXPECT_TRUE(socket_.read_pending()); |
+} |
+ |
} // namespace protocol |
} // namespace remoting |