Chromium Code Reviews| Index: talk/app/webrtc/datachannel_unittest.cc |
| diff --git a/talk/app/webrtc/datachannel_unittest.cc b/talk/app/webrtc/datachannel_unittest.cc |
| index bc4f81c09f7e121519798112b4cf252dd54d038f..1198fe123560d96298e5b3f9d4e9ee7df9b26195 100644 |
| --- a/talk/app/webrtc/datachannel_unittest.cc |
| +++ b/talk/app/webrtc/datachannel_unittest.cc |
| @@ -35,12 +35,17 @@ using webrtc::DataChannel; |
| class FakeDataChannelObserver : public webrtc::DataChannelObserver { |
| public: |
| FakeDataChannelObserver() |
| - : messages_received_(0), on_state_change_count_(0) {} |
| + : messages_received_(0), on_state_change_count_(0), |
| + on_buffered_amount_change_count_(0) {} |
|
juberti1
2015/06/25 18:56:22
fix indent - 1 initializer per line
bemasc2
2015/06/25 19:56:08
Done.
|
| void OnStateChange() { |
| ++on_state_change_count_; |
| } |
| + void OnBufferedAmountChange(uint64 previous_amount) { |
| + ++on_buffered_amount_change_count_; |
| + } |
| + |
| void OnMessage(const webrtc::DataBuffer& buffer) { |
| ++messages_received_; |
| } |
| @@ -53,13 +58,22 @@ class FakeDataChannelObserver : public webrtc::DataChannelObserver { |
| on_state_change_count_ = 0; |
| } |
| + void ResetOnBufferedAmountChangeCount() { |
| + on_buffered_amount_change_count_ = 0; |
| + } |
| + |
| size_t on_state_change_count() const { |
| return on_state_change_count_; |
| } |
| + size_t on_buffered_amount_change_count() const { |
| + return on_buffered_amount_change_count_; |
| + } |
| + |
| private: |
| size_t messages_received_; |
| size_t on_state_change_count_; |
| + size_t on_buffered_amount_change_count_; |
| }; |
| class SctpDataChannelTest : public testing::Test { |
| @@ -133,11 +147,13 @@ TEST_F(SctpDataChannelTest, StateTransition) { |
| // Tests that DataChannel::buffered_amount() is correct after the channel is |
| // blocked. |
| TEST_F(SctpDataChannelTest, BufferedAmountWhenBlocked) { |
| + AddObserver(); |
| SetChannelReady(); |
| webrtc::DataBuffer buffer("abcd"); |
| EXPECT_TRUE(webrtc_data_channel_->Send(buffer)); |
| EXPECT_EQ(0U, webrtc_data_channel_->buffered_amount()); |
| + EXPECT_EQ(0U, observer_->on_buffered_amount_change_count()); |
| provider_.set_send_blocked(true); |
| @@ -147,37 +163,46 @@ TEST_F(SctpDataChannelTest, BufferedAmountWhenBlocked) { |
| } |
| EXPECT_EQ(buffer.data.size() * number_of_packets, |
| webrtc_data_channel_->buffered_amount()); |
| + EXPECT_EQ(number_of_packets, observer_->on_buffered_amount_change_count()); |
| } |
| // Tests that the queued data are sent when the channel transitions from blocked |
| // to unblocked. |
| TEST_F(SctpDataChannelTest, QueuedDataSentWhenUnblocked) { |
| + AddObserver(); |
| SetChannelReady(); |
| webrtc::DataBuffer buffer("abcd"); |
| provider_.set_send_blocked(true); |
| EXPECT_TRUE(webrtc_data_channel_->Send(buffer)); |
| + EXPECT_EQ(1U, observer_->on_buffered_amount_change_count()); |
| + |
| provider_.set_send_blocked(false); |
| SetChannelReady(); |
| EXPECT_EQ(0U, webrtc_data_channel_->buffered_amount()); |
| + EXPECT_EQ(2U, observer_->on_buffered_amount_change_count()); |
| } |
| // Tests that no crash when the channel is blocked right away while trying to |
| // send queued data. |
| TEST_F(SctpDataChannelTest, BlockedWhenSendQueuedDataNoCrash) { |
| + AddObserver(); |
| SetChannelReady(); |
| webrtc::DataBuffer buffer("abcd"); |
| provider_.set_send_blocked(true); |
| EXPECT_TRUE(webrtc_data_channel_->Send(buffer)); |
| + EXPECT_EQ(1U, observer_->on_buffered_amount_change_count()); |
| // Set channel ready while it is still blocked. |
| SetChannelReady(); |
| EXPECT_EQ(buffer.size(), webrtc_data_channel_->buffered_amount()); |
| + EXPECT_EQ(1U, observer_->on_buffered_amount_change_count()); |
| // Unblock the channel to send queued data again, there should be no crash. |
| provider_.set_send_blocked(false); |
| SetChannelReady(); |
| EXPECT_EQ(0U, webrtc_data_channel_->buffered_amount()); |
| + EXPECT_EQ(2U, observer_->on_buffered_amount_change_count()); |
| } |
| // Tests that the queued control message is sent when channel is ready. |