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

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

Issue 1544983002: [rtp_rtcp] rtcp::SenderReport moved into own file and got Parse function (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Added SenderReport::ClearReportBlocks to make SenderReport reusable Created 4 years, 11 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
(Empty)
1 /*
2 * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.
3 *
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
6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree.
9 */
10
11 #include "webrtc/modules/rtp_rtcp/source/rtcp_packet/sender_report.h"
12
13 #include "testing/gtest/include/gtest/gtest.h"
14
15 using webrtc::rtcp::RawPacket;
16 using webrtc::rtcp::ReportBlock;
17 using webrtc::rtcp::SenderReport;
18
19 namespace webrtc {
20
21 class RtcpPacketSenderReportTest : public ::testing::Test {
22 protected:
23 const uint32_t kSenderSsrc = 0x12345678;
24 const uint32_t kRemoteSsrc = 0x23456789;
25
26 void BuildPacket() { packet = sr.Build(); }
27 void ParsePacket() {
28 using RTCPUtility::RtcpCommonHeader;
29 using RTCPUtility::RtcpParseCommonHeader;
åsapersson 2016/01/13 14:11:32 move above?
danilchap 2016/01/13 15:54:44 Done.
30 RtcpCommonHeader header;
31 EXPECT_TRUE(
32 RtcpParseCommonHeader(packet->Buffer(), packet->Length(), &header));
33 EXPECT_EQ(packet->Length(), header.BlockSize());
34 EXPECT_TRUE(SenderReport::kPacketType == header.packet_type);
åsapersson 2016/01/13 14:11:32 remove, already checked in Parse?
danilchap 2016/01/13 15:54:44 Done.
35 EXPECT_TRUE(parsed_.Parse(
36 header, packet->Buffer() + RtcpCommonHeader::kHeaderSizeBytes));
37 }
38
39 SenderReport sr;
åsapersson 2016/01/13 14:11:32 end with underscore?
danilchap 2016/01/13 15:54:44 tests access this variable directly, as if it is a
40 rtc::scoped_ptr<RawPacket> packet;
41 // only ParsePacket can change parsed, tests should use it in ro mode
åsapersson 2016/01/13 14:11:32 s/only/Only (end w/period).
danilchap 2016/01/13 15:54:44 Done.
42 const SenderReport& parsed() { return parsed_; }
43
44 private:
45 SenderReport parsed_;
46 };
47
48 TEST_F(RtcpPacketSenderReportTest, SenderReport) {
åsapersson 2016/01/13 14:11:32 maybe call WithNoReportBlock
danilchap 2016/01/13 15:54:44 Done, WithoutReportBlocks feels even better.
49 sr.From(kSenderSsrc);
50 sr.WithNtp(NtpTime(0x11121418, 0x22242628));
åsapersson 2016/01/13 14:11:32 use constants for these and below?
danilchap 2016/01/13 15:54:44 Done.
51 sr.WithRtpTimestamp(0x33343536);
52 sr.WithPacketCount(0x44454647);
53 sr.WithOctetCount(0x55565758);
54
55 BuildPacket();
56 ParsePacket();
57
58 EXPECT_EQ(kSenderSsrc, parsed().sender_ssrc());
59 EXPECT_EQ(0x11121418U, parsed().ntp().seconds());
60 EXPECT_EQ(0x22242628U, parsed().ntp().fractions());
61 EXPECT_EQ(0x33343536U, parsed().rtp_timestamp());
62 EXPECT_EQ(0x44454647U, parsed().sender_packet_count());
63 EXPECT_EQ(0x55565758U, parsed().sender_octet_count());
64 EXPECT_TRUE(parsed().report_blocks().empty());
65 }
66
67 TEST_F(RtcpPacketSenderReportTest, WithOneReportBlock) {
68 ReportBlock rb;
69 rb.To(kRemoteSsrc);
70
71 sr.From(kSenderSsrc);
72 EXPECT_TRUE(sr.WithReportBlock(rb));
73
74 BuildPacket();
75 ParsePacket();
76
77 EXPECT_EQ(kSenderSsrc, parsed().sender_ssrc());
78 EXPECT_EQ(1u, parsed().report_blocks().size());
79 EXPECT_EQ(kRemoteSsrc, parsed().report_blocks()[0].source_ssrc());
80 }
81
82 TEST_F(RtcpPacketSenderReportTest, WithTwoReportBlocks) {
83 ReportBlock rb1;
84 rb1.To(kRemoteSsrc);
85 ReportBlock rb2;
86 rb2.To(kRemoteSsrc + 1);
87
88 sr.From(kSenderSsrc);
89 EXPECT_TRUE(sr.WithReportBlock(rb1));
90 EXPECT_TRUE(sr.WithReportBlock(rb2));
91
92 BuildPacket();
93 ParsePacket();
94
95 EXPECT_EQ(kSenderSsrc, parsed().sender_ssrc());
96 EXPECT_EQ(2u, parsed().report_blocks().size());
97 EXPECT_EQ(kRemoteSsrc, parsed().report_blocks()[0].source_ssrc());
98 EXPECT_EQ(kRemoteSsrc + 1, parsed().report_blocks()[1].source_ssrc());
99 }
100
101 TEST_F(RtcpPacketSenderReportTest, WithTooManyReportBlocks) {
102 sr.From(kSenderSsrc);
103 const size_t kMaxReportBlocks = (1 << 5) - 1;
104 ReportBlock rb;
105 for (size_t i = 0; i < kMaxReportBlocks; ++i) {
106 rb.To(kRemoteSsrc + i);
107 EXPECT_TRUE(sr.WithReportBlock(rb));
108 }
109 rb.To(kRemoteSsrc + kMaxReportBlocks);
110 EXPECT_FALSE(sr.WithReportBlock(rb));
111 }
112
113 } // namespace webrtc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698