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

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

Issue 2995073002: When using clang, switch on -Wc++11-narrowing (Closed)
Patch Set: Created 3 years, 4 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/BUILD.gn ('k') | webrtc/modules/video_coding/frame_buffer2_unittest.cc » ('j') | 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
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
88 rtc::Buffer packet = sdes.Build(); 88 rtc::Buffer packet = sdes.Build();
89 Sdes parsed; 89 Sdes parsed;
90 EXPECT_TRUE(test::ParseSinglePacket(packet, &parsed)); 90 EXPECT_TRUE(test::ParseSinglePacket(packet, &parsed));
91 91
92 EXPECT_EQ(1u, parsed.chunks().size()); 92 EXPECT_EQ(1u, parsed.chunks().size());
93 EXPECT_EQ(kSenderSsrc, parsed.chunks()[0].ssrc); 93 EXPECT_EQ(kSenderSsrc, parsed.chunks()[0].ssrc);
94 EXPECT_EQ("", parsed.chunks()[0].cname); 94 EXPECT_EQ("", parsed.chunks()[0].cname);
95 } 95 }
96 96
97 TEST(RtcpPacketSdesTest, ParseSkipsNonCNameField) { 97 TEST(RtcpPacketSdesTest, ParseSkipsNonCNameField) {
98 const char kName[] = "abc"; 98 const uint8_t kName[] = "abc";
99 const std::string kCname = "de"; 99 const uint8_t kCname[] = "de";
100 const uint8_t kValidPacket[] = {0x81, 202, 0x00, 0x04, 100 const uint8_t kValidPacket[] = {0x81, 202, 0x00, 0x04,
101 0x12, 0x34, 0x56, 0x78, 101 0x12, 0x34, 0x56, 0x78,
102 kNameTag, 3, kName[0], kName[1], kName[2], 102 kNameTag, 3, kName[0], kName[1], kName[2],
103 kCnameTag, 2, kCname[0], kCname[1], 103 kCnameTag, 2, kCname[0], kCname[1],
104 kTerminatorTag, kPadding, kPadding}; 104 kTerminatorTag, kPadding, kPadding};
105 // Sanity checks packet was assembled correctly. 105 // Sanity checks packet was assembled correctly.
106 ASSERT_EQ(0u, sizeof(kValidPacket) % 4); 106 ASSERT_EQ(0u, sizeof(kValidPacket) % 4);
107 ASSERT_EQ(kValidPacket[3] + 1u, sizeof(kValidPacket) / 4); 107 ASSERT_EQ(kValidPacket[3] + 1u, sizeof(kValidPacket) / 4);
108 108
109 Sdes parsed; 109 Sdes parsed;
110 EXPECT_TRUE(test::ParseSinglePacket(kValidPacket, &parsed)); 110 EXPECT_TRUE(test::ParseSinglePacket(kValidPacket, &parsed));
111 111
112 EXPECT_EQ(1u, parsed.chunks().size()); 112 EXPECT_EQ(1u, parsed.chunks().size());
113 EXPECT_EQ(kSenderSsrc, parsed.chunks()[0].ssrc); 113 EXPECT_EQ(kSenderSsrc, parsed.chunks()[0].ssrc);
114 EXPECT_EQ(kCname, parsed.chunks()[0].cname); 114 EXPECT_EQ("de", parsed.chunks()[0].cname);
115 } 115 }
116 116
117 TEST(RtcpPacketSdesTest, ParseSkipsChunksWithoutCName) { 117 TEST(RtcpPacketSdesTest, ParseSkipsChunksWithoutCName) {
118 const char kName[] = "ab"; 118 const uint8_t kName[] = "ab";
119 const char kEmail[] = "de"; 119 const uint8_t kEmail[] = "de";
120 const std::string kCname = "def"; 120 const uint8_t kCname[] = "def";
121 const uint8_t kPacket[] = {0x82, 202, 0x00, 0x07, 121 const uint8_t kPacket[] = {0x82, 202, 0x00, 0x07,
122 0x12, 0x34, 0x56, 0x78, // 1st chunk. 122 0x12, 0x34, 0x56, 0x78, // 1st chunk.
123 kNameTag, 3, kName[0], kName[1], kName[2], 123 kNameTag, 3, kName[0], kName[1], kName[2],
124 kEmailTag, 2, kEmail[0], kEmail[1], 124 kEmailTag, 2, kEmail[0], kEmail[1],
125 kTerminatorTag, kPadding, kPadding, 125 kTerminatorTag, kPadding, kPadding,
126 0x23, 0x45, 0x67, 0x89, // 2nd chunk. 126 0x23, 0x45, 0x67, 0x89, // 2nd chunk.
127 kCnameTag, 3, kCname[0], kCname[1], kCname[2], 127 kCnameTag, 3, kCname[0], kCname[1], kCname[2],
128 kTerminatorTag, kPadding, kPadding}; 128 kTerminatorTag, kPadding, kPadding};
129 // Sanity checks packet was assembled correctly. 129 // Sanity checks packet was assembled correctly.
130 ASSERT_EQ(0u, sizeof(kPacket) % 4); 130 ASSERT_EQ(0u, sizeof(kPacket) % 4);
131 ASSERT_EQ(kPacket[3] + 1u, sizeof(kPacket) / 4); 131 ASSERT_EQ(kPacket[3] + 1u, sizeof(kPacket) / 4);
132 132
133 Sdes parsed; 133 Sdes parsed;
134 EXPECT_TRUE(test::ParseSinglePacket(kPacket, &parsed)); 134 EXPECT_TRUE(test::ParseSinglePacket(kPacket, &parsed));
135 ASSERT_EQ(1u, parsed.chunks().size()); 135 ASSERT_EQ(1u, parsed.chunks().size());
136 EXPECT_EQ(0x23456789u, parsed.chunks()[0].ssrc); 136 EXPECT_EQ(0x23456789u, parsed.chunks()[0].ssrc);
137 EXPECT_EQ(kCname, parsed.chunks()[0].cname); 137 EXPECT_EQ("def", parsed.chunks()[0].cname);
138 } 138 }
139 139
140 TEST(RtcpPacketSdesTest, ParseFailsWithoutChunkItemTerminator) { 140 TEST(RtcpPacketSdesTest, ParseFailsWithoutChunkItemTerminator) {
141 const char kName[] = "abc"; 141 const uint8_t kName[] = "abc";
142 const char kCname[] = "d"; 142 const uint8_t kCname[] = "d";
143 // No place for next chunk item. 143 // No place for next chunk item.
144 const uint8_t kInvalidPacket[] = {0x81, 202, 0x00, 0x03, 144 const uint8_t kInvalidPacket[] = {0x81, 202, 0x00, 0x03,
145 0x12, 0x34, 0x56, 0x78, 145 0x12, 0x34, 0x56, 0x78,
146 kNameTag, 3, kName[0], kName[1], kName[2], 146 kNameTag, 3, kName[0], kName[1], kName[2],
147 kCnameTag, 1, kCname[0]}; 147 kCnameTag, 1, kCname[0]};
148 // Sanity checks packet was assembled correctly. 148 // Sanity checks packet was assembled correctly.
149 ASSERT_EQ(0u, sizeof(kInvalidPacket) % 4); 149 ASSERT_EQ(0u, sizeof(kInvalidPacket) % 4);
150 ASSERT_EQ(kInvalidPacket[3] + 1u, sizeof(kInvalidPacket) / 4); 150 ASSERT_EQ(kInvalidPacket[3] + 1u, sizeof(kInvalidPacket) / 4);
151 151
152 Sdes parsed; 152 Sdes parsed;
153 EXPECT_FALSE(test::ParseSinglePacket(kInvalidPacket, &parsed)); 153 EXPECT_FALSE(test::ParseSinglePacket(kInvalidPacket, &parsed));
154 } 154 }
155 155
156 TEST(RtcpPacketSdesTest, ParseFailsWithDamagedChunkItem) { 156 TEST(RtcpPacketSdesTest, ParseFailsWithDamagedChunkItem) {
157 const char kName[] = "ab"; 157 const uint8_t kName[] = "ab";
158 const char kCname[] = "d"; 158 const uint8_t kCname[] = "d";
159 // Next chunk item has non-terminator type, but not the size. 159 // Next chunk item has non-terminator type, but not the size.
160 const uint8_t kInvalidPacket[] = {0x81, 202, 0x00, 0x03, 160 const uint8_t kInvalidPacket[] = {0x81, 202, 0x00, 0x03,
161 0x12, 0x34, 0x56, 0x78, 161 0x12, 0x34, 0x56, 0x78,
162 kNameTag, 2, kName[0], kName[1], 162 kNameTag, 2, kName[0], kName[1],
163 kCnameTag, 1, kCname[0], 163 kCnameTag, 1, kCname[0],
164 kEmailTag}; 164 kEmailTag};
165 // Sanity checks packet was assembled correctly. 165 // Sanity checks packet was assembled correctly.
166 ASSERT_EQ(0u, sizeof(kInvalidPacket) % 4); 166 ASSERT_EQ(0u, sizeof(kInvalidPacket) % 4);
167 ASSERT_EQ(kInvalidPacket[3] + 1u, sizeof(kInvalidPacket) / 4); 167 ASSERT_EQ(kInvalidPacket[3] + 1u, sizeof(kInvalidPacket) / 4);
168 168
169 Sdes parsed; 169 Sdes parsed;
170 EXPECT_FALSE(test::ParseSinglePacket(kInvalidPacket, &parsed)); 170 EXPECT_FALSE(test::ParseSinglePacket(kInvalidPacket, &parsed));
171 } 171 }
172 172
173 TEST(RtcpPacketSdesTest, ParseFailsWithTooLongChunkItem) { 173 TEST(RtcpPacketSdesTest, ParseFailsWithTooLongChunkItem) {
174 const char kName[] = "abc"; 174 const uint8_t kName[] = "abc";
175 const char kCname[] = "d"; 175 const uint8_t kCname[] = "d";
176 // Last chunk item has length that goes beyond the buffer end. 176 // Last chunk item has length that goes beyond the buffer end.
177 const uint8_t kInvalidPacket[] = {0x81, 202, 0x00, 0x03, 177 const uint8_t kInvalidPacket[] = {0x81, 202, 0x00, 0x03,
178 0x12, 0x34, 0x56, 0x78, 178 0x12, 0x34, 0x56, 0x78,
179 kNameTag, 3, kName[0], kName[1], kName[2], 179 kNameTag, 3, kName[0], kName[1], kName[2],
180 kCnameTag, 2, kCname[0]}; 180 kCnameTag, 2, kCname[0]};
181 // Sanity checks packet was assembled correctly. 181 // Sanity checks packet was assembled correctly.
182 ASSERT_EQ(0u, sizeof(kInvalidPacket) % 4); 182 ASSERT_EQ(0u, sizeof(kInvalidPacket) % 4);
183 ASSERT_EQ(kInvalidPacket[3] + 1u, sizeof(kInvalidPacket) / 4); 183 ASSERT_EQ(kInvalidPacket[3] + 1u, sizeof(kInvalidPacket) / 4);
184 184
185 Sdes parsed; 185 Sdes parsed;
186 EXPECT_FALSE(test::ParseSinglePacket(kInvalidPacket, &parsed)); 186 EXPECT_FALSE(test::ParseSinglePacket(kInvalidPacket, &parsed));
187 } 187 }
188 188
189 TEST(RtcpPacketSdesTest, ParseFailsWithTwoCNames) { 189 TEST(RtcpPacketSdesTest, ParseFailsWithTwoCNames) {
190 const char kCname1[] = "a"; 190 const uint8_t kCname1[] = "a";
191 const char kCname2[] = "de"; 191 const uint8_t kCname2[] = "de";
192 const uint8_t kInvalidPacket[] = {0x81, 202, 0x00, 0x03, 192 const uint8_t kInvalidPacket[] = {0x81, 202, 0x00, 0x03,
193 0x12, 0x34, 0x56, 0x78, 193 0x12, 0x34, 0x56, 0x78,
194 kCnameTag, 1, kCname1[0], 194 kCnameTag, 1, kCname1[0],
195 kCnameTag, 2, kCname2[0], kCname2[1], 195 kCnameTag, 2, kCname2[0], kCname2[1],
196 kTerminatorTag}; 196 kTerminatorTag};
197 // Sanity checks packet was assembled correctly. 197 // Sanity checks packet was assembled correctly.
198 ASSERT_EQ(0u, sizeof(kInvalidPacket) % 4); 198 ASSERT_EQ(0u, sizeof(kInvalidPacket) % 4);
199 ASSERT_EQ(kInvalidPacket[3] + 1u, sizeof(kInvalidPacket) / 4); 199 ASSERT_EQ(kInvalidPacket[3] + 1u, sizeof(kInvalidPacket) / 4);
200 200
201 Sdes parsed; 201 Sdes parsed;
202 EXPECT_FALSE(test::ParseSinglePacket(kInvalidPacket, &parsed)); 202 EXPECT_FALSE(test::ParseSinglePacket(kInvalidPacket, &parsed));
203 } 203 }
204 204
205 TEST(RtcpPacketSdesTest, ParseFailsWithTooLittleSpaceForNextChunk) { 205 TEST(RtcpPacketSdesTest, ParseFailsWithTooLittleSpaceForNextChunk) {
206 const char kCname[] = "a"; 206 const uint8_t kCname[] = "a";
207 const char kEmail[] = "de"; 207 const uint8_t kEmail[] = "de";
208 // 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.
209 const uint8_t kInvalidPacket[] = {0x82, 202, 0x00, 0x04, 209 const uint8_t kInvalidPacket[] = {0x82, 202, 0x00, 0x04,
210 0x12, 0x34, 0x56, 0x78, // 1st chunk. 210 0x12, 0x34, 0x56, 0x78, // 1st chunk.
211 kCnameTag, 1, kCname[0], 211 kCnameTag, 1, kCname[0],
212 kEmailTag, 2, kEmail[0], kEmail[1], 212 kEmailTag, 2, kEmail[0], kEmail[1],
213 kTerminatorTag, 213 kTerminatorTag,
214 0x23, 0x45, 0x67, 0x89}; // 2nd chunk. 214 0x23, 0x45, 0x67, 0x89}; // 2nd chunk.
215 // Sanity checks packet was assembled correctly. 215 // Sanity checks packet was assembled correctly.
216 ASSERT_EQ(0u, sizeof(kInvalidPacket) % 4); 216 ASSERT_EQ(0u, sizeof(kInvalidPacket) % 4);
217 ASSERT_EQ(kInvalidPacket[3] + 1u, sizeof(kInvalidPacket) / 4); 217 ASSERT_EQ(kInvalidPacket[3] + 1u, sizeof(kInvalidPacket) / 4);
(...skipping 22 matching lines...) Expand all
240 240
241 EXPECT_EQ(middle.BlockLength(), destination.BlockLength()); 241 EXPECT_EQ(middle.BlockLength(), destination.BlockLength());
242 242
243 EXPECT_EQ(2u, destination.chunks().size()); 243 EXPECT_EQ(2u, destination.chunks().size());
244 EXPECT_EQ(kSenderSsrc, destination.chunks()[0].ssrc); 244 EXPECT_EQ(kSenderSsrc, destination.chunks()[0].ssrc);
245 EXPECT_EQ(kAlice, destination.chunks()[0].cname); 245 EXPECT_EQ(kAlice, destination.chunks()[0].cname);
246 EXPECT_EQ(kSenderSsrc + 1, destination.chunks()[1].ssrc); 246 EXPECT_EQ(kSenderSsrc + 1, destination.chunks()[1].ssrc);
247 EXPECT_EQ(kBob, destination.chunks()[1].cname); 247 EXPECT_EQ(kBob, destination.chunks()[1].cname);
248 } 248 }
249 } // namespace webrtc 249 } // namespace webrtc
OLDNEW
« no previous file with comments | « webrtc/BUILD.gn ('k') | webrtc/modules/video_coding/frame_buffer2_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698