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 |
(...skipping 29 matching lines...) Expand all Loading... |
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 |
OLD | NEW |