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

Side by Side Diff: webrtc/base/buffer_unittest.cc

Issue 2290343002: Added an empty() method to rtc::Buffer (Closed)
Patch Set: Added IsConsistent() check Created 4 years, 3 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/base/buffer.h ('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 2004 The WebRTC Project Authors. All rights reserved. 2 * Copyright 2004 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 29 matching lines...) Expand all
40 TestBuf(Buffer(0 + 0, 10), 0, 10); 40 TestBuf(Buffer(0 + 0, 10), 0, 10);
41 41
42 TestBuf(Buffer(kTestData, 0), 0, 0); 42 TestBuf(Buffer(kTestData, 0), 0, 0);
43 TestBuf(Buffer(kTestData, 0, 20), 0, 20); 43 TestBuf(Buffer(kTestData, 0, 20), 0, 20);
44 } 44 }
45 45
46 TEST(BufferTest, TestConstructData) { 46 TEST(BufferTest, TestConstructData) {
47 Buffer buf(kTestData, 7); 47 Buffer buf(kTestData, 7);
48 EXPECT_EQ(buf.size(), 7u); 48 EXPECT_EQ(buf.size(), 7u);
49 EXPECT_EQ(buf.capacity(), 7u); 49 EXPECT_EQ(buf.capacity(), 7u);
50 EXPECT_FALSE(buf.empty());
50 EXPECT_EQ(0, memcmp(buf.data(), kTestData, 7)); 51 EXPECT_EQ(0, memcmp(buf.data(), kTestData, 7));
51 } 52 }
52 53
53 TEST(BufferTest, TestConstructDataWithCapacity) { 54 TEST(BufferTest, TestConstructDataWithCapacity) {
54 Buffer buf(kTestData, 7, 14); 55 Buffer buf(kTestData, 7, 14);
55 EXPECT_EQ(buf.size(), 7u); 56 EXPECT_EQ(buf.size(), 7u);
56 EXPECT_EQ(buf.capacity(), 14u); 57 EXPECT_EQ(buf.capacity(), 14u);
58 EXPECT_FALSE(buf.empty());
57 EXPECT_EQ(0, memcmp(buf.data(), kTestData, 7)); 59 EXPECT_EQ(0, memcmp(buf.data(), kTestData, 7));
58 } 60 }
59 61
60 TEST(BufferTest, TestConstructArray) { 62 TEST(BufferTest, TestConstructArray) {
61 Buffer buf(kTestData); 63 Buffer buf(kTestData);
62 EXPECT_EQ(buf.size(), 16u); 64 EXPECT_EQ(buf.size(), 16u);
63 EXPECT_EQ(buf.capacity(), 16u); 65 EXPECT_EQ(buf.capacity(), 16u);
66 EXPECT_FALSE(buf.empty());
64 EXPECT_EQ(0, memcmp(buf.data(), kTestData, 16)); 67 EXPECT_EQ(0, memcmp(buf.data(), kTestData, 16));
65 } 68 }
66 69
67 TEST(BufferTest, TestSetData) { 70 TEST(BufferTest, TestSetData) {
68 Buffer buf(kTestData + 4, 7); 71 Buffer buf(kTestData + 4, 7);
69 buf.SetData(kTestData, 9); 72 buf.SetData(kTestData, 9);
70 EXPECT_EQ(buf.size(), 9u); 73 EXPECT_EQ(buf.size(), 9u);
71 EXPECT_EQ(buf.capacity(), 7u * 3 / 2); 74 EXPECT_EQ(buf.capacity(), 7u * 3 / 2);
75 EXPECT_FALSE(buf.empty());
72 EXPECT_EQ(0, memcmp(buf.data(), kTestData, 9)); 76 EXPECT_EQ(0, memcmp(buf.data(), kTestData, 9));
73 } 77 }
74 78
75 TEST(BufferTest, TestAppendData) { 79 TEST(BufferTest, TestAppendData) {
76 Buffer buf(kTestData + 4, 3); 80 Buffer buf(kTestData + 4, 3);
77 buf.AppendData(kTestData + 10, 2); 81 buf.AppendData(kTestData + 10, 2);
78 const int8_t exp[] = {0x4, 0x5, 0x6, 0xa, 0xb}; 82 const int8_t exp[] = {0x4, 0x5, 0x6, 0xa, 0xb};
79 EXPECT_EQ(buf, Buffer(exp)); 83 EXPECT_EQ(buf, Buffer(exp));
80 } 84 }
81 85
82 TEST(BufferTest, TestSetSizeSmaller) { 86 TEST(BufferTest, TestSetSizeSmaller) {
83 Buffer buf; 87 Buffer buf;
84 buf.SetData(kTestData, 15); 88 buf.SetData(kTestData, 15);
85 buf.SetSize(10); 89 buf.SetSize(10);
86 EXPECT_EQ(buf.size(), 10u); 90 EXPECT_EQ(buf.size(), 10u);
87 EXPECT_EQ(buf.capacity(), 15u); // Hasn't shrunk. 91 EXPECT_EQ(buf.capacity(), 15u); // Hasn't shrunk.
92 EXPECT_FALSE(buf.empty());
88 EXPECT_EQ(buf, Buffer(kTestData, 10)); 93 EXPECT_EQ(buf, Buffer(kTestData, 10));
89 } 94 }
90 95
91 TEST(BufferTest, TestSetSizeLarger) { 96 TEST(BufferTest, TestSetSizeLarger) {
92 Buffer buf; 97 Buffer buf;
93 buf.SetData(kTestData, 15); 98 buf.SetData(kTestData, 15);
94 EXPECT_EQ(buf.size(), 15u); 99 EXPECT_EQ(buf.size(), 15u);
95 EXPECT_EQ(buf.capacity(), 15u); 100 EXPECT_EQ(buf.capacity(), 15u);
101 EXPECT_FALSE(buf.empty());
96 buf.SetSize(20); 102 buf.SetSize(20);
97 EXPECT_EQ(buf.size(), 20u); 103 EXPECT_EQ(buf.size(), 20u);
98 EXPECT_EQ(buf.capacity(), 15u * 3 / 2); // Has grown. 104 EXPECT_EQ(buf.capacity(), 15u * 3 / 2); // Has grown.
105 EXPECT_FALSE(buf.empty());
99 EXPECT_EQ(0, memcmp(buf.data(), kTestData, 15)); 106 EXPECT_EQ(0, memcmp(buf.data(), kTestData, 15));
100 } 107 }
101 108
102 TEST(BufferTest, TestEnsureCapacitySmaller) { 109 TEST(BufferTest, TestEnsureCapacitySmaller) {
103 Buffer buf(kTestData); 110 Buffer buf(kTestData);
104 const char* data = buf.data<char>(); 111 const char* data = buf.data<char>();
105 buf.EnsureCapacity(4); 112 buf.EnsureCapacity(4);
106 EXPECT_EQ(buf.capacity(), 16u); // Hasn't shrunk. 113 EXPECT_EQ(buf.capacity(), 16u); // Hasn't shrunk.
107 EXPECT_EQ(buf.data<char>(), data); // No reallocation. 114 EXPECT_EQ(buf.data<char>(), data); // No reallocation.
115 EXPECT_FALSE(buf.empty());
108 EXPECT_EQ(buf, Buffer(kTestData)); 116 EXPECT_EQ(buf, Buffer(kTestData));
109 } 117 }
110 118
111 TEST(BufferTest, TestEnsureCapacityLarger) { 119 TEST(BufferTest, TestEnsureCapacityLarger) {
112 Buffer buf(kTestData, 5); 120 Buffer buf(kTestData, 5);
113 buf.EnsureCapacity(10); 121 buf.EnsureCapacity(10);
114 const int8_t* data = buf.data<int8_t>(); 122 const int8_t* data = buf.data<int8_t>();
115 EXPECT_EQ(buf.capacity(), 10u); 123 EXPECT_EQ(buf.capacity(), 10u);
116 buf.AppendData(kTestData + 5, 5); 124 buf.AppendData(kTestData + 5, 5);
117 EXPECT_EQ(buf.data<int8_t>(), data); // No reallocation. 125 EXPECT_EQ(buf.data<int8_t>(), data); // No reallocation.
126 EXPECT_FALSE(buf.empty());
118 EXPECT_EQ(buf, Buffer(kTestData, 10)); 127 EXPECT_EQ(buf, Buffer(kTestData, 10));
119 } 128 }
120 129
121 TEST(BufferTest, TestMoveConstruct) { 130 TEST(BufferTest, TestMoveConstruct) {
122 Buffer buf1(kTestData, 3, 40); 131 Buffer buf1(kTestData, 3, 40);
123 const uint8_t* data = buf1.data(); 132 const uint8_t* data = buf1.data();
124 Buffer buf2(std::move(buf1)); 133 Buffer buf2(std::move(buf1));
125 EXPECT_EQ(buf2.size(), 3u); 134 EXPECT_EQ(buf2.size(), 3u);
126 EXPECT_EQ(buf2.capacity(), 40u); 135 EXPECT_EQ(buf2.capacity(), 40u);
127 EXPECT_EQ(buf2.data(), data); 136 EXPECT_EQ(buf2.data(), data);
137 EXPECT_FALSE(buf2.empty());
128 buf1.Clear(); 138 buf1.Clear();
129 EXPECT_EQ(buf1.size(), 0u); 139 EXPECT_EQ(buf1.size(), 0u);
130 EXPECT_EQ(buf1.capacity(), 0u); 140 EXPECT_EQ(buf1.capacity(), 0u);
131 EXPECT_EQ(buf1.data(), nullptr); 141 EXPECT_EQ(buf1.data(), nullptr);
142 EXPECT_TRUE(buf1.empty());
132 } 143 }
133 144
134 TEST(BufferTest, TestMoveAssign) { 145 TEST(BufferTest, TestMoveAssign) {
135 Buffer buf1(kTestData, 3, 40); 146 Buffer buf1(kTestData, 3, 40);
136 const uint8_t* data = buf1.data(); 147 const uint8_t* data = buf1.data();
137 Buffer buf2(kTestData); 148 Buffer buf2(kTestData);
138 buf2 = std::move(buf1); 149 buf2 = std::move(buf1);
139 EXPECT_EQ(buf2.size(), 3u); 150 EXPECT_EQ(buf2.size(), 3u);
140 EXPECT_EQ(buf2.capacity(), 40u); 151 EXPECT_EQ(buf2.capacity(), 40u);
141 EXPECT_EQ(buf2.data(), data); 152 EXPECT_EQ(buf2.data(), data);
153 EXPECT_FALSE(buf2.empty());
142 buf1.Clear(); 154 buf1.Clear();
143 EXPECT_EQ(buf1.size(), 0u); 155 EXPECT_EQ(buf1.size(), 0u);
144 EXPECT_EQ(buf1.capacity(), 0u); 156 EXPECT_EQ(buf1.capacity(), 0u);
145 EXPECT_EQ(buf1.data(), nullptr); 157 EXPECT_EQ(buf1.data(), nullptr);
158 EXPECT_TRUE(buf1.empty());
146 } 159 }
147 160
148 TEST(BufferTest, TestSwap) { 161 TEST(BufferTest, TestSwap) {
149 Buffer buf1(kTestData, 3); 162 Buffer buf1(kTestData, 3);
150 Buffer buf2(kTestData, 6, 40); 163 Buffer buf2(kTestData, 6, 40);
151 uint8_t* data1 = buf1.data(); 164 uint8_t* data1 = buf1.data();
152 uint8_t* data2 = buf2.data(); 165 uint8_t* data2 = buf2.data();
153 using std::swap; 166 using std::swap;
154 swap(buf1, buf2); 167 swap(buf1, buf2);
155 EXPECT_EQ(buf1.size(), 6u); 168 EXPECT_EQ(buf1.size(), 6u);
156 EXPECT_EQ(buf1.capacity(), 40u); 169 EXPECT_EQ(buf1.capacity(), 40u);
157 EXPECT_EQ(buf1.data(), data2); 170 EXPECT_EQ(buf1.data(), data2);
171 EXPECT_FALSE(buf1.empty());
158 EXPECT_EQ(buf2.size(), 3u); 172 EXPECT_EQ(buf2.size(), 3u);
159 EXPECT_EQ(buf2.capacity(), 3u); 173 EXPECT_EQ(buf2.capacity(), 3u);
160 EXPECT_EQ(buf2.data(), data1); 174 EXPECT_EQ(buf2.data(), data1);
175 EXPECT_FALSE(buf2.empty());
161 } 176 }
162 177
163 TEST(BufferTest, TestClear) { 178 TEST(BufferTest, TestClear) {
164 Buffer buf; 179 Buffer buf;
165 buf.SetData(kTestData, 15); 180 buf.SetData(kTestData, 15);
166 EXPECT_EQ(buf.size(), 15u); 181 EXPECT_EQ(buf.size(), 15u);
167 EXPECT_EQ(buf.capacity(), 15u); 182 EXPECT_EQ(buf.capacity(), 15u);
183 EXPECT_FALSE(buf.empty());
168 const char *data = buf.data<char>(); 184 const char *data = buf.data<char>();
169 buf.Clear(); 185 buf.Clear();
170 EXPECT_EQ(buf.size(), 0u); 186 EXPECT_EQ(buf.size(), 0u);
171 EXPECT_EQ(buf.capacity(), 15u); // Hasn't shrunk. 187 EXPECT_EQ(buf.capacity(), 15u); // Hasn't shrunk.
172 EXPECT_EQ(buf.data<char>(), data); // No reallocation. 188 EXPECT_EQ(buf.data<char>(), data); // No reallocation.
189 EXPECT_TRUE(buf.empty());
173 } 190 }
174 191
175 TEST(BufferTest, TestLambdaSetAppend) { 192 TEST(BufferTest, TestLambdaSetAppend) {
176 auto setter = [] (rtc::ArrayView<uint8_t> av) { 193 auto setter = [] (rtc::ArrayView<uint8_t> av) {
177 for (int i = 0; i != 15; ++i) 194 for (int i = 0; i != 15; ++i)
178 av[i] = kTestData[i]; 195 av[i] = kTestData[i];
179 return 15; 196 return 15;
180 }; 197 };
181 198
182 Buffer buf1; 199 Buffer buf1;
183 buf1.SetData(kTestData, 15); 200 buf1.SetData(kTestData, 15);
184 buf1.AppendData(kTestData, 15); 201 buf1.AppendData(kTestData, 15);
185 202
186 Buffer buf2; 203 Buffer buf2;
187 EXPECT_EQ(buf2.SetData(15, setter), 15u); 204 EXPECT_EQ(buf2.SetData(15, setter), 15u);
188 EXPECT_EQ(buf2.AppendData(15, setter), 15u); 205 EXPECT_EQ(buf2.AppendData(15, setter), 15u);
189 EXPECT_EQ(buf1, buf2); 206 EXPECT_EQ(buf1, buf2);
190 EXPECT_EQ(buf1.capacity(), buf2.capacity()); 207 EXPECT_EQ(buf1.capacity(), buf2.capacity());
208 EXPECT_FALSE(buf1.empty());
209 EXPECT_FALSE(buf2.empty());
191 } 210 }
192 211
193 TEST(BufferTest, TestLambdaSetAppendSigned) { 212 TEST(BufferTest, TestLambdaSetAppendSigned) {
194 auto setter = [] (rtc::ArrayView<int8_t> av) { 213 auto setter = [] (rtc::ArrayView<int8_t> av) {
195 for (int i = 0; i != 15; ++i) 214 for (int i = 0; i != 15; ++i)
196 av[i] = kTestData[i]; 215 av[i] = kTestData[i];
197 return 15; 216 return 15;
198 }; 217 };
199 218
200 Buffer buf1; 219 Buffer buf1;
201 buf1.SetData(kTestData, 15); 220 buf1.SetData(kTestData, 15);
202 buf1.AppendData(kTestData, 15); 221 buf1.AppendData(kTestData, 15);
203 222
204 Buffer buf2; 223 Buffer buf2;
205 EXPECT_EQ(buf2.SetData<int8_t>(15, setter), 15u); 224 EXPECT_EQ(buf2.SetData<int8_t>(15, setter), 15u);
206 EXPECT_EQ(buf2.AppendData<int8_t>(15, setter), 15u); 225 EXPECT_EQ(buf2.AppendData<int8_t>(15, setter), 15u);
207 EXPECT_EQ(buf1, buf2); 226 EXPECT_EQ(buf1, buf2);
208 EXPECT_EQ(buf1.capacity(), buf2.capacity()); 227 EXPECT_EQ(buf1.capacity(), buf2.capacity());
228 EXPECT_FALSE(buf1.empty());
229 EXPECT_FALSE(buf2.empty());
209 } 230 }
210 231
211 TEST(BufferTest, TestLambdaAppendEmpty) { 232 TEST(BufferTest, TestLambdaAppendEmpty) {
212 auto setter = [] (rtc::ArrayView<uint8_t> av) { 233 auto setter = [] (rtc::ArrayView<uint8_t> av) {
213 for (int i = 0; i != 15; ++i) 234 for (int i = 0; i != 15; ++i)
214 av[i] = kTestData[i]; 235 av[i] = kTestData[i];
215 return 15; 236 return 15;
216 }; 237 };
217 238
218 Buffer buf1; 239 Buffer buf1;
219 buf1.SetData(kTestData, 15); 240 buf1.SetData(kTestData, 15);
220 241
221 Buffer buf2; 242 Buffer buf2;
222 EXPECT_EQ(buf2.AppendData(15, setter), 15u); 243 EXPECT_EQ(buf2.AppendData(15, setter), 15u);
223 EXPECT_EQ(buf1, buf2); 244 EXPECT_EQ(buf1, buf2);
224 EXPECT_EQ(buf1.capacity(), buf2.capacity()); 245 EXPECT_EQ(buf1.capacity(), buf2.capacity());
246 EXPECT_FALSE(buf1.empty());
247 EXPECT_FALSE(buf2.empty());
225 } 248 }
226 249
227 TEST(BufferTest, TestLambdaAppendPartial) { 250 TEST(BufferTest, TestLambdaAppendPartial) {
228 auto setter = [] (rtc::ArrayView<uint8_t> av) { 251 auto setter = [] (rtc::ArrayView<uint8_t> av) {
229 for (int i = 0; i != 7; ++i) 252 for (int i = 0; i != 7; ++i)
230 av[i] = kTestData[i]; 253 av[i] = kTestData[i];
231 return 7; 254 return 7;
232 }; 255 };
233 256
234 Buffer buf; 257 Buffer buf;
235 EXPECT_EQ(buf.AppendData(15, setter), 7u); 258 EXPECT_EQ(buf.AppendData(15, setter), 7u);
236 EXPECT_EQ(buf.size(), 7u); // Size is exactly what we wrote. 259 EXPECT_EQ(buf.size(), 7u); // Size is exactly what we wrote.
237 EXPECT_GE(buf.capacity(), 7u); // Capacity is valid. 260 EXPECT_GE(buf.capacity(), 7u); // Capacity is valid.
238 EXPECT_NE(buf.data<char>(), nullptr); // Data is actually stored. 261 EXPECT_NE(buf.data<char>(), nullptr); // Data is actually stored.
262 EXPECT_FALSE(buf.empty());
239 } 263 }
240 264
241 TEST(BufferTest, TestMutableLambdaSetAppend) { 265 TEST(BufferTest, TestMutableLambdaSetAppend) {
242 uint8_t magic_number = 17; 266 uint8_t magic_number = 17;
243 auto setter = [magic_number] (rtc::ArrayView<uint8_t> av) mutable { 267 auto setter = [magic_number] (rtc::ArrayView<uint8_t> av) mutable {
244 for (int i = 0; i != 15; ++i) { 268 for (int i = 0; i != 15; ++i) {
245 av[i] = magic_number; 269 av[i] = magic_number;
246 ++magic_number; 270 ++magic_number;
247 } 271 }
248 return 15; 272 return 15;
249 }; 273 };
250 274
251 EXPECT_EQ(magic_number, 17); 275 EXPECT_EQ(magic_number, 17);
252 276
253 Buffer buf; 277 Buffer buf;
254 EXPECT_EQ(buf.SetData(15, setter), 15u); 278 EXPECT_EQ(buf.SetData(15, setter), 15u);
255 EXPECT_EQ(buf.AppendData(15, setter), 15u); 279 EXPECT_EQ(buf.AppendData(15, setter), 15u);
256 EXPECT_EQ(buf.size(), 30u); // Size is exactly what we wrote. 280 EXPECT_EQ(buf.size(), 30u); // Size is exactly what we wrote.
257 EXPECT_GE(buf.capacity(), 30u); // Capacity is valid. 281 EXPECT_GE(buf.capacity(), 30u); // Capacity is valid.
258 EXPECT_NE(buf.data<char>(), nullptr); // Data is actually stored. 282 EXPECT_NE(buf.data<char>(), nullptr); // Data is actually stored.
283 EXPECT_FALSE(buf.empty());
259 284
260 for (uint8_t i = 0; i != buf.size(); ++i) { 285 for (uint8_t i = 0; i != buf.size(); ++i) {
261 EXPECT_EQ(buf.data()[i], magic_number + i); 286 EXPECT_EQ(buf.data()[i], magic_number + i);
262 } 287 }
263 } 288 }
264 289
265 TEST(BufferTest, TestBracketRead) { 290 TEST(BufferTest, TestBracketRead) {
266 Buffer buf(kTestData, 7); 291 Buffer buf(kTestData, 7);
267 EXPECT_EQ(buf.size(), 7u); 292 EXPECT_EQ(buf.size(), 7u);
268 EXPECT_EQ(buf.capacity(), 7u); 293 EXPECT_EQ(buf.capacity(), 7u);
269 EXPECT_NE(buf.data(), nullptr); 294 EXPECT_NE(buf.data(), nullptr);
295 EXPECT_FALSE(buf.empty());
270 296
271 for (size_t i = 0; i != 7u; ++i) { 297 for (size_t i = 0; i != 7u; ++i) {
272 EXPECT_EQ(buf[i], kTestData[i]); 298 EXPECT_EQ(buf[i], kTestData[i]);
273 } 299 }
274 } 300 }
275 301
276 TEST(BufferTest, TestBracketReadConst) { 302 TEST(BufferTest, TestBracketReadConst) {
277 Buffer buf(kTestData, 7); 303 Buffer buf(kTestData, 7);
278 EXPECT_EQ(buf.size(), 7u); 304 EXPECT_EQ(buf.size(), 7u);
279 EXPECT_EQ(buf.capacity(), 7u); 305 EXPECT_EQ(buf.capacity(), 7u);
280 EXPECT_NE(buf.data(), nullptr); 306 EXPECT_NE(buf.data(), nullptr);
307 EXPECT_FALSE(buf.empty());
281 308
282 const Buffer& cbuf = buf; 309 const Buffer& cbuf = buf;
283 310
284 for (size_t i = 0; i != 7u; ++i) { 311 for (size_t i = 0; i != 7u; ++i) {
285 EXPECT_EQ(cbuf[i], kTestData[i]); 312 EXPECT_EQ(cbuf[i], kTestData[i]);
286 } 313 }
287 } 314 }
288 315
289 TEST(BufferTest, TestBracketWrite) { 316 TEST(BufferTest, TestBracketWrite) {
290 Buffer buf(7); 317 Buffer buf(7);
291 EXPECT_EQ(buf.size(), 7u); 318 EXPECT_EQ(buf.size(), 7u);
292 EXPECT_EQ(buf.capacity(), 7u); 319 EXPECT_EQ(buf.capacity(), 7u);
293 EXPECT_NE(buf.data(), nullptr); 320 EXPECT_NE(buf.data(), nullptr);
321 EXPECT_FALSE(buf.empty());
294 322
295 for (size_t i = 0; i != 7u; ++i) { 323 for (size_t i = 0; i != 7u; ++i) {
296 buf[i] = kTestData[i]; 324 buf[i] = kTestData[i];
297 } 325 }
298 326
299 for (size_t i = 0; i != 7u; ++i) { 327 for (size_t i = 0; i != 7u; ++i) {
300 EXPECT_EQ(buf[i], kTestData[i]); 328 EXPECT_EQ(buf[i], kTestData[i]);
301 } 329 }
302 } 330 }
303 331
304 TEST(BufferTest, TestInt16) { 332 TEST(BufferTest, TestInt16) {
305 static constexpr int16_t test_data[] = {14, 15, 16, 17, 18}; 333 static constexpr int16_t test_data[] = {14, 15, 16, 17, 18};
306 BufferT<int16_t> buf(test_data); 334 BufferT<int16_t> buf(test_data);
307 EXPECT_EQ(buf.size(), 5u); 335 EXPECT_EQ(buf.size(), 5u);
308 EXPECT_EQ(buf.capacity(), 5u); 336 EXPECT_EQ(buf.capacity(), 5u);
309 EXPECT_NE(buf.data(), nullptr); 337 EXPECT_NE(buf.data(), nullptr);
338 EXPECT_FALSE(buf.empty());
310 for (size_t i = 0; i != buf.size(); ++i) { 339 for (size_t i = 0; i != buf.size(); ++i) {
311 EXPECT_EQ(test_data[i], buf[i]); 340 EXPECT_EQ(test_data[i], buf[i]);
312 } 341 }
313 BufferT<int16_t> buf2(test_data); 342 BufferT<int16_t> buf2(test_data);
314 EXPECT_EQ(buf, buf2); 343 EXPECT_EQ(buf, buf2);
315 buf2[0] = 9; 344 buf2[0] = 9;
316 EXPECT_NE(buf, buf2); 345 EXPECT_NE(buf, buf2);
317 } 346 }
318 347
319 TEST(BufferTest, TestFloat) { 348 TEST(BufferTest, TestFloat) {
320 static constexpr float test_data[] = {14, 15, 16, 17, 18}; 349 static constexpr float test_data[] = {14, 15, 16, 17, 18};
321 BufferT<float> buf; 350 BufferT<float> buf;
322 EXPECT_EQ(buf.size(), 0u); 351 EXPECT_EQ(buf.size(), 0u);
323 EXPECT_EQ(buf.capacity(), 0u); 352 EXPECT_EQ(buf.capacity(), 0u);
324 EXPECT_EQ(buf.data(), nullptr); 353 EXPECT_EQ(buf.data(), nullptr);
354 EXPECT_TRUE(buf.empty());
325 buf.SetData(test_data); 355 buf.SetData(test_data);
326 EXPECT_EQ(buf.size(), 5u); 356 EXPECT_EQ(buf.size(), 5u);
327 EXPECT_EQ(buf.capacity(), 5u); 357 EXPECT_EQ(buf.capacity(), 5u);
328 EXPECT_NE(buf.data(), nullptr); 358 EXPECT_NE(buf.data(), nullptr);
359 EXPECT_FALSE(buf.empty());
329 float* p1 = buf.data(); 360 float* p1 = buf.data();
330 while (buf.data() == p1) { 361 while (buf.data() == p1) {
331 buf.AppendData(test_data); 362 buf.AppendData(test_data);
332 } 363 }
333 EXPECT_EQ(buf.size(), buf.capacity()); 364 EXPECT_EQ(buf.size(), buf.capacity());
334 EXPECT_GT(buf.size(), 5u); 365 EXPECT_GT(buf.size(), 5u);
335 EXPECT_EQ(buf.size() % 5, 0u); 366 EXPECT_EQ(buf.size() % 5, 0u);
336 EXPECT_NE(buf.data(), nullptr); 367 EXPECT_NE(buf.data(), nullptr);
337 for (size_t i = 0; i != buf.size(); ++i) { 368 for (size_t i = 0; i != buf.size(); ++i) {
338 EXPECT_EQ(test_data[i % 5], buf[i]); 369 EXPECT_EQ(test_data[i % 5], buf[i]);
339 } 370 }
340 } 371 }
341 372
342 TEST(BufferTest, TestStruct) { 373 TEST(BufferTest, TestStruct) {
343 struct BloodStone { 374 struct BloodStone {
344 bool blood; 375 bool blood;
345 const char* stone; 376 const char* stone;
346 }; 377 };
347 BufferT<BloodStone> buf(4); 378 BufferT<BloodStone> buf(4);
348 EXPECT_EQ(buf.size(), 4u); 379 EXPECT_EQ(buf.size(), 4u);
349 EXPECT_EQ(buf.capacity(), 4u); 380 EXPECT_EQ(buf.capacity(), 4u);
350 EXPECT_NE(buf.data(), nullptr); 381 EXPECT_NE(buf.data(), nullptr);
382 EXPECT_FALSE(buf.empty());
351 BufferT<BloodStone*> buf2(4); 383 BufferT<BloodStone*> buf2(4);
352 for (size_t i = 0; i < buf2.size(); ++i) { 384 for (size_t i = 0; i < buf2.size(); ++i) {
353 buf2[i] = &buf[i]; 385 buf2[i] = &buf[i];
354 } 386 }
355 static const char kObsidian[] = "obsidian"; 387 static const char kObsidian[] = "obsidian";
356 buf2[2]->stone = kObsidian; 388 buf2[2]->stone = kObsidian;
357 EXPECT_EQ(kObsidian, buf[2].stone); 389 EXPECT_EQ(kObsidian, buf[2].stone);
358 } 390 }
359 391
360 } // namespace rtc 392 } // namespace rtc
OLDNEW
« no previous file with comments | « webrtc/base/buffer.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698