OLD | NEW |
---|---|
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 |
11 #include "webrtc/base/buffer.h" | 11 #include "webrtc/base/buffer.h" |
12 #include "webrtc/base/gunit.h" | 12 #include "webrtc/base/gunit.h" |
13 | 13 |
14 #include <algorithm> // std::swap (pre-C++11) | 14 #include <type_traits> |
15 #include <utility> // std::swap (C++11 and later) | 15 #include <utility> |
16 | 16 |
17 namespace rtc { | 17 namespace rtc { |
18 | 18 |
19 namespace { | 19 namespace { |
20 | 20 |
21 // clang-format off | 21 // clang-format off |
22 const uint8_t kTestData[] = {0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, | 22 const uint8_t kTestData[] = {0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, |
23 0x8, 0x9, 0xa, 0xb, 0xc, 0xd, 0xe, 0xf}; | 23 0x8, 0x9, 0xa, 0xb, 0xc, 0xd, 0xe, 0xf}; |
24 // clang-format on | 24 // clang-format on |
25 | 25 |
(...skipping 268 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
294 | 294 |
295 for (size_t i = 0; i != 7u; ++i) { | 295 for (size_t i = 0; i != 7u; ++i) { |
296 buf[i] = kTestData[i]; | 296 buf[i] = kTestData[i]; |
297 } | 297 } |
298 | 298 |
299 for (size_t i = 0; i != 7u; ++i) { | 299 for (size_t i = 0; i != 7u; ++i) { |
300 EXPECT_EQ(buf[i], kTestData[i]); | 300 EXPECT_EQ(buf[i], kTestData[i]); |
301 } | 301 } |
302 } | 302 } |
303 | 303 |
304 TEST(BufferTest, TestInt16) { | |
305 static constexpr int16_t test_data[] = {14, 15, 16, 17, 18}; | |
306 BufferT<int16_t> buf(test_data); | |
307 EXPECT_EQ(buf.size(), 5u); | |
308 EXPECT_EQ(buf.capacity(), 5u); | |
309 EXPECT_NE(buf.data(), nullptr); | |
310 for (size_t i = 0; i != buf.size(); ++i) { | |
311 EXPECT_EQ(test_data[i], buf[i]); | |
312 } | |
313 BufferT<int16_t> buf2(test_data); | |
314 EXPECT_EQ(buf, buf2); | |
315 buf2[0] = 9; | |
316 EXPECT_NE(buf, buf2); | |
317 } | |
318 | |
319 TEST(BufferTest, TestFloat) { | |
320 static constexpr float test_data[] = {14, 15, 16, 17, 18}; | |
321 BufferT<float> buf; | |
322 EXPECT_EQ(buf.size(), 0u); | |
323 EXPECT_EQ(buf.capacity(), 0u); | |
324 EXPECT_EQ(buf.data(), nullptr); | |
325 buf.SetData(test_data); | |
326 EXPECT_EQ(buf.size(), 5u); | |
327 EXPECT_EQ(buf.capacity(), 5u); | |
328 EXPECT_NE(buf.data(), nullptr); | |
329 float* p1 = buf.data(); | |
330 while (buf.data() == p1) { | |
331 buf.AppendData(test_data); | |
332 } | |
333 EXPECT_EQ(buf.size(), buf.capacity()); | |
334 EXPECT_GT(buf.size(), 5u); | |
335 EXPECT_EQ(buf.size() % 5, 0u); | |
336 EXPECT_NE(buf.data(), nullptr); | |
337 for (size_t i = 0; i != buf.size(); ++i) { | |
338 EXPECT_EQ(test_data[i % 5], buf[i]); | |
339 } | |
340 } | |
341 | |
342 TEST(BufferTest, TestStruct) { | |
343 struct BloodStone { | |
344 bool blood; | |
345 const char* stone; | |
346 }; | |
347 BufferT<BloodStone> buf(4); | |
348 EXPECT_EQ(buf.size(), 4u); | |
349 EXPECT_EQ(buf.capacity(), 4u); | |
350 EXPECT_NE(buf.data(), nullptr); | |
351 BufferT<BloodStone*> buf2(4); | |
352 for (size_t i = 0; i < buf2.size(); ++i) { | |
353 buf2[i] = &buf[i]; | |
354 } | |
355 static const char* kObsidian = "obsidian"; | |
tommi
2016/04/28 22:49:08
nit: static const char kObsidian[] = "obsidian"
kwiberg-webrtc
2016/04/29 00:00:19
OK, I guess, but why?
tommi
2016/04/29 07:46:38
It doesn't matter much here since it's a unit test
kwiberg-webrtc
2016/04/29 07:51:47
OK, those are definitely very good reasons. Thanks
| |
356 buf2[2]->stone = kObsidian; | |
tommi
2016/04/28 22:49:08
nit: and while this will continue to work, I guess
kwiberg-webrtc
2016/04/29 00:00:19
The current version works too, because of array-to
tommi
2016/04/29 07:46:38
yup, that's what I meant by "will continue to work
| |
357 EXPECT_EQ(kObsidian, buf[2].stone); | |
358 } | |
359 | |
304 } // namespace rtc | 360 } // namespace rtc |
OLD | NEW |