blob: 632ca81240d3cf4b6fa5895fedf035b53b16e58c [file] [log] [blame]
henrike@webrtc.orgf0488722014-05-13 18:00:26 +00001/*
2 * Copyright 2004 The WebRTC Project Authors. All rights reserved.
3 *
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
6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree.
9 */
10
11#include "webrtc/base/buffer.h"
12#include "webrtc/base/gunit.h"
13
14namespace rtc {
15
16static const char kTestData[] = {
17 0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xA, 0xB, 0xC, 0xD, 0xE, 0xF
18};
19
20TEST(BufferTest, TestConstructDefault) {
21 Buffer buf;
kwiberg@webrtc.orgeebcab52015-03-24 09:19:06 +000022 EXPECT_EQ(0U, buf.size());
henrike@webrtc.orgf0488722014-05-13 18:00:26 +000023 EXPECT_EQ(0U, buf.capacity());
24 EXPECT_EQ(Buffer(), buf);
25}
26
27TEST(BufferTest, TestConstructEmptyWithCapacity) {
28 Buffer buf(NULL, 0, 256U);
kwiberg@webrtc.orgeebcab52015-03-24 09:19:06 +000029 EXPECT_EQ(0U, buf.size());
henrike@webrtc.orgf0488722014-05-13 18:00:26 +000030 EXPECT_EQ(256U, buf.capacity());
31 EXPECT_EQ(Buffer(), buf);
32}
33
34TEST(BufferTest, TestConstructData) {
35 Buffer buf(kTestData, sizeof(kTestData));
kwiberg@webrtc.orgeebcab52015-03-24 09:19:06 +000036 EXPECT_EQ(sizeof(kTestData), buf.size());
henrike@webrtc.orgf0488722014-05-13 18:00:26 +000037 EXPECT_EQ(sizeof(kTestData), buf.capacity());
38 EXPECT_EQ(0, memcmp(buf.data(), kTestData, sizeof(kTestData)));
39 EXPECT_EQ(Buffer(kTestData, sizeof(kTestData)), buf);
40}
41
42TEST(BufferTest, TestConstructDataWithCapacity) {
43 Buffer buf(kTestData, sizeof(kTestData), 256U);
kwiberg@webrtc.orgeebcab52015-03-24 09:19:06 +000044 EXPECT_EQ(sizeof(kTestData), buf.size());
henrike@webrtc.orgf0488722014-05-13 18:00:26 +000045 EXPECT_EQ(256U, buf.capacity());
46 EXPECT_EQ(0, memcmp(buf.data(), kTestData, sizeof(kTestData)));
47 EXPECT_EQ(Buffer(kTestData, sizeof(kTestData)), buf);
48}
49
50TEST(BufferTest, TestConstructCopy) {
51 Buffer buf1(kTestData, sizeof(kTestData), 256), buf2(buf1);
kwiberg@webrtc.orgeebcab52015-03-24 09:19:06 +000052 EXPECT_EQ(sizeof(kTestData), buf2.size());
henrike@webrtc.orgf0488722014-05-13 18:00:26 +000053 EXPECT_EQ(sizeof(kTestData), buf2.capacity()); // capacity isn't copied
54 EXPECT_EQ(0, memcmp(buf2.data(), kTestData, sizeof(kTestData)));
55 EXPECT_EQ(buf1, buf2);
56}
57
58TEST(BufferTest, TestAssign) {
59 Buffer buf1, buf2(kTestData, sizeof(kTestData), 256);
60 EXPECT_NE(buf1, buf2);
61 buf1 = buf2;
kwiberg@webrtc.orgeebcab52015-03-24 09:19:06 +000062 EXPECT_EQ(sizeof(kTestData), buf1.size());
henrike@webrtc.orgf0488722014-05-13 18:00:26 +000063 EXPECT_EQ(sizeof(kTestData), buf1.capacity()); // capacity isn't copied
64 EXPECT_EQ(0, memcmp(buf1.data(), kTestData, sizeof(kTestData)));
65 EXPECT_EQ(buf1, buf2);
66}
67
68TEST(BufferTest, TestSetData) {
69 Buffer buf;
70 buf.SetData(kTestData, sizeof(kTestData));
kwiberg@webrtc.orgeebcab52015-03-24 09:19:06 +000071 EXPECT_EQ(sizeof(kTestData), buf.size());
henrike@webrtc.orgf0488722014-05-13 18:00:26 +000072 EXPECT_EQ(sizeof(kTestData), buf.capacity());
73 EXPECT_EQ(0, memcmp(buf.data(), kTestData, sizeof(kTestData)));
74}
75
76TEST(BufferTest, TestAppendData) {
77 Buffer buf(kTestData, sizeof(kTestData));
78 buf.AppendData(kTestData, sizeof(kTestData));
kwiberg@webrtc.orgeebcab52015-03-24 09:19:06 +000079 EXPECT_EQ(2 * sizeof(kTestData), buf.size());
henrike@webrtc.orgf0488722014-05-13 18:00:26 +000080 EXPECT_EQ(2 * sizeof(kTestData), buf.capacity());
81 EXPECT_EQ(0, memcmp(buf.data(), kTestData, sizeof(kTestData)));
82 EXPECT_EQ(0, memcmp(buf.data() + sizeof(kTestData),
83 kTestData, sizeof(kTestData)));
84}
85
kwiberg@webrtc.orgeebcab52015-03-24 09:19:06 +000086TEST(BufferTest, TestSetSizeSmaller) {
henrike@webrtc.orgf0488722014-05-13 18:00:26 +000087 Buffer buf;
88 buf.SetData(kTestData, sizeof(kTestData));
kwiberg@webrtc.orgeebcab52015-03-24 09:19:06 +000089 buf.SetSize(sizeof(kTestData) / 2);
90 EXPECT_EQ(sizeof(kTestData) / 2, buf.size());
henrike@webrtc.orgf0488722014-05-13 18:00:26 +000091 EXPECT_EQ(sizeof(kTestData), buf.capacity());
92 EXPECT_EQ(0, memcmp(buf.data(), kTestData, sizeof(kTestData) / 2));
93}
94
kwiberg@webrtc.orgeebcab52015-03-24 09:19:06 +000095TEST(BufferTest, TestSetSizeLarger) {
henrike@webrtc.orgf0488722014-05-13 18:00:26 +000096 Buffer buf;
97 buf.SetData(kTestData, sizeof(kTestData));
kwiberg@webrtc.orgeebcab52015-03-24 09:19:06 +000098 buf.SetSize(sizeof(kTestData) * 2);
99 EXPECT_EQ(sizeof(kTestData) * 2, buf.size());
henrike@webrtc.orgf0488722014-05-13 18:00:26 +0000100 EXPECT_EQ(sizeof(kTestData) * 2, buf.capacity());
101 EXPECT_EQ(0, memcmp(buf.data(), kTestData, sizeof(kTestData)));
102}
103
104TEST(BufferTest, TestSetCapacitySmaller) {
105 Buffer buf;
106 buf.SetData(kTestData, sizeof(kTestData));
107 buf.SetCapacity(sizeof(kTestData) / 2); // should be ignored
kwiberg@webrtc.orgeebcab52015-03-24 09:19:06 +0000108 EXPECT_EQ(sizeof(kTestData), buf.size());
henrike@webrtc.orgf0488722014-05-13 18:00:26 +0000109 EXPECT_EQ(sizeof(kTestData), buf.capacity());
110 EXPECT_EQ(0, memcmp(buf.data(), kTestData, sizeof(kTestData)));
111}
112
113TEST(BufferTest, TestSetCapacityLarger) {
114 Buffer buf(kTestData, sizeof(kTestData));
115 buf.SetCapacity(sizeof(kTestData) * 2);
kwiberg@webrtc.orgeebcab52015-03-24 09:19:06 +0000116 EXPECT_EQ(sizeof(kTestData), buf.size());
henrike@webrtc.orgf0488722014-05-13 18:00:26 +0000117 EXPECT_EQ(sizeof(kTestData) * 2, buf.capacity());
118 EXPECT_EQ(0, memcmp(buf.data(), kTestData, sizeof(kTestData)));
119}
120
kwiberg@webrtc.orgeebcab52015-03-24 09:19:06 +0000121TEST(BufferTest, TestSetCapacityThenSetSize) {
henrike@webrtc.orgf0488722014-05-13 18:00:26 +0000122 Buffer buf(kTestData, sizeof(kTestData));
123 buf.SetCapacity(sizeof(kTestData) * 4);
124 memcpy(buf.data() + sizeof(kTestData), kTestData, sizeof(kTestData));
kwiberg@webrtc.orgeebcab52015-03-24 09:19:06 +0000125 buf.SetSize(sizeof(kTestData) * 2);
126 EXPECT_EQ(sizeof(kTestData) * 2, buf.size());
henrike@webrtc.orgf0488722014-05-13 18:00:26 +0000127 EXPECT_EQ(sizeof(kTestData) * 4, buf.capacity());
128 EXPECT_EQ(0, memcmp(buf.data(), kTestData, sizeof(kTestData)));
129 EXPECT_EQ(0, memcmp(buf.data() + sizeof(kTestData),
130 kTestData, sizeof(kTestData)));
131}
132
133TEST(BufferTest, TestTransfer) {
134 Buffer buf1(kTestData, sizeof(kTestData), 256U), buf2;
135 buf1.TransferTo(&buf2);
kwiberg@webrtc.orgeebcab52015-03-24 09:19:06 +0000136 EXPECT_EQ(0U, buf1.size());
henrike@webrtc.orgf0488722014-05-13 18:00:26 +0000137 EXPECT_EQ(0U, buf1.capacity());
kwiberg@webrtc.orgeebcab52015-03-24 09:19:06 +0000138 EXPECT_EQ(sizeof(kTestData), buf2.size());
henrike@webrtc.orgf0488722014-05-13 18:00:26 +0000139 EXPECT_EQ(256U, buf2.capacity()); // capacity does transfer
140 EXPECT_EQ(0, memcmp(buf2.data(), kTestData, sizeof(kTestData)));
141}
142
143} // namespace rtc