Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(104)

Side by Side Diff: webrtc/modules/rtp_rtcp/source/rtcp_packet/fir_unittest.cc

Issue 1696203002: [rtp_rtcp] rtc::scoped_ptr<rtcp::RawPacket> replaced with rtc::Buffer (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
11 #include "webrtc/modules/rtp_rtcp/source/rtcp_packet/fir.h" 11 #include "webrtc/modules/rtp_rtcp/source/rtcp_packet/fir.h"
12 12
13 #include "testing/gmock/include/gmock/gmock.h" 13 #include "testing/gmock/include/gmock/gmock.h"
14 #include "testing/gtest/include/gtest/gtest.h" 14 #include "testing/gtest/include/gtest/gtest.h"
15 15
16 using testing::AllOf; 16 using testing::AllOf;
17 using testing::ElementsAre; 17 using testing::ElementsAre;
18 using testing::ElementsAreArray; 18 using testing::ElementsAreArray;
19 using testing::Eq; 19 using testing::Eq;
20 using testing::Field; 20 using testing::Field;
21 using testing::make_tuple; 21 using testing::make_tuple;
22 using webrtc::rtcp::Fir; 22 using webrtc::rtcp::Fir;
23 using webrtc::rtcp::RawPacket;
24 using webrtc::RTCPUtility::RtcpCommonHeader; 23 using webrtc::RTCPUtility::RtcpCommonHeader;
25 using webrtc::RTCPUtility::RtcpParseCommonHeader; 24 using webrtc::RTCPUtility::RtcpParseCommonHeader;
26 25
27 namespace webrtc { 26 namespace webrtc {
28 namespace { 27 namespace {
29 28
30 const uint32_t kSenderSsrc = 0x12345678; 29 const uint32_t kSenderSsrc = 0x12345678;
31 const uint32_t kRemoteSsrc = 0x23456789; 30 const uint32_t kRemoteSsrc = 0x23456789;
32 const uint8_t kSeqNr = 13; 31 const uint8_t kSeqNr = 13;
33 // Manually created Fir packet matching constants above. 32 // Manually created Fir packet matching constants above.
(...skipping 19 matching lines...) Expand all
53 EXPECT_THAT(parsed.requests(), 52 EXPECT_THAT(parsed.requests(),
54 ElementsAre(AllOf(Field(&Fir::Request::ssrc, Eq(kRemoteSsrc)), 53 ElementsAre(AllOf(Field(&Fir::Request::ssrc, Eq(kRemoteSsrc)),
55 Field(&Fir::Request::seq_nr, Eq(kSeqNr))))); 54 Field(&Fir::Request::seq_nr, Eq(kSeqNr)))));
56 } 55 }
57 56
58 TEST(RtcpPacketFirTest, Create) { 57 TEST(RtcpPacketFirTest, Create) {
59 Fir fir; 58 Fir fir;
60 fir.From(kSenderSsrc); 59 fir.From(kSenderSsrc);
61 fir.WithRequestTo(kRemoteSsrc, kSeqNr); 60 fir.WithRequestTo(kRemoteSsrc, kSeqNr);
62 61
63 rtc::scoped_ptr<RawPacket> packet = fir.Build(); 62 rtc::Buffer packet = fir.Build();
64 63
65 EXPECT_THAT(make_tuple(packet->Buffer(), packet->Length()), 64 EXPECT_THAT(make_tuple(packet.data(), packet.size()),
66 ElementsAreArray(kPacket)); 65 ElementsAreArray(kPacket));
67 } 66 }
68 67
69 TEST(RtcpPacketFirTest, TwoFciEntries) { 68 TEST(RtcpPacketFirTest, TwoFciEntries) {
70 Fir fir; 69 Fir fir;
71 fir.From(kSenderSsrc); 70 fir.From(kSenderSsrc);
72 fir.WithRequestTo(kRemoteSsrc, kSeqNr); 71 fir.WithRequestTo(kRemoteSsrc, kSeqNr);
73 fir.WithRequestTo(kRemoteSsrc + 1, kSeqNr + 1); 72 fir.WithRequestTo(kRemoteSsrc + 1, kSeqNr + 1);
74 73
75 rtc::scoped_ptr<RawPacket> packet = fir.Build(); 74 rtc::Buffer packet = fir.Build();
76 Fir parsed; 75 Fir parsed;
77 EXPECT_TRUE(ParseFir(packet->Buffer(), packet->Length(), &parsed)); 76 EXPECT_TRUE(ParseFir(packet.data(), packet.size(), &parsed));
78 77
79 EXPECT_EQ(kSenderSsrc, parsed.sender_ssrc()); 78 EXPECT_EQ(kSenderSsrc, parsed.sender_ssrc());
80 EXPECT_THAT(parsed.requests(), 79 EXPECT_THAT(parsed.requests(),
81 ElementsAre(AllOf(Field(&Fir::Request::ssrc, Eq(kRemoteSsrc)), 80 ElementsAre(AllOf(Field(&Fir::Request::ssrc, Eq(kRemoteSsrc)),
82 Field(&Fir::Request::seq_nr, Eq(kSeqNr))), 81 Field(&Fir::Request::seq_nr, Eq(kSeqNr))),
83 AllOf(Field(&Fir::Request::ssrc, Eq(kRemoteSsrc + 1)), 82 AllOf(Field(&Fir::Request::ssrc, Eq(kRemoteSsrc + 1)),
84 Field(&Fir::Request::seq_nr, Eq(kSeqNr + 1))))); 83 Field(&Fir::Request::seq_nr, Eq(kSeqNr + 1)))));
85 } 84 }
86 85
87 TEST(RtcpPacketFirTest, ParseFailsOnZeroFciEntries) { 86 TEST(RtcpPacketFirTest, ParseFailsOnZeroFciEntries) {
88 Fir fir; 87 Fir fir;
89 fir.From(kSenderSsrc); 88 fir.From(kSenderSsrc);
90 fir.WithRequestTo(kRemoteSsrc, kSeqNr); 89 fir.WithRequestTo(kRemoteSsrc, kSeqNr);
91 90
92 rtc::scoped_ptr<RawPacket> packet = fir.Build(); 91 rtc::Buffer packet = fir.Build();
93 92
94 RtcpCommonHeader header; 93 RtcpCommonHeader header;
95 RtcpParseCommonHeader(packet->Buffer(), packet->Length(), &header); 94 RtcpParseCommonHeader(packet.data(), packet.size(), &header);
96 ASSERT_EQ(16u, header.payload_size_bytes); // Common: 8, 1xfci: 8. 95 ASSERT_EQ(16u, header.payload_size_bytes); // Common: 8, 1xfci: 8.
97 header.payload_size_bytes = 8; // Common: 8, 0xfcis. 96 header.payload_size_bytes = 8; // Common: 8, 0xfcis.
98 97
99 Fir parsed; 98 Fir parsed;
100 EXPECT_FALSE(parsed.Parse( 99 EXPECT_FALSE(parsed.Parse(
101 header, packet->Buffer() + RtcpCommonHeader::kHeaderSizeBytes)); 100 header, packet.data() + RtcpCommonHeader::kHeaderSizeBytes));
102 } 101 }
103 102
104 TEST(RtcpPacketFirTest, ParseFailsOnFractionalFciEntries) { 103 TEST(RtcpPacketFirTest, ParseFailsOnFractionalFciEntries) {
105 Fir fir; 104 Fir fir;
106 fir.From(kSenderSsrc); 105 fir.From(kSenderSsrc);
107 fir.WithRequestTo(kRemoteSsrc, kSeqNr); 106 fir.WithRequestTo(kRemoteSsrc, kSeqNr);
108 fir.WithRequestTo(kRemoteSsrc + 1, kSeqNr + 1); 107 fir.WithRequestTo(kRemoteSsrc + 1, kSeqNr + 1);
109 108
110 rtc::scoped_ptr<RawPacket> packet = fir.Build(); 109 rtc::Buffer packet = fir.Build();
111 110
112 RtcpCommonHeader header; 111 RtcpCommonHeader header;
113 RtcpParseCommonHeader(packet->Buffer(), packet->Length(), &header); 112 RtcpParseCommonHeader(packet.data(), packet.size(), &header);
114 ASSERT_EQ(24u, header.payload_size_bytes); // Common: 8, 2xfcis: 16. 113 ASSERT_EQ(24u, header.payload_size_bytes); // Common: 8, 2xfcis: 16.
115 114
116 const uint8_t* payload = 115 const uint8_t* payload = packet.data() + RtcpCommonHeader::kHeaderSizeBytes;
117 packet->Buffer() + RtcpCommonHeader::kHeaderSizeBytes;
118 Fir good; 116 Fir good;
119 EXPECT_TRUE(good.Parse(header, payload)); 117 EXPECT_TRUE(good.Parse(header, payload));
120 for (size_t i = 1; i < 8; ++i) { 118 for (size_t i = 1; i < 8; ++i) {
121 header.payload_size_bytes = 16 + i; 119 header.payload_size_bytes = 16 + i;
122 Fir bad; 120 Fir bad;
123 EXPECT_FALSE(bad.Parse(header, payload)); 121 EXPECT_FALSE(bad.Parse(header, payload));
124 } 122 }
125 } 123 }
126 } // namespace 124 } // namespace
127 } // namespace webrtc 125 } // namespace webrtc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698