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

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

Issue 2372713005: Revert of Unify rtcp packet setters (Closed)
Patch Set: Created 4 years, 2 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
(...skipping 28 matching lines...) Expand all
39 const Rpsi& parsed = mutable_parsed; // Read values from constant object. 39 const Rpsi& parsed = mutable_parsed; // Read values from constant object.
40 40
41 EXPECT_EQ(kSenderSsrc, parsed.sender_ssrc()); 41 EXPECT_EQ(kSenderSsrc, parsed.sender_ssrc());
42 EXPECT_EQ(kRemoteSsrc, parsed.media_ssrc()); 42 EXPECT_EQ(kRemoteSsrc, parsed.media_ssrc());
43 EXPECT_EQ(kPayloadType, parsed.payload_type()); 43 EXPECT_EQ(kPayloadType, parsed.payload_type());
44 EXPECT_EQ(kPictureId, parsed.picture_id()); 44 EXPECT_EQ(kPictureId, parsed.picture_id());
45 } 45 }
46 46
47 TEST(RtcpPacketRpsiTest, Create) { 47 TEST(RtcpPacketRpsiTest, Create) {
48 Rpsi rpsi; 48 Rpsi rpsi;
49 rpsi.SetSenderSsrc(kSenderSsrc); 49 rpsi.From(kSenderSsrc);
50 rpsi.SetMediaSsrc(kRemoteSsrc); 50 rpsi.To(kRemoteSsrc);
51 rpsi.SetPayloadType(kPayloadType); 51 rpsi.WithPayloadType(kPayloadType);
52 rpsi.SetPictureId(kPictureId); 52 rpsi.WithPictureId(kPictureId);
53 53
54 rtc::Buffer packet = rpsi.Build(); 54 rtc::Buffer packet = rpsi.Build();
55 55
56 EXPECT_THAT(make_tuple(packet.data(), packet.size()), 56 EXPECT_THAT(make_tuple(packet.data(), packet.size()),
57 ElementsAreArray(kPacket)); 57 ElementsAreArray(kPacket));
58 } 58 }
59 59
60 TEST(RtcpPacketRpsiTest, ParseFailsOnTooSmallPacket) { 60 TEST(RtcpPacketRpsiTest, ParseFailsOnTooSmallPacket) {
61 Rpsi rpsi; 61 Rpsi rpsi;
62 rpsi.SetSenderSsrc(kSenderSsrc); 62 rpsi.From(kSenderSsrc);
63 rpsi.SetMediaSsrc(kRemoteSsrc); 63 rpsi.To(kRemoteSsrc);
64 64
65 rtc::Buffer packet = rpsi.Build(); 65 rtc::Buffer packet = rpsi.Build();
66 packet[3]--; // Reduce size field by one word (4 bytes). 66 packet[3]--; // Reduce size field by one word (4 bytes).
67 packet.SetSize(packet.size() - 4); 67 packet.SetSize(packet.size() - 4);
68 68
69 EXPECT_FALSE(test::ParseSinglePacket(packet, &rpsi)); 69 EXPECT_FALSE(test::ParseSinglePacket(packet, &rpsi));
70 } 70 }
71 71
72 TEST(RtcpPacketRpsiTest, ParseFailsOnFractionalPaddingBytes) { 72 TEST(RtcpPacketRpsiTest, ParseFailsOnFractionalPaddingBytes) {
73 Rpsi rpsi; 73 Rpsi rpsi;
74 rpsi.SetSenderSsrc(kSenderSsrc); 74 rpsi.From(kSenderSsrc);
75 rpsi.SetMediaSsrc(kRemoteSsrc); 75 rpsi.To(kRemoteSsrc);
76 rpsi.SetPictureId(kPictureId); 76 rpsi.WithPictureId(kPictureId);
77 rtc::Buffer packet = rpsi.Build(); 77 rtc::Buffer packet = rpsi.Build();
78 uint8_t* padding_bits = packet.data() + 12; 78 uint8_t* padding_bits = packet.data() + 12;
79 uint8_t saved_padding_bits = *padding_bits; 79 uint8_t saved_padding_bits = *padding_bits;
80 ASSERT_TRUE(test::ParseSinglePacket(packet, &rpsi)); 80 ASSERT_TRUE(test::ParseSinglePacket(packet, &rpsi));
81 81
82 for (uint8_t i = 1; i < 8; ++i) { 82 for (uint8_t i = 1; i < 8; ++i) {
83 *padding_bits = saved_padding_bits + i; 83 *padding_bits = saved_padding_bits + i;
84 EXPECT_FALSE(test::ParseSinglePacket(packet, &rpsi)); 84 EXPECT_FALSE(test::ParseSinglePacket(packet, &rpsi));
85 } 85 }
86 } 86 }
87 87
88 TEST(RtcpPacketRpsiTest, ParseFailsOnTooBigPadding) { 88 TEST(RtcpPacketRpsiTest, ParseFailsOnTooBigPadding) {
89 Rpsi rpsi; 89 Rpsi rpsi;
90 rpsi.SetSenderSsrc(kSenderSsrc); 90 rpsi.From(kSenderSsrc);
91 rpsi.SetMediaSsrc(kRemoteSsrc); 91 rpsi.To(kRemoteSsrc);
92 rpsi.SetPictureId(1); // Small picture id that occupy just 1 byte. 92 rpsi.WithPictureId(1); // Small picture id that occupy just 1 byte.
93 rtc::Buffer packet = rpsi.Build(); 93 rtc::Buffer packet = rpsi.Build();
94 uint8_t* padding_bits = packet.data() + 12; 94 uint8_t* padding_bits = packet.data() + 12;
95 ASSERT_TRUE(test::ParseSinglePacket(packet, &rpsi)); 95 ASSERT_TRUE(test::ParseSinglePacket(packet, &rpsi));
96 96
97 *padding_bits += 8; 97 *padding_bits += 8;
98 EXPECT_FALSE(test::ParseSinglePacket(packet, &rpsi)); 98 EXPECT_FALSE(test::ParseSinglePacket(packet, &rpsi));
99 } 99 }
100 100
101 // For raw rpsi packet extract how many bytes are used to store picture_id. 101 // For raw rpsi packet extract how many bytes are used to store picture_id.
102 size_t UsedBytes(const rtc::Buffer& packet) { // Works for small packets only. 102 size_t UsedBytes(const rtc::Buffer& packet) { // Works for small packets only.
103 RTC_CHECK_EQ(packet.data()[2], 0); // Assume packet is small. 103 RTC_CHECK_EQ(packet.data()[2], 0); // Assume packet is small.
104 size_t total_rpsi_payload_bytes = 4 * (packet.data()[3] - 2) - 2; 104 size_t total_rpsi_payload_bytes = 4 * (packet.data()[3] - 2) - 2;
105 uint8_t padding_bits = packet.data()[12]; 105 uint8_t padding_bits = packet.data()[12];
106 RTC_CHECK_EQ(padding_bits % 8, 0); 106 RTC_CHECK_EQ(padding_bits % 8, 0);
107 return total_rpsi_payload_bytes - (padding_bits / 8); 107 return total_rpsi_payload_bytes - (padding_bits / 8);
108 } 108 }
109 109
110 TEST(RtcpPacketRpsiTest, WithOneByteNativeString) { 110 TEST(RtcpPacketRpsiTest, WithOneByteNativeString) {
111 Rpsi rpsi; 111 Rpsi rpsi;
112 // 1000001 (7 bits = 1 byte in native string). 112 // 1000001 (7 bits = 1 byte in native string).
113 const uint64_t kPictureId = 0x41; 113 const uint64_t kPictureId = 0x41;
114 const uint16_t kNumberOfValidBytes = 1; 114 const uint16_t kNumberOfValidBytes = 1;
115 rpsi.SetPictureId(kPictureId); 115 rpsi.WithPictureId(kPictureId);
116 116
117 rtc::Buffer packet = rpsi.Build(); 117 rtc::Buffer packet = rpsi.Build();
118 EXPECT_EQ(kNumberOfValidBytes, UsedBytes(packet)); 118 EXPECT_EQ(kNumberOfValidBytes, UsedBytes(packet));
119 119
120 Rpsi parsed; 120 Rpsi parsed;
121 EXPECT_TRUE(test::ParseSinglePacket(packet, &parsed)); 121 EXPECT_TRUE(test::ParseSinglePacket(packet, &parsed));
122 EXPECT_EQ(kPictureId, parsed.picture_id()); 122 EXPECT_EQ(kPictureId, parsed.picture_id());
123 } 123 }
124 124
125 TEST(RtcpPacketRpsiTest, WithTwoByteNativeString) { 125 TEST(RtcpPacketRpsiTest, WithTwoByteNativeString) {
126 Rpsi rpsi; 126 Rpsi rpsi;
127 // |1 0000001 (7 bits = 1 byte in native string). 127 // |1 0000001 (7 bits = 1 byte in native string).
128 const uint64_t kPictureId = 0x81; 128 const uint64_t kPictureId = 0x81;
129 const uint16_t kNumberOfValidBytes = 2; 129 const uint16_t kNumberOfValidBytes = 2;
130 rpsi.SetPictureId(kPictureId); 130 rpsi.WithPictureId(kPictureId);
131 131
132 rtc::Buffer packet = rpsi.Build(); 132 rtc::Buffer packet = rpsi.Build();
133 EXPECT_EQ(kNumberOfValidBytes, UsedBytes(packet)); 133 EXPECT_EQ(kNumberOfValidBytes, UsedBytes(packet));
134 134
135 Rpsi parsed; 135 Rpsi parsed;
136 EXPECT_TRUE(test::ParseSinglePacket(packet, &parsed)); 136 EXPECT_TRUE(test::ParseSinglePacket(packet, &parsed));
137 EXPECT_EQ(kPictureId, parsed.picture_id()); 137 EXPECT_EQ(kPictureId, parsed.picture_id());
138 } 138 }
139 139
140 TEST(RtcpPacketRpsiTest, WithThreeByteNativeString) { 140 TEST(RtcpPacketRpsiTest, WithThreeByteNativeString) {
141 Rpsi rpsi; 141 Rpsi rpsi;
142 // 10000|00 100000|0 1000000 (7 bits = 1 byte in native string). 142 // 10000|00 100000|0 1000000 (7 bits = 1 byte in native string).
143 const uint64_t kPictureId = 0x102040; 143 const uint64_t kPictureId = 0x102040;
144 const uint16_t kNumberOfValidBytes = 3; 144 const uint16_t kNumberOfValidBytes = 3;
145 rpsi.SetPictureId(kPictureId); 145 rpsi.WithPictureId(kPictureId);
146 146
147 rtc::Buffer packet = rpsi.Build(); 147 rtc::Buffer packet = rpsi.Build();
148 EXPECT_EQ(kNumberOfValidBytes, UsedBytes(packet)); 148 EXPECT_EQ(kNumberOfValidBytes, UsedBytes(packet));
149 149
150 Rpsi parsed; 150 Rpsi parsed;
151 EXPECT_TRUE(test::ParseSinglePacket(packet, &parsed)); 151 EXPECT_TRUE(test::ParseSinglePacket(packet, &parsed));
152 EXPECT_EQ(kPictureId, parsed.picture_id()); 152 EXPECT_EQ(kPictureId, parsed.picture_id());
153 } 153 }
154 154
155 TEST(RtcpPacketRpsiTest, WithFourByteNativeString) { 155 TEST(RtcpPacketRpsiTest, WithFourByteNativeString) {
156 Rpsi rpsi; 156 Rpsi rpsi;
157 // 1000|001 00001|01 100001|1 1000010 (7 bits = 1 byte in native string). 157 // 1000|001 00001|01 100001|1 1000010 (7 bits = 1 byte in native string).
158 const uint64_t kPictureId = 0x84161C2; 158 const uint64_t kPictureId = 0x84161C2;
159 const uint16_t kNumberOfValidBytes = 4; 159 const uint16_t kNumberOfValidBytes = 4;
160 rpsi.SetPictureId(kPictureId); 160 rpsi.WithPictureId(kPictureId);
161 161
162 rtc::Buffer packet = rpsi.Build(); 162 rtc::Buffer packet = rpsi.Build();
163 EXPECT_EQ(kNumberOfValidBytes, UsedBytes(packet)); 163 EXPECT_EQ(kNumberOfValidBytes, UsedBytes(packet));
164 164
165 Rpsi parsed; 165 Rpsi parsed;
166 EXPECT_TRUE(test::ParseSinglePacket(packet, &parsed)); 166 EXPECT_TRUE(test::ParseSinglePacket(packet, &parsed));
167 EXPECT_EQ(kPictureId, parsed.picture_id()); 167 EXPECT_EQ(kPictureId, parsed.picture_id());
168 } 168 }
169 169
170 TEST(RtcpPacketRpsiTest, WithMaxPictureId) { 170 TEST(RtcpPacketRpsiTest, WithMaxPictureId) {
171 Rpsi rpsi; 171 Rpsi rpsi;
172 // 1 1111111| 1111111 1|111111 11|11111 111|1111 1111|111 11111| 172 // 1 1111111| 1111111 1|111111 11|11111 111|1111 1111|111 11111|
173 // 11 111111|1 1111111 (7 bits = 1 byte in native string). 173 // 11 111111|1 1111111 (7 bits = 1 byte in native string).
174 const uint64_t kPictureId = 0xffffffffffffffff; 174 const uint64_t kPictureId = 0xffffffffffffffff;
175 const uint16_t kNumberOfValidBytes = 10; 175 const uint16_t kNumberOfValidBytes = 10;
176 rpsi.SetPictureId(kPictureId); 176 rpsi.WithPictureId(kPictureId);
177 177
178 rtc::Buffer packet = rpsi.Build(); 178 rtc::Buffer packet = rpsi.Build();
179 EXPECT_EQ(kNumberOfValidBytes, UsedBytes(packet)); 179 EXPECT_EQ(kNumberOfValidBytes, UsedBytes(packet));
180 180
181 Rpsi parsed; 181 Rpsi parsed;
182 EXPECT_TRUE(test::ParseSinglePacket(packet, &parsed)); 182 EXPECT_TRUE(test::ParseSinglePacket(packet, &parsed));
183 EXPECT_EQ(kPictureId, parsed.picture_id()); 183 EXPECT_EQ(kPictureId, parsed.picture_id());
184 } 184 }
185 } // namespace webrtc 185 } // namespace webrtc
OLDNEW
« no previous file with comments | « webrtc/modules/rtp_rtcp/source/rtcp_packet/rpsi.cc ('k') | webrtc/modules/rtp_rtcp/source/rtcp_packet/rrtr.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698