Chromium Code Reviews| Index: webrtc/modules/rtp_rtcp/source/rtp_packet_history_unittest.cc |
| diff --git a/webrtc/modules/rtp_rtcp/source/rtp_packet_history_unittest.cc b/webrtc/modules/rtp_rtcp/source/rtp_packet_history_unittest.cc |
| index 2a7caf188f69c2df0a2c85b6f331f7a0ad1337b0..8e4fdc470664e37012b586cea1d888b207633552 100644 |
| --- a/webrtc/modules/rtp_rtcp/source/rtp_packet_history_unittest.cc |
| +++ b/webrtc/modules/rtp_rtcp/source/rtp_packet_history_unittest.cc |
| @@ -15,6 +15,7 @@ |
| #include "webrtc/modules/rtp_rtcp/include/rtp_rtcp_defines.h" |
| #include "webrtc/modules/rtp_rtcp/source/rtp_packet_to_send.h" |
| #include "webrtc/system_wrappers/include/clock.h" |
| +#include "webrtc/test/gmock.h" |
| #include "webrtc/test/gtest.h" |
| #include "webrtc/typedefs.h" |
| @@ -219,4 +220,59 @@ TEST_F(RtpPacketHistoryTest, FullExpansion) { |
| } |
| } |
| +namespace { |
| + |
| +class MockRtpPacketToSend : public RtpPacketToSend { |
| + public: |
| + MockRtpPacketToSend() : RtpPacketToSend(nullptr) {} |
| + virtual ~MockRtpPacketToSend() {} |
| + MOCK_CONST_METHOD0(headers_size, size_t()); |
| + MOCK_CONST_METHOD0(size, size_t()); |
|
danilchap
2017/03/28 15:10:58
I'm not sure it is good idea to make cheap accesso
minyue-webrtc
2017/03/29 11:39:44
Fully agreed. I think const header size if enough
danilchap
2017/03/29 12:12:53
I'm sorry for making interface of the rtp packet c
|
| +}; |
| + |
| +using ::testing::Return; |
| +using ::testing::StrictMock; |
| + |
| +} // namespace |
| + |
| +TEST_F(RtpPacketHistoryTest, GetBestFittingPacket) { |
| + constexpr int64_t kCaptureTime1 = 1234; |
| + constexpr int64_t kCaptureTime2 = 5678; |
| + constexpr int64_t kCaptureTime3 = 9000; |
| + constexpr size_t kMinPacketRequestBytes = 50; |
| + |
| + hist_.SetStorePacketsStatus(true, 3); |
| + |
| + std::unique_ptr<MockRtpPacketToSend> packet; |
| + |
| + packet.reset(new StrictMock<MockRtpPacketToSend>()); |
| + packet->set_capture_time_ms(kCaptureTime1); |
| + EXPECT_CALL(*packet, headers_size()).WillRepeatedly(Return(3)); |
| + EXPECT_CALL(*packet, size()) |
| + .WillRepeatedly(Return(kMinPacketRequestBytes + 1)); |
| + hist_.PutRtpPacket(std::move(packet), kAllowRetransmission, false); |
| + |
| + packet.reset(new StrictMock<MockRtpPacketToSend>()); |
| + packet->set_capture_time_ms(kCaptureTime2); |
| + EXPECT_CALL(*packet, headers_size()).WillRepeatedly(Return(2)); |
| + EXPECT_CALL(*packet, size()) |
| + .WillRepeatedly(Return(kMinPacketRequestBytes + 2)); |
| + hist_.PutRtpPacket(std::move(packet), kAllowRetransmission, false); |
| + |
| + packet.reset(new StrictMock<MockRtpPacketToSend>()); |
| + packet->set_capture_time_ms(kCaptureTime3); |
| + EXPECT_CALL(*packet, headers_size()).WillRepeatedly(Return(1)); |
| + EXPECT_CALL(*packet, size()) |
| + .WillRepeatedly(Return(kMinPacketRequestBytes + 3)); |
| + hist_.PutRtpPacket(std::move(packet), kAllowRetransmission, false); |
| + |
| + std::unique_ptr<RtpPacketToSend> fit = |
| + hist_.GetBestFittingPacket(kMinPacketRequestBytes, true); |
|
danilchap
2017/03/28 15:10:58
since last parameter of the GetBestFittingPacket m
|
| + ASSERT_TRUE(fit); |
| + EXPECT_EQ(kCaptureTime1, fit->capture_time_ms()); |
| + fit = hist_.GetBestFittingPacket(kMinPacketRequestBytes, false); |
| + ASSERT_TRUE(fit); |
| + EXPECT_EQ(kCaptureTime2, fit->capture_time_ms()); |
| +} |
| + |
| } // namespace webrtc |