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

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

Issue 1846433003: [rtcp] Sdes::Parse updated not to use RTCPUtility (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Created 4 years, 8 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
« no previous file with comments | « webrtc/modules/rtp_rtcp/source/rtcp_packet/sdes.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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/sdes.h" 11 #include "webrtc/modules/rtp_rtcp/source/rtcp_packet/sdes.h"
12 12
13 #include "testing/gtest/include/gtest/gtest.h" 13 #include "testing/gtest/include/gtest/gtest.h"
14 #include "webrtc/test/rtcp_packet_parser.h"
14 15
15 using webrtc::rtcp::Sdes; 16 using webrtc::rtcp::Sdes;
16 using webrtc::RTCPUtility::RtcpCommonHeader;
17 using webrtc::RTCPUtility::RtcpParseCommonHeader;
18 17
19 namespace webrtc { 18 namespace webrtc {
20 namespace { 19 namespace {
21 const uint32_t kSenderSsrc = 0x12345678; 20 const uint32_t kSenderSsrc = 0x12345678;
22 const uint8_t kPadding = 0; 21 const uint8_t kPadding = 0;
23 const uint8_t kTerminatorTag = 0; 22 const uint8_t kTerminatorTag = 0;
24 const uint8_t kCnameTag = 1; 23 const uint8_t kCnameTag = 1;
25 const uint8_t kNameTag = 2; 24 const uint8_t kNameTag = 2;
26 const uint8_t kEmailTag = 3; 25 const uint8_t kEmailTag = 3;
27
28 bool Parse(const uint8_t* buffer, size_t length, Sdes* sdes) {
29 RtcpCommonHeader header;
30 EXPECT_TRUE(RtcpParseCommonHeader(buffer, length, &header));
31 // Check that there is exactly one RTCP packet in the buffer.
32 EXPECT_EQ(length, header.BlockSize());
33 return sdes->Parse(header, buffer + RtcpCommonHeader::kHeaderSizeBytes);
34 }
35 } // namespace 26 } // namespace
36 27
37 TEST(RtcpPacketSdesTest, WithoutChunks) { 28 TEST(RtcpPacketSdesTest, CreateAndParseWithoutChunks) {
38 Sdes sdes; 29 Sdes sdes;
39 30
40 rtc::Buffer packet = sdes.Build(); 31 rtc::Buffer packet = sdes.Build();
41 Sdes parsed; 32 Sdes parsed;
42 EXPECT_TRUE(Parse(packet.data(), packet.size(), &parsed)); 33 EXPECT_TRUE(test::ParseSinglePacket(packet, &parsed));
43 34
44 EXPECT_EQ(0u, parsed.chunks().size()); 35 EXPECT_EQ(0u, parsed.chunks().size());
45 } 36 }
46 37
47 TEST(RtcpPacketSdesTest, WithOneChunk) { 38 TEST(RtcpPacketSdesTest, CreateAndParseWithOneChunk) {
48 const std::string kCname = "alice@host"; 39 const std::string kCname = "alice@host";
49 40
50 Sdes sdes; 41 Sdes sdes;
51 EXPECT_TRUE(sdes.WithCName(kSenderSsrc, kCname)); 42 EXPECT_TRUE(sdes.WithCName(kSenderSsrc, kCname));
52 43
53 rtc::Buffer packet = sdes.Build(); 44 rtc::Buffer packet = sdes.Build();
54 Sdes sdes_parsed; 45 Sdes sdes_parsed;
55 Parse(packet.data(), packet.size(), &sdes_parsed); 46 EXPECT_TRUE(test::ParseSinglePacket(packet, &sdes_parsed));
56 const Sdes& parsed = sdes_parsed; // Ensure accessors are const. 47 const Sdes& parsed = sdes_parsed; // Ensure accessors are const.
57 48
58 EXPECT_EQ(1u, parsed.chunks().size()); 49 EXPECT_EQ(1u, parsed.chunks().size());
59 EXPECT_EQ(kSenderSsrc, parsed.chunks()[0].ssrc); 50 EXPECT_EQ(kSenderSsrc, parsed.chunks()[0].ssrc);
60 EXPECT_EQ(kCname, parsed.chunks()[0].cname); 51 EXPECT_EQ(kCname, parsed.chunks()[0].cname);
61 } 52 }
62 53
63 TEST(RtcpPacketSdesTest, WithMultipleChunks) { 54 TEST(RtcpPacketSdesTest, CreateAndParseWithMultipleChunks) {
64 Sdes sdes; 55 Sdes sdes;
65 EXPECT_TRUE(sdes.WithCName(kSenderSsrc + 0, "a")); 56 EXPECT_TRUE(sdes.WithCName(kSenderSsrc + 0, "a"));
66 EXPECT_TRUE(sdes.WithCName(kSenderSsrc + 1, "ab")); 57 EXPECT_TRUE(sdes.WithCName(kSenderSsrc + 1, "ab"));
67 EXPECT_TRUE(sdes.WithCName(kSenderSsrc + 2, "abc")); 58 EXPECT_TRUE(sdes.WithCName(kSenderSsrc + 2, "abc"));
68 EXPECT_TRUE(sdes.WithCName(kSenderSsrc + 3, "abcd")); 59 EXPECT_TRUE(sdes.WithCName(kSenderSsrc + 3, "abcd"));
69 EXPECT_TRUE(sdes.WithCName(kSenderSsrc + 4, "abcde")); 60 EXPECT_TRUE(sdes.WithCName(kSenderSsrc + 4, "abcde"));
70 EXPECT_TRUE(sdes.WithCName(kSenderSsrc + 5, "abcdef")); 61 EXPECT_TRUE(sdes.WithCName(kSenderSsrc + 5, "abcdef"));
71 62
72 rtc::Buffer packet = sdes.Build(); 63 rtc::Buffer packet = sdes.Build();
73 Sdes parsed; 64 Sdes parsed;
74 Parse(packet.data(), packet.size(), &parsed); 65 EXPECT_TRUE(test::ParseSinglePacket(packet, &parsed));
75 66
76 EXPECT_EQ(6u, parsed.chunks().size()); 67 EXPECT_EQ(6u, parsed.chunks().size());
77 EXPECT_EQ(kSenderSsrc + 5, parsed.chunks()[5].ssrc); 68 EXPECT_EQ(kSenderSsrc + 5, parsed.chunks()[5].ssrc);
78 EXPECT_EQ("abcdef", parsed.chunks()[5].cname); 69 EXPECT_EQ("abcdef", parsed.chunks()[5].cname);
79 } 70 }
80 71
81 TEST(RtcpPacketSdesTest, WithTooManyChunks) { 72 TEST(RtcpPacketSdesTest, CreateWithTooManyChunks) {
82 const size_t kMaxChunks = (1 << 5) - 1; 73 const size_t kMaxChunks = (1 << 5) - 1;
83 Sdes sdes; 74 Sdes sdes;
84 for (size_t i = 0; i < kMaxChunks; ++i) { 75 for (size_t i = 0; i < kMaxChunks; ++i) {
85 uint32_t ssrc = kSenderSsrc + i; 76 uint32_t ssrc = kSenderSsrc + i;
86 std::ostringstream oss; 77 std::ostringstream oss;
87 oss << "cname" << i; 78 oss << "cname" << i;
88 EXPECT_TRUE(sdes.WithCName(ssrc, oss.str())); 79 EXPECT_TRUE(sdes.WithCName(ssrc, oss.str()));
89 } 80 }
90 EXPECT_FALSE(sdes.WithCName(kSenderSsrc + kMaxChunks, "foo")); 81 EXPECT_FALSE(sdes.WithCName(kSenderSsrc + kMaxChunks, "foo"));
91 } 82 }
92 83
93 TEST(RtcpPacketSdesTest, CnameItemWithEmptyString) { 84 TEST(RtcpPacketSdesTest, CreateAndParseCnameItemWithEmptyString) {
94 Sdes sdes; 85 Sdes sdes;
95 EXPECT_TRUE(sdes.WithCName(kSenderSsrc, "")); 86 EXPECT_TRUE(sdes.WithCName(kSenderSsrc, ""));
96 87
97 rtc::Buffer packet = sdes.Build(); 88 rtc::Buffer packet = sdes.Build();
98 Sdes parsed; 89 Sdes parsed;
99 Parse(packet.data(), packet.size(), &parsed); 90 EXPECT_TRUE(test::ParseSinglePacket(packet, &parsed));
100 91
101 EXPECT_EQ(1u, parsed.chunks().size()); 92 EXPECT_EQ(1u, parsed.chunks().size());
102 EXPECT_EQ(kSenderSsrc, parsed.chunks()[0].ssrc); 93 EXPECT_EQ(kSenderSsrc, parsed.chunks()[0].ssrc);
103 EXPECT_EQ("", parsed.chunks()[0].cname); 94 EXPECT_EQ("", parsed.chunks()[0].cname);
104 } 95 }
105 96
106 TEST(RtcpPacketSdesTest, ParseSkipsNonCNameField) { 97 TEST(RtcpPacketSdesTest, ParseSkipsNonCNameField) {
107 const char kName[] = "abc"; 98 const char kName[] = "abc";
108 const std::string kCname = "de"; 99 const std::string kCname = "de";
109 const uint8_t kValidPacket[] = {0x81, 202, 0x00, 0x04, 100 const uint8_t kValidPacket[] = {0x81, 202, 0x00, 0x04,
110 0x12, 0x34, 0x56, 0x78, 101 0x12, 0x34, 0x56, 0x78,
111 kNameTag, 3, kName[0], kName[1], kName[2], 102 kNameTag, 3, kName[0], kName[1], kName[2],
112 kCnameTag, 2, kCname[0], kCname[1], 103 kCnameTag, 2, kCname[0], kCname[1],
113 kTerminatorTag, kPadding, kPadding}; 104 kTerminatorTag, kPadding, kPadding};
114 // Sanity checks packet was assembled correctly. 105 // Sanity checks packet was assembled correctly.
115 ASSERT_EQ(0u, sizeof(kValidPacket) % 4); 106 ASSERT_EQ(0u, sizeof(kValidPacket) % 4);
116 ASSERT_EQ(kValidPacket[3] + 1u, sizeof(kValidPacket) / 4); 107 ASSERT_EQ(kValidPacket[3] + 1u, sizeof(kValidPacket) / 4);
117 108
118 Sdes parsed; 109 Sdes parsed;
119 EXPECT_TRUE(Parse(kValidPacket, sizeof(kValidPacket), &parsed)); 110 EXPECT_TRUE(test::ParseSinglePacket(kValidPacket, &parsed));
120 111
121 EXPECT_EQ(1u, parsed.chunks().size()); 112 EXPECT_EQ(1u, parsed.chunks().size());
122 EXPECT_EQ(kSenderSsrc, parsed.chunks()[0].ssrc); 113 EXPECT_EQ(kSenderSsrc, parsed.chunks()[0].ssrc);
123 EXPECT_EQ(kCname, parsed.chunks()[0].cname); 114 EXPECT_EQ(kCname, parsed.chunks()[0].cname);
124 } 115 }
125 116
126 TEST(RtcpPacketSdesTest, ParseSkipsChunksWithoutCName) { 117 TEST(RtcpPacketSdesTest, ParseSkipsChunksWithoutCName) {
127 const char kName[] = "ab"; 118 const char kName[] = "ab";
128 const char kEmail[] = "de"; 119 const char kEmail[] = "de";
129 const std::string kCname = "def"; 120 const std::string kCname = "def";
130 const uint8_t kPacket[] = {0x82, 202, 0x00, 0x07, 121 const uint8_t kPacket[] = {0x82, 202, 0x00, 0x07,
131 0x12, 0x34, 0x56, 0x78, // 1st chunk. 122 0x12, 0x34, 0x56, 0x78, // 1st chunk.
132 kNameTag, 3, kName[0], kName[1], kName[2], 123 kNameTag, 3, kName[0], kName[1], kName[2],
133 kEmailTag, 2, kEmail[0], kEmail[1], 124 kEmailTag, 2, kEmail[0], kEmail[1],
134 kTerminatorTag, kPadding, kPadding, 125 kTerminatorTag, kPadding, kPadding,
135 0x23, 0x45, 0x67, 0x89, // 2nd chunk. 126 0x23, 0x45, 0x67, 0x89, // 2nd chunk.
136 kCnameTag, 3, kCname[0], kCname[1], kCname[2], 127 kCnameTag, 3, kCname[0], kCname[1], kCname[2],
137 kTerminatorTag, kPadding, kPadding}; 128 kTerminatorTag, kPadding, kPadding};
138 // Sanity checks packet was assembled correctly. 129 // Sanity checks packet was assembled correctly.
139 ASSERT_EQ(0u, sizeof(kPacket) % 4); 130 ASSERT_EQ(0u, sizeof(kPacket) % 4);
140 ASSERT_EQ(kPacket[3] + 1u, sizeof(kPacket) / 4); 131 ASSERT_EQ(kPacket[3] + 1u, sizeof(kPacket) / 4);
141 132
142 Sdes parsed; 133 Sdes parsed;
143 EXPECT_TRUE(Parse(kPacket, sizeof(kPacket), &parsed)); 134 EXPECT_TRUE(test::ParseSinglePacket(kPacket, &parsed));
144 ASSERT_EQ(1u, parsed.chunks().size()); 135 ASSERT_EQ(1u, parsed.chunks().size());
145 EXPECT_EQ(0x23456789u, parsed.chunks()[0].ssrc); 136 EXPECT_EQ(0x23456789u, parsed.chunks()[0].ssrc);
146 EXPECT_EQ(kCname, parsed.chunks()[0].cname); 137 EXPECT_EQ(kCname, parsed.chunks()[0].cname);
147 } 138 }
148 139
149 TEST(RtcpPacketSdesTest, ParseFailsWithoutChunkItemTerminator) { 140 TEST(RtcpPacketSdesTest, ParseFailsWithoutChunkItemTerminator) {
150 const char kName[] = "abc"; 141 const char kName[] = "abc";
151 const char kCname[] = "d"; 142 const char kCname[] = "d";
152 // No place for next chunk item. 143 // No place for next chunk item.
153 const uint8_t kInvalidPacket[] = {0x81, 202, 0x00, 0x03, 144 const uint8_t kInvalidPacket[] = {0x81, 202, 0x00, 0x03,
154 0x12, 0x34, 0x56, 0x78, 145 0x12, 0x34, 0x56, 0x78,
155 kNameTag, 3, kName[0], kName[1], kName[2], 146 kNameTag, 3, kName[0], kName[1], kName[2],
156 kCnameTag, 1, kCname[0]}; 147 kCnameTag, 1, kCname[0]};
157 // Sanity checks packet was assembled correctly. 148 // Sanity checks packet was assembled correctly.
158 ASSERT_EQ(0u, sizeof(kInvalidPacket) % 4); 149 ASSERT_EQ(0u, sizeof(kInvalidPacket) % 4);
159 ASSERT_EQ(kInvalidPacket[3] + 1u, sizeof(kInvalidPacket) / 4); 150 ASSERT_EQ(kInvalidPacket[3] + 1u, sizeof(kInvalidPacket) / 4);
160 151
161 Sdes parsed; 152 Sdes parsed;
162 EXPECT_FALSE(Parse(kInvalidPacket, sizeof(kInvalidPacket), &parsed)); 153 EXPECT_FALSE(test::ParseSinglePacket(kInvalidPacket, &parsed));
163 } 154 }
164 155
165 TEST(RtcpPacketSdesTest, ParseFailsWithDamagedChunkItem) { 156 TEST(RtcpPacketSdesTest, ParseFailsWithDamagedChunkItem) {
166 const char kName[] = "ab"; 157 const char kName[] = "ab";
167 const char kCname[] = "d"; 158 const char kCname[] = "d";
168 // Next chunk item has non-terminator type, but not the size. 159 // Next chunk item has non-terminator type, but not the size.
169 const uint8_t kInvalidPacket[] = {0x81, 202, 0x00, 0x03, 160 const uint8_t kInvalidPacket[] = {0x81, 202, 0x00, 0x03,
170 0x12, 0x34, 0x56, 0x78, 161 0x12, 0x34, 0x56, 0x78,
171 kNameTag, 2, kName[0], kName[1], 162 kNameTag, 2, kName[0], kName[1],
172 kCnameTag, 1, kCname[0], 163 kCnameTag, 1, kCname[0],
173 kEmailTag}; 164 kEmailTag};
174 // Sanity checks packet was assembled correctly. 165 // Sanity checks packet was assembled correctly.
175 ASSERT_EQ(0u, sizeof(kInvalidPacket) % 4); 166 ASSERT_EQ(0u, sizeof(kInvalidPacket) % 4);
176 ASSERT_EQ(kInvalidPacket[3] + 1u, sizeof(kInvalidPacket) / 4); 167 ASSERT_EQ(kInvalidPacket[3] + 1u, sizeof(kInvalidPacket) / 4);
177 168
178 Sdes parsed; 169 Sdes parsed;
179 EXPECT_FALSE(Parse(kInvalidPacket, sizeof(kInvalidPacket), &parsed)); 170 EXPECT_FALSE(test::ParseSinglePacket(kInvalidPacket, &parsed));
180 } 171 }
181 172
182 TEST(RtcpPacketSdesTest, ParseFailsWithTooLongChunkItem) { 173 TEST(RtcpPacketSdesTest, ParseFailsWithTooLongChunkItem) {
183 const char kName[] = "abc"; 174 const char kName[] = "abc";
184 const char kCname[] = "d"; 175 const char kCname[] = "d";
185 // Last chunk item has length that goes beyond the buffer end. 176 // Last chunk item has length that goes beyond the buffer end.
186 const uint8_t kInvalidPacket[] = {0x81, 202, 0x00, 0x03, 177 const uint8_t kInvalidPacket[] = {0x81, 202, 0x00, 0x03,
187 0x12, 0x34, 0x56, 0x78, 178 0x12, 0x34, 0x56, 0x78,
188 kNameTag, 3, kName[0], kName[1], kName[2], 179 kNameTag, 3, kName[0], kName[1], kName[2],
189 kCnameTag, 2, kCname[0]}; 180 kCnameTag, 2, kCname[0]};
190 // Sanity checks packet was assembled correctly. 181 // Sanity checks packet was assembled correctly.
191 ASSERT_EQ(0u, sizeof(kInvalidPacket) % 4); 182 ASSERT_EQ(0u, sizeof(kInvalidPacket) % 4);
192 ASSERT_EQ(kInvalidPacket[3] + 1u, sizeof(kInvalidPacket) / 4); 183 ASSERT_EQ(kInvalidPacket[3] + 1u, sizeof(kInvalidPacket) / 4);
193 184
194 Sdes parsed; 185 Sdes parsed;
195 EXPECT_FALSE(Parse(kInvalidPacket, sizeof(kInvalidPacket), &parsed)); 186 EXPECT_FALSE(test::ParseSinglePacket(kInvalidPacket, &parsed));
196 } 187 }
197 188
198 TEST(RtcpPacketSdesTest, ParseFailsWithTwoCNames) { 189 TEST(RtcpPacketSdesTest, ParseFailsWithTwoCNames) {
199 const char kCname1[] = "a"; 190 const char kCname1[] = "a";
200 const char kCname2[] = "de"; 191 const char kCname2[] = "de";
201 const uint8_t kInvalidPacket[] = {0x81, 202, 0x00, 0x03, 192 const uint8_t kInvalidPacket[] = {0x81, 202, 0x00, 0x03,
202 0x12, 0x34, 0x56, 0x78, 193 0x12, 0x34, 0x56, 0x78,
203 kCnameTag, 1, kCname1[0], 194 kCnameTag, 1, kCname1[0],
204 kCnameTag, 2, kCname2[0], kCname2[1], 195 kCnameTag, 2, kCname2[0], kCname2[1],
205 kTerminatorTag}; 196 kTerminatorTag};
206 // Sanity checks packet was assembled correctly. 197 // Sanity checks packet was assembled correctly.
207 ASSERT_EQ(0u, sizeof(kInvalidPacket) % 4); 198 ASSERT_EQ(0u, sizeof(kInvalidPacket) % 4);
208 ASSERT_EQ(kInvalidPacket[3] + 1u, sizeof(kInvalidPacket) / 4); 199 ASSERT_EQ(kInvalidPacket[3] + 1u, sizeof(kInvalidPacket) / 4);
209 200
210 Sdes parsed; 201 Sdes parsed;
211 EXPECT_FALSE(Parse(kInvalidPacket, sizeof(kInvalidPacket), &parsed)); 202 EXPECT_FALSE(test::ParseSinglePacket(kInvalidPacket, &parsed));
212 } 203 }
213 204
214 TEST(RtcpPacketSdesTest, ParseFailsWithTooLittleSpaceForNextChunk) { 205 TEST(RtcpPacketSdesTest, ParseFailsWithTooLittleSpaceForNextChunk) {
215 const char kCname[] = "a"; 206 const char kCname[] = "a";
216 const char kEmail[] = "de"; 207 const char kEmail[] = "de";
217 // Two chunks are promised in the header, but no place for the second chunk. 208 // Two chunks are promised in the header, but no place for the second chunk.
218 const uint8_t kInvalidPacket[] = {0x82, 202, 0x00, 0x04, 209 const uint8_t kInvalidPacket[] = {0x82, 202, 0x00, 0x04,
219 0x12, 0x34, 0x56, 0x78, // 1st chunk. 210 0x12, 0x34, 0x56, 0x78, // 1st chunk.
220 kCnameTag, 1, kCname[0], 211 kCnameTag, 1, kCname[0],
221 kEmailTag, 2, kEmail[0], kEmail[1], 212 kEmailTag, 2, kEmail[0], kEmail[1],
222 kTerminatorTag, 213 kTerminatorTag,
223 0x23, 0x45, 0x67, 0x89}; // 2nd chunk. 214 0x23, 0x45, 0x67, 0x89}; // 2nd chunk.
224 // Sanity checks packet was assembled correctly. 215 // Sanity checks packet was assembled correctly.
225 ASSERT_EQ(0u, sizeof(kInvalidPacket) % 4); 216 ASSERT_EQ(0u, sizeof(kInvalidPacket) % 4);
226 ASSERT_EQ(kInvalidPacket[3] + 1u, sizeof(kInvalidPacket) / 4); 217 ASSERT_EQ(kInvalidPacket[3] + 1u, sizeof(kInvalidPacket) / 4);
227 218
228 Sdes parsed; 219 Sdes parsed;
229 EXPECT_FALSE(Parse(kInvalidPacket, sizeof(kInvalidPacket), &parsed)); 220 EXPECT_FALSE(test::ParseSinglePacket(kInvalidPacket, &parsed));
230 } 221 }
231 222
232 TEST(RtcpPacketSdesTest, ParsedSdesCanBeReusedForBuilding) { 223 TEST(RtcpPacketSdesTest, ParsedSdesCanBeReusedForBuilding) {
233 Sdes source; 224 Sdes source;
234 const std::string kAlice = "alice@host"; 225 const std::string kAlice = "alice@host";
235 const std::string kBob = "bob@host"; 226 const std::string kBob = "bob@host";
236 source.WithCName(kSenderSsrc, kAlice); 227 source.WithCName(kSenderSsrc, kAlice);
237 228
238 rtc::Buffer packet1 = source.Build(); 229 rtc::Buffer packet1 = source.Build();
239 Sdes middle; 230 Sdes middle;
240 Parse(packet1.data(), packet1.size(), &middle); 231 test::ParseSinglePacket(packet1, &middle);
241 232
242 EXPECT_EQ(source.BlockLength(), middle.BlockLength()); 233 EXPECT_EQ(source.BlockLength(), middle.BlockLength());
243 234
244 middle.WithCName(kSenderSsrc + 1, kBob); 235 middle.WithCName(kSenderSsrc + 1, kBob);
245 236
246 rtc::Buffer packet2 = middle.Build(); 237 rtc::Buffer packet2 = middle.Build();
247 Sdes destination; 238 Sdes destination;
248 Parse(packet2.data(), packet2.size(), &destination); 239 test::ParseSinglePacket(packet2, &destination);
249 240
250 EXPECT_EQ(middle.BlockLength(), destination.BlockLength()); 241 EXPECT_EQ(middle.BlockLength(), destination.BlockLength());
251 242
252 EXPECT_EQ(2u, destination.chunks().size()); 243 EXPECT_EQ(2u, destination.chunks().size());
253 EXPECT_EQ(kSenderSsrc, destination.chunks()[0].ssrc); 244 EXPECT_EQ(kSenderSsrc, destination.chunks()[0].ssrc);
254 EXPECT_EQ(kAlice, destination.chunks()[0].cname); 245 EXPECT_EQ(kAlice, destination.chunks()[0].cname);
255 EXPECT_EQ(kSenderSsrc + 1, destination.chunks()[1].ssrc); 246 EXPECT_EQ(kSenderSsrc + 1, destination.chunks()[1].ssrc);
256 EXPECT_EQ(kBob, destination.chunks()[1].cname); 247 EXPECT_EQ(kBob, destination.chunks()[1].cname);
257 } 248 }
258 } // namespace webrtc 249 } // namespace webrtc
OLDNEW
« no previous file with comments | « webrtc/modules/rtp_rtcp/source/rtcp_packet/sdes.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698