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

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

Issue 2293983002: rtc::Buffer: Let SetData and AppendData accept anything with .data() and .size() (Closed)
Patch Set: Use rtc::HasDataAndSize (née rtc::internal::HasDataAndSize) 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
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
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
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
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
OLDNEW
« no previous file with comments | « webrtc/base/buffer.h ('k') | webrtc/base/type_traits.h » ('j') | webrtc/base/type_traits.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698