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 |
| 13 #include "webrtc/base/array_view.h" |
12 #include "webrtc/base/gunit.h" | 14 #include "webrtc/base/gunit.h" |
13 | 15 |
14 #include <type_traits> | 16 #include <type_traits> |
15 #include <utility> | 17 #include <utility> |
16 | 18 |
17 namespace rtc { | 19 namespace rtc { |
18 | 20 |
19 namespace { | 21 namespace { |
20 | 22 |
21 // clang-format off | 23 // clang-format off |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
67 EXPECT_EQ(0, memcmp(buf.data(), kTestData, 16)); | 69 EXPECT_EQ(0, memcmp(buf.data(), kTestData, 16)); |
68 } | 70 } |
69 | 71 |
70 TEST(BufferTest, TestSetData) { | 72 TEST(BufferTest, TestSetData) { |
71 Buffer buf(kTestData + 4, 7); | 73 Buffer buf(kTestData + 4, 7); |
72 buf.SetData(kTestData, 9); | 74 buf.SetData(kTestData, 9); |
73 EXPECT_EQ(buf.size(), 9u); | 75 EXPECT_EQ(buf.size(), 9u); |
74 EXPECT_EQ(buf.capacity(), 7u * 3 / 2); | 76 EXPECT_EQ(buf.capacity(), 7u * 3 / 2); |
75 EXPECT_FALSE(buf.empty()); | 77 EXPECT_FALSE(buf.empty()); |
76 EXPECT_EQ(0, memcmp(buf.data(), kTestData, 9)); | 78 EXPECT_EQ(0, memcmp(buf.data(), kTestData, 9)); |
| 79 Buffer buf2; |
| 80 buf2.SetData(buf); |
| 81 EXPECT_EQ(buf.size(), 9u); |
| 82 EXPECT_EQ(buf.capacity(), 7u * 3 / 2); |
| 83 EXPECT_EQ(0, memcmp(buf.data(), kTestData, 9)); |
77 } | 84 } |
78 | 85 |
79 TEST(BufferTest, TestAppendData) { | 86 TEST(BufferTest, TestAppendData) { |
80 Buffer buf(kTestData + 4, 3); | 87 Buffer buf(kTestData + 4, 3); |
81 buf.AppendData(kTestData + 10, 2); | 88 buf.AppendData(kTestData + 10, 2); |
82 const int8_t exp[] = {0x4, 0x5, 0x6, 0xa, 0xb}; | 89 const int8_t exp[] = {0x4, 0x5, 0x6, 0xa, 0xb}; |
83 EXPECT_EQ(buf, Buffer(exp)); | 90 EXPECT_EQ(buf, Buffer(exp)); |
| 91 Buffer buf2; |
| 92 buf2.AppendData(buf); |
| 93 buf2.AppendData(rtc::ArrayView<uint8_t>(buf)); |
| 94 const int8_t exp2[] = {0x4, 0x5, 0x6, 0xa, 0xb, 0x4, 0x5, 0x6, 0xa, 0xb}; |
| 95 EXPECT_EQ(buf2, Buffer(exp2)); |
| 96 } |
| 97 |
| 98 TEST(BufferTest, TestSetAndAppendWithUnknownArg) { |
| 99 struct TestDataContainer { |
| 100 size_t size() const { return 3; } |
| 101 const uint8_t* data() const { return kTestData; } |
| 102 }; |
| 103 Buffer buf; |
| 104 buf.SetData(TestDataContainer()); |
| 105 EXPECT_EQ(3u, buf.size()); |
| 106 EXPECT_EQ(Buffer(kTestData, 3), buf); |
| 107 buf.AppendData(TestDataContainer()); |
| 108 EXPECT_EQ(6u, buf.size()); |
| 109 EXPECT_EQ(0, memcmp(buf.data(), kTestData, 3)); |
| 110 EXPECT_EQ(0, memcmp(buf.data() + 3, kTestData, 3)); |
84 } | 111 } |
85 | 112 |
86 TEST(BufferTest, TestSetSizeSmaller) { | 113 TEST(BufferTest, TestSetSizeSmaller) { |
87 Buffer buf; | 114 Buffer buf; |
88 buf.SetData(kTestData, 15); | 115 buf.SetData(kTestData, 15); |
89 buf.SetSize(10); | 116 buf.SetSize(10); |
90 EXPECT_EQ(buf.size(), 10u); | 117 EXPECT_EQ(buf.size(), 10u); |
91 EXPECT_EQ(buf.capacity(), 15u); // Hasn't shrunk. | 118 EXPECT_EQ(buf.capacity(), 15u); // Hasn't shrunk. |
92 EXPECT_FALSE(buf.empty()); | 119 EXPECT_FALSE(buf.empty()); |
93 EXPECT_EQ(buf, Buffer(kTestData, 10)); | 120 EXPECT_EQ(buf, Buffer(kTestData, 10)); |
(...skipping 289 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
383 BufferT<BloodStone*> buf2(4); | 410 BufferT<BloodStone*> buf2(4); |
384 for (size_t i = 0; i < buf2.size(); ++i) { | 411 for (size_t i = 0; i < buf2.size(); ++i) { |
385 buf2[i] = &buf[i]; | 412 buf2[i] = &buf[i]; |
386 } | 413 } |
387 static const char kObsidian[] = "obsidian"; | 414 static const char kObsidian[] = "obsidian"; |
388 buf2[2]->stone = kObsidian; | 415 buf2[2]->stone = kObsidian; |
389 EXPECT_EQ(kObsidian, buf[2].stone); | 416 EXPECT_EQ(kObsidian, buf[2].stone); |
390 } | 417 } |
391 | 418 |
392 } // namespace rtc | 419 } // namespace rtc |
OLD | NEW |