Index: webrtc/modules/rtp_rtcp/source/rtcp_packet/transport_feedback_unittest.cc |
diff --git a/webrtc/modules/rtp_rtcp/source/rtcp_packet/transport_feedback_unittest.cc b/webrtc/modules/rtp_rtcp/source/rtcp_packet/transport_feedback_unittest.cc |
index 76b51df0ef3b63cf76ece586e0ee1acc4969f20f..03aab688055015118182aaf4e402b9ac74861708 100644 |
--- a/webrtc/modules/rtp_rtcp/source/rtcp_packet/transport_feedback_unittest.cc |
+++ b/webrtc/modules/rtp_rtcp/source/rtcp_packet/transport_feedback_unittest.cc |
@@ -454,5 +454,32 @@ TEST(RtcpPacketTest, TransportFeedback_Padding) { |
EXPECT_EQ(kExpectedSizeWords * 4, packet->Length()); // Padding not included. |
} |
+TEST(RtcpPacketTest, TransportFeedback_HeyWhatsGoingOn) { |
stefan-webrtc
2015/09/30 10:45:27
There must be a better name than this? :)
sprang_webrtc
2015/09/30 11:09:27
Oops. Fixed. :)
|
+ const int kOneBitVectorCapacity = 14; |
+ const int kTwoBitVectorCapacity = 7; |
+ const int64_t kLargeTimeDelta = |
+ TransportFeedback::kDeltaScaleFactor * (1 << 8); |
+ |
+ // Test that a number of small deltas followed by a large delta results in a |
+ // correct split into multiple chunks, as needed. |
+ |
+ for (int num_small_deltas = kTwoBitVectorCapacity - 1; |
stefan-webrtc
2015/09/30 10:45:27
I don't follow why you don't start this counter on
sprang_webrtc
2015/09/30 11:09:27
Nah, only that that range wasn't quite so suspect.
|
+ num_small_deltas <= kOneBitVectorCapacity + 1; ++num_small_deltas) { |
+ TransportFeedback feedback; |
+ feedback.WithBase(0, 0); |
+ for (int i = 0; i < num_small_deltas; ++i) |
+ feedback.WithReceivedPacket(i, i * 1000); |
+ feedback.WithReceivedPacket(num_small_deltas, |
+ num_small_deltas * 1000 + kLargeTimeDelta); |
+ |
+ rtc::scoped_ptr<rtcp::RawPacket> serialized_packet = feedback.Build(); |
+ EXPECT_TRUE(serialized_packet.get() != nullptr); |
+ rtc::scoped_ptr<TransportFeedback> deserialized_packet = |
+ TransportFeedback::ParseFrom(serialized_packet->Buffer(), |
+ serialized_packet->Length()); |
+ EXPECT_TRUE(deserialized_packet.get() != nullptr); |
+ } |
+} |
+ |
} // namespace |
} // namespace webrtc |