| Index: webrtc/modules/rtp_rtcp/source/rtcp_packet/nack_unittest.cc
|
| diff --git a/webrtc/modules/rtp_rtcp/source/rtcp_packet/nack_unittest.cc b/webrtc/modules/rtp_rtcp/source/rtcp_packet/nack_unittest.cc
|
| index f32bdc7b863a17c86b46e5dd739210c0dd39be17..d335d66bf89fd596394206f3e20a686a87405a9f 100644
|
| --- a/webrtc/modules/rtp_rtcp/source/rtcp_packet/nack_unittest.cc
|
| +++ b/webrtc/modules/rtp_rtcp/source/rtcp_packet/nack_unittest.cc
|
| @@ -12,36 +12,48 @@
|
|
|
| #include "testing/gmock/include/gmock/gmock.h"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
| +#include "webrtc/test/rtcp_packet_parser.h"
|
| +
|
| +namespace webrtc {
|
| +namespace {
|
|
|
| using ::testing::_;
|
| using ::testing::ElementsAreArray;
|
| using ::testing::Invoke;
|
| +using ::testing::make_tuple;
|
| using ::testing::UnorderedElementsAreArray;
|
| -
|
| -using webrtc::rtcp::Nack;
|
| -using webrtc::RTCPUtility::RtcpCommonHeader;
|
| -using webrtc::RTCPUtility::RtcpParseCommonHeader;
|
| -
|
| -namespace webrtc {
|
| -namespace {
|
| -
|
| -const uint32_t kSenderSsrc = 0x12345678;
|
| -const uint32_t kRemoteSsrc = 0x23456789;
|
| -
|
| -const uint16_t kList[] = {0, 1, 3, 8, 16};
|
| -const size_t kListLength = sizeof(kList) / sizeof(kList[0]);
|
| -const uint8_t kPacket[] = {0x81, 205, 0x00, 0x03, 0x12, 0x34, 0x56, 0x78,
|
| - 0x23, 0x45, 0x67, 0x89, 0x00, 0x00, 0x80, 0x85};
|
| -const size_t kPacketLength = sizeof(kPacket);
|
| -
|
| -const uint16_t kWrapList[] = {0xffdc, 0xffec, 0xfffe, 0xffff, 0x0000,
|
| - 0x0001, 0x0003, 0x0014, 0x0064};
|
| -const size_t kWrapListLength = sizeof(kWrapList) / sizeof(kWrapList[0]);
|
| -const uint8_t kWrapPacket[] = {0x81, 205, 0x00, 0x06, 0x12, 0x34, 0x56, 0x78,
|
| - 0x23, 0x45, 0x67, 0x89, 0xff, 0xdc, 0x80, 0x00,
|
| - 0xff, 0xfe, 0x00, 0x17, 0x00, 0x14, 0x00, 0x00,
|
| - 0x00, 0x64, 0x00, 0x00};
|
| -const size_t kWrapPacketLength = sizeof(kWrapPacket);
|
| +using ::webrtc::rtcp::Nack;
|
| +
|
| +constexpr uint32_t kSenderSsrc = 0x12345678;
|
| +constexpr uint32_t kRemoteSsrc = 0x23456789;
|
| +
|
| +constexpr uint16_t kList[] = {0, 1, 3, 8, 16};
|
| +constexpr size_t kListLength = sizeof(kList) / sizeof(kList[0]);
|
| +constexpr uint8_t kVersionBits = 2 << 6;
|
| +// clang-format off
|
| +constexpr uint8_t kPacket[] = {
|
| + kVersionBits | Nack::kFeedbackMessageType, Nack::kPacketType, 0, 3,
|
| + 0x12, 0x34, 0x56, 0x78,
|
| + 0x23, 0x45, 0x67, 0x89,
|
| + 0x00, 0x00, 0x80, 0x85};
|
| +
|
| +constexpr uint16_t kWrapList[] = {0xffdc, 0xffec, 0xfffe, 0xffff, 0x0000,
|
| + 0x0001, 0x0003, 0x0014, 0x0064};
|
| +constexpr size_t kWrapListLength = sizeof(kWrapList) / sizeof(kWrapList[0]);
|
| +constexpr uint8_t kWrapPacket[] = {
|
| + kVersionBits | Nack::kFeedbackMessageType, Nack::kPacketType, 0, 6,
|
| + 0x12, 0x34, 0x56, 0x78,
|
| + 0x23, 0x45, 0x67, 0x89,
|
| + 0xff, 0xdc, 0x80, 0x00,
|
| + 0xff, 0xfe, 0x00, 0x17,
|
| + 0x00, 0x14, 0x00, 0x00,
|
| + 0x00, 0x64, 0x00, 0x00};
|
| +constexpr uint8_t kTooSmallPacket[] = {
|
| + kVersionBits | Nack::kFeedbackMessageType, Nack::kPacketType, 0, 2,
|
| + 0x12, 0x34, 0x56, 0x78,
|
| + 0x23, 0x45, 0x67, 0x89};
|
| +// clang-format on
|
| +} // namespace
|
|
|
| TEST(RtcpPacketNackTest, Create) {
|
| Nack nack;
|
| @@ -51,18 +63,13 @@ TEST(RtcpPacketNackTest, Create) {
|
|
|
| rtc::Buffer packet = nack.Build();
|
|
|
| - EXPECT_EQ(kPacketLength, packet.size());
|
| - EXPECT_EQ(0, memcmp(kPacket, packet.data(), kPacketLength));
|
| + EXPECT_THAT(make_tuple(packet.data(), packet.size()),
|
| + ElementsAreArray(kPacket));
|
| }
|
|
|
| TEST(RtcpPacketNackTest, Parse) {
|
| - RtcpCommonHeader header;
|
| - EXPECT_TRUE(RtcpParseCommonHeader(kPacket, kPacketLength, &header));
|
| - EXPECT_EQ(kPacketLength, header.BlockSize());
|
| Nack parsed;
|
| -
|
| - EXPECT_TRUE(
|
| - parsed.Parse(header, kPacket + RtcpCommonHeader::kHeaderSizeBytes));
|
| + EXPECT_TRUE(test::ParseSinglePacket(kPacket, &parsed));
|
| const Nack& const_parsed = parsed;
|
|
|
| EXPECT_EQ(kSenderSsrc, const_parsed.sender_ssrc());
|
| @@ -78,18 +85,13 @@ TEST(RtcpPacketNackTest, CreateWrap) {
|
|
|
| rtc::Buffer packet = nack.Build();
|
|
|
| - EXPECT_EQ(kWrapPacketLength, packet.size());
|
| - EXPECT_EQ(0, memcmp(kWrapPacket, packet.data(), kWrapPacketLength));
|
| + EXPECT_THAT(make_tuple(packet.data(), packet.size()),
|
| + ElementsAreArray(kWrapPacket));
|
| }
|
|
|
| TEST(RtcpPacketNackTest, ParseWrap) {
|
| - RtcpCommonHeader header;
|
| - EXPECT_TRUE(RtcpParseCommonHeader(kWrapPacket, kWrapPacketLength, &header));
|
| - EXPECT_EQ(kWrapPacketLength, header.BlockSize());
|
| -
|
| Nack parsed;
|
| - EXPECT_TRUE(
|
| - parsed.Parse(header, kWrapPacket + RtcpCommonHeader::kHeaderSizeBytes));
|
| + EXPECT_TRUE(test::ParseSinglePacket(kWrapPacket, &parsed));
|
|
|
| EXPECT_EQ(kSenderSsrc, parsed.sender_ssrc());
|
| EXPECT_EQ(kRemoteSsrc, parsed.media_ssrc());
|
| @@ -109,10 +111,7 @@ TEST(RtcpPacketNackTest, BadOrder) {
|
| rtc::Buffer packet = nack.Build();
|
|
|
| Nack parsed;
|
| - RtcpCommonHeader header;
|
| - EXPECT_TRUE(RtcpParseCommonHeader(packet.data(), packet.size(), &header));
|
| - EXPECT_TRUE(parsed.Parse(
|
| - header, packet.data() + RtcpCommonHeader::kHeaderSizeBytes));
|
| + EXPECT_TRUE(test::ParseSinglePacket(packet, &parsed));
|
|
|
| EXPECT_EQ(kSenderSsrc, parsed.sender_ssrc());
|
| EXPECT_EQ(kRemoteSsrc, parsed.media_ssrc());
|
| @@ -136,12 +135,8 @@ TEST(RtcpPacketNackTest, CreateFragmented) {
|
| public:
|
| explicit NackVerifier(std::vector<uint16_t> ids) : ids_(ids) {}
|
| void operator()(uint8_t* data, size_t length) {
|
| - RtcpCommonHeader header;
|
| - EXPECT_TRUE(RtcpParseCommonHeader(data, length, &header));
|
| - EXPECT_EQ(length, header.BlockSize());
|
| Nack nack;
|
| - EXPECT_TRUE(
|
| - nack.Parse(header, data + RtcpCommonHeader::kHeaderSizeBytes));
|
| + EXPECT_TRUE(test::ParseSinglePacket(data, length, &nack));
|
| EXPECT_EQ(kSenderSsrc, nack.sender_ssrc());
|
| EXPECT_EQ(kRemoteSsrc, nack.media_ssrc());
|
| EXPECT_THAT(nack.packet_ids(), ElementsAreArray(ids_));
|
| @@ -176,13 +171,8 @@ TEST(RtcpPacketNackTest, CreateFailsWithTooSmallBuffer) {
|
| }
|
|
|
| TEST(RtcpPacketNackTest, ParseFailsWithTooSmallBuffer) {
|
| - RtcpCommonHeader header;
|
| - EXPECT_TRUE(RtcpParseCommonHeader(kPacket, kPacketLength, &header));
|
| - header.payload_size_bytes--; // Damage the packet
|
| Nack parsed;
|
| - EXPECT_FALSE(
|
| - parsed.Parse(header, kPacket + RtcpCommonHeader::kHeaderSizeBytes));
|
| + EXPECT_FALSE(test::ParseSinglePacket(kTooSmallPacket, &parsed));
|
| }
|
|
|
| -} // namespace
|
| } // namespace webrtc
|
|
|