Index: webrtc/modules/rtp_rtcp/source/rtcp_packet/fir_unittest.cc |
diff --git a/webrtc/modules/rtp_rtcp/source/rtcp_packet/fir_unittest.cc b/webrtc/modules/rtp_rtcp/source/rtcp_packet/fir_unittest.cc |
index a4032538c8cb898ec13338443fc6b1ff288818e4..8c48a83a7fe43077113803b37e567b8b551d61dd 100644 |
--- a/webrtc/modules/rtp_rtcp/source/rtcp_packet/fir_unittest.cc |
+++ b/webrtc/modules/rtp_rtcp/source/rtcp_packet/fir_unittest.cc |
@@ -12,6 +12,7 @@ |
#include "testing/gmock/include/gmock/gmock.h" |
#include "testing/gtest/include/gtest/gtest.h" |
+#include "webrtc/test/rtcp_packet_parser.h" |
using testing::AllOf; |
using testing::ElementsAre; |
@@ -20,32 +21,24 @@ using testing::Eq; |
using testing::Field; |
using testing::make_tuple; |
using webrtc::rtcp::Fir; |
-using webrtc::RTCPUtility::RtcpCommonHeader; |
-using webrtc::RTCPUtility::RtcpParseCommonHeader; |
namespace webrtc { |
namespace { |
-const uint32_t kSenderSsrc = 0x12345678; |
-const uint32_t kRemoteSsrc = 0x23456789; |
-const uint8_t kSeqNr = 13; |
+constexpr uint32_t kSenderSsrc = 0x12345678; |
+constexpr uint32_t kRemoteSsrc = 0x23456789; |
+constexpr uint8_t kSeqNr = 13; |
// Manually created Fir packet matching constants above. |
-const uint8_t kPacket[] = {0x84, 206, 0x00, 0x04, |
- 0x12, 0x34, 0x56, 0x78, |
- 0x00, 0x00, 0x00, 0x00, |
- 0x23, 0x45, 0x67, 0x89, |
- 0x0d, 0x00, 0x00, 0x00}; |
- |
-bool ParseFir(const uint8_t* buffer, size_t length, Fir* fir) { |
- RtcpCommonHeader header; |
- EXPECT_TRUE(RtcpParseCommonHeader(buffer, length, &header)); |
- EXPECT_THAT(header.BlockSize(), Eq(length)); |
- return fir->Parse(header, buffer + RtcpCommonHeader::kHeaderSizeBytes); |
-} |
+constexpr uint8_t kPacket[] = {0x84, 206, 0x00, 0x04, |
+ 0x12, 0x34, 0x56, 0x78, |
+ 0x00, 0x00, 0x00, 0x00, |
+ 0x23, 0x45, 0x67, 0x89, |
+ 0x0d, 0x00, 0x00, 0x00}; |
+} // namespace |
TEST(RtcpPacketFirTest, Parse) { |
Fir mutable_parsed; |
- EXPECT_TRUE(ParseFir(kPacket, sizeof(kPacket), &mutable_parsed)); |
+ EXPECT_TRUE(test::ParseSinglePacket(kPacket, &mutable_parsed)); |
const Fir& parsed = mutable_parsed; // Read values from constant object. |
EXPECT_EQ(kSenderSsrc, parsed.sender_ssrc()); |
@@ -73,7 +66,7 @@ TEST(RtcpPacketFirTest, TwoFciEntries) { |
rtc::Buffer packet = fir.Build(); |
Fir parsed; |
- EXPECT_TRUE(ParseFir(packet.data(), packet.size(), &parsed)); |
+ EXPECT_TRUE(test::ParseSinglePacket(packet, &parsed)); |
EXPECT_EQ(kSenderSsrc, parsed.sender_ssrc()); |
EXPECT_THAT(parsed.requests(), |
@@ -84,42 +77,23 @@ TEST(RtcpPacketFirTest, TwoFciEntries) { |
} |
TEST(RtcpPacketFirTest, ParseFailsOnZeroFciEntries) { |
- Fir fir; |
- fir.From(kSenderSsrc); |
- fir.WithRequestTo(kRemoteSsrc, kSeqNr); |
- |
- rtc::Buffer packet = fir.Build(); |
- |
- RtcpCommonHeader header; |
- RtcpParseCommonHeader(packet.data(), packet.size(), &header); |
- ASSERT_EQ(16u, header.payload_size_bytes); // Common: 8, 1xfci: 8. |
- header.payload_size_bytes = 8; // Common: 8, 0xfcis. |
- |
+ constexpr uint8_t kPacketWithoutFci[] = {0x84, 206, 0x00, 0x02, |
+ 0x12, 0x34, 0x56, 0x78, |
+ 0x00, 0x00, 0x00, 0x00}; |
Fir parsed; |
- EXPECT_FALSE(parsed.Parse( |
- header, packet.data() + RtcpCommonHeader::kHeaderSizeBytes)); |
+ EXPECT_FALSE(test::ParseSinglePacket(kPacketWithoutFci, &parsed)); |
} |
TEST(RtcpPacketFirTest, ParseFailsOnFractionalFciEntries) { |
- Fir fir; |
- fir.From(kSenderSsrc); |
- fir.WithRequestTo(kRemoteSsrc, kSeqNr); |
- fir.WithRequestTo(kRemoteSsrc + 1, kSeqNr + 1); |
+ constexpr uint8_t kPacketWithOneAndHalfFci[] = {0x84, 206, 0x00, 0x05, |
+ 0x12, 0x34, 0x56, 0x78, |
+ 0x00, 0x00, 0x00, 0x00, |
+ 0x23, 0x45, 0x67, 0x89, |
+ 0x0d, 0x00, 0x00, 0x00, |
+ 'h', 'a', 'l', 'f'}; |
- rtc::Buffer packet = fir.Build(); |
- |
- RtcpCommonHeader header; |
- RtcpParseCommonHeader(packet.data(), packet.size(), &header); |
- ASSERT_EQ(24u, header.payload_size_bytes); // Common: 8, 2xfcis: 16. |
- |
- const uint8_t* payload = packet.data() + RtcpCommonHeader::kHeaderSizeBytes; |
- Fir good; |
- EXPECT_TRUE(good.Parse(header, payload)); |
- for (size_t i = 1; i < 8; ++i) { |
- header.payload_size_bytes = 16 + i; |
- Fir bad; |
- EXPECT_FALSE(bad.Parse(header, payload)); |
- } |
+ Fir parsed; |
+ EXPECT_FALSE(test::ParseSinglePacket(kPacketWithOneAndHalfFci, &parsed)); |
} |
-} // namespace |
+ |
} // namespace webrtc |