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 171 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
182 buf.SetData(kTestData, 15); | 182 buf.SetData(kTestData, 15); |
183 EXPECT_EQ(buf.size(), 15u); | 183 EXPECT_EQ(buf.size(), 15u); |
184 EXPECT_EQ(buf.capacity(), 15u); | 184 EXPECT_EQ(buf.capacity(), 15u); |
185 const char *data = buf.data<char>(); | 185 const char *data = buf.data<char>(); |
186 buf.Clear(); | 186 buf.Clear(); |
187 EXPECT_EQ(buf.size(), 0u); | 187 EXPECT_EQ(buf.size(), 0u); |
188 EXPECT_EQ(buf.capacity(), 15u); // Hasn't shrunk. | 188 EXPECT_EQ(buf.capacity(), 15u); // Hasn't shrunk. |
189 EXPECT_EQ(buf.data<char>(), data); // No reallocation. | 189 EXPECT_EQ(buf.data<char>(), data); // No reallocation. |
190 } | 190 } |
191 | 191 |
| 192 TEST(BufferTest, TestLambdaSetAppend) { |
| 193 auto setter = [] (rtc::ArrayView<uint8_t> av) { |
| 194 for (int i = 0; i != 15; ++i) |
| 195 av[i] = kTestData[i]; |
| 196 return 15; |
| 197 }; |
| 198 |
| 199 Buffer buf1; |
| 200 buf1.SetData(kTestData, 15); |
| 201 buf1.AppendData(kTestData, 15); |
| 202 |
| 203 Buffer buf2; |
| 204 EXPECT_EQ(buf2.SetData(15, setter), 15u); |
| 205 EXPECT_EQ(buf2.AppendData(15, setter), 15u); |
| 206 EXPECT_EQ(buf1, buf2); |
| 207 EXPECT_EQ(buf1.capacity(), buf2.capacity()); |
| 208 } |
| 209 |
| 210 TEST(BufferTest, TestLambdaSetAppendSigned) { |
| 211 auto setter = [] (rtc::ArrayView<int8_t> av) { |
| 212 for (int i = 0; i != 15; ++i) |
| 213 av[i] = kTestData[i]; |
| 214 return 15; |
| 215 }; |
| 216 |
| 217 Buffer buf1; |
| 218 buf1.SetData(kTestData, 15); |
| 219 buf1.AppendData(kTestData, 15); |
| 220 |
| 221 Buffer buf2; |
| 222 EXPECT_EQ(buf2.SetData<int8_t>(15, setter), 15u); |
| 223 EXPECT_EQ(buf2.AppendData<int8_t>(15, setter), 15u); |
| 224 EXPECT_EQ(buf1, buf2); |
| 225 EXPECT_EQ(buf1.capacity(), buf2.capacity()); |
| 226 } |
| 227 |
| 228 TEST(BufferTest, TestLambdaAppendEmpty) { |
| 229 auto setter = [] (rtc::ArrayView<uint8_t> av) { |
| 230 for (int i = 0; i != 15; ++i) |
| 231 av[i] = kTestData[i]; |
| 232 return 15; |
| 233 }; |
| 234 |
| 235 Buffer buf1; |
| 236 buf1.SetData(kTestData, 15); |
| 237 |
| 238 Buffer buf2; |
| 239 EXPECT_EQ(buf2.AppendData(15, setter), 15u); |
| 240 EXPECT_EQ(buf1, buf2); |
| 241 EXPECT_EQ(buf1.capacity(), buf2.capacity()); |
| 242 } |
| 243 |
| 244 TEST(BufferTest, TestLambdaAppendPartial) { |
| 245 auto setter = [] (rtc::ArrayView<uint8_t> av) { |
| 246 for (int i = 0; i != 7; ++i) |
| 247 av[i] = kTestData[i]; |
| 248 return 7; |
| 249 }; |
| 250 |
| 251 Buffer buf; |
| 252 EXPECT_EQ(buf.AppendData(15, setter), 7u); |
| 253 EXPECT_EQ(buf.size(), 7u); // Size is exactly what we wrote. |
| 254 EXPECT_GE(buf.capacity(), 7u); // Capacity is valid. |
| 255 EXPECT_NE(buf.data<char>(), nullptr); // Data is actually stored. |
| 256 } |
| 257 |
192 } // namespace rtc | 258 } // namespace rtc |
OLD | NEW |