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

Side by Side Diff: base/pickle_unittest.cc

Issue 1852433005: Convert //base to use std::unique_ptr (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase after r384946 Created 4 years, 8 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
« no previous file with comments | « base/metrics/statistics_recorder_unittest.cc ('k') | base/power_monitor/power_monitor.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "base/pickle.h"
6
5 #include <limits.h> 7 #include <limits.h>
6 #include <stddef.h> 8 #include <stddef.h>
7 #include <stdint.h> 9 #include <stdint.h>
8 10
11 #include <memory>
9 #include <string> 12 #include <string>
10 13
11 #include "base/macros.h" 14 #include "base/macros.h"
12 #include "base/memory/scoped_ptr.h"
13 #include "base/pickle.h"
14 #include "base/strings/string16.h" 15 #include "base/strings/string16.h"
15 #include "base/strings/utf_string_conversions.h" 16 #include "base/strings/utf_string_conversions.h"
16 #include "testing/gtest/include/gtest/gtest.h" 17 #include "testing/gtest/include/gtest/gtest.h"
17 18
18 namespace base { 19 namespace base {
19 20
20 namespace { 21 namespace {
21 22
22 const bool testbool1 = false; 23 const bool testbool1 = false;
23 const bool testbool2 = true; 24 const bool testbool2 = true;
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after
156 EXPECT_DEATH(ignore_result(iter.ReadLong(&outlong)), ""); 157 EXPECT_DEATH(ignore_result(iter.ReadLong(&outlong)), "");
157 #endif 158 #endif
158 } else { 159 } else {
159 EXPECT_TRUE(iter.ReadLong(&outlong)); 160 EXPECT_TRUE(iter.ReadLong(&outlong));
160 EXPECT_EQ(testint64, outlong); 161 EXPECT_EQ(testint64, outlong);
161 } 162 }
162 } 163 }
163 164
164 // Tests that we can handle really small buffers. 165 // Tests that we can handle really small buffers.
165 TEST(PickleTest, SmallBuffer) { 166 TEST(PickleTest, SmallBuffer) {
166 scoped_ptr<char[]> buffer(new char[1]); 167 std::unique_ptr<char[]> buffer(new char[1]);
167 168
168 // We should not touch the buffer. 169 // We should not touch the buffer.
169 Pickle pickle(buffer.get(), 1); 170 Pickle pickle(buffer.get(), 1);
170 171
171 PickleIterator iter(pickle); 172 PickleIterator iter(pickle);
172 int data; 173 int data;
173 EXPECT_FALSE(iter.ReadInt(&data)); 174 EXPECT_FALSE(iter.ReadInt(&data));
174 } 175 }
175 176
176 // Tests that we can handle improper headers. 177 // Tests that we can handle improper headers.
(...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after
322 const char* start = reinterpret_cast<const char*>(pickle.data()); 323 const char* start = reinterpret_cast<const char*>(pickle.data());
323 const char* end = start + pickle.size(); 324 const char* end = start + pickle.size();
324 325
325 EXPECT_TRUE(end == Pickle::FindNext(pickle.header_size_, start, end)); 326 EXPECT_TRUE(end == Pickle::FindNext(pickle.header_size_, start, end));
326 EXPECT_TRUE(NULL == Pickle::FindNext(pickle.header_size_, start, end - 1)); 327 EXPECT_TRUE(NULL == Pickle::FindNext(pickle.header_size_, start, end - 1));
327 EXPECT_TRUE(end == Pickle::FindNext(pickle.header_size_, start, end + 1)); 328 EXPECT_TRUE(end == Pickle::FindNext(pickle.header_size_, start, end + 1));
328 } 329 }
329 330
330 TEST(PickleTest, FindNextWithIncompleteHeader) { 331 TEST(PickleTest, FindNextWithIncompleteHeader) {
331 size_t header_size = sizeof(Pickle::Header); 332 size_t header_size = sizeof(Pickle::Header);
332 scoped_ptr<char[]> buffer(new char[header_size - 1]); 333 std::unique_ptr<char[]> buffer(new char[header_size - 1]);
333 memset(buffer.get(), 0x1, header_size - 1); 334 memset(buffer.get(), 0x1, header_size - 1);
334 335
335 const char* start = buffer.get(); 336 const char* start = buffer.get();
336 const char* end = start + header_size - 1; 337 const char* end = start + header_size - 1;
337 338
338 EXPECT_TRUE(NULL == Pickle::FindNext(header_size, start, end)); 339 EXPECT_TRUE(NULL == Pickle::FindNext(header_size, start, end));
339 } 340 }
340 341
341 #if defined(COMPILER_MSVC) 342 #if defined(COMPILER_MSVC)
342 #pragma warning(push) 343 #pragma warning(push)
343 #pragma warning(disable: 4146) 344 #pragma warning(disable: 4146)
344 #endif 345 #endif
345 TEST(PickleTest, FindNextOverflow) { 346 TEST(PickleTest, FindNextOverflow) {
346 size_t header_size = sizeof(Pickle::Header); 347 size_t header_size = sizeof(Pickle::Header);
347 size_t header_size2 = 2 * header_size; 348 size_t header_size2 = 2 * header_size;
348 size_t payload_received = 100; 349 size_t payload_received = 100;
349 scoped_ptr<char[]> buffer(new char[header_size2 + payload_received]); 350 std::unique_ptr<char[]> buffer(new char[header_size2 + payload_received]);
350 const char* start = buffer.get(); 351 const char* start = buffer.get();
351 Pickle::Header* header = reinterpret_cast<Pickle::Header*>(buffer.get()); 352 Pickle::Header* header = reinterpret_cast<Pickle::Header*>(buffer.get());
352 const char* end = start + header_size2 + payload_received; 353 const char* end = start + header_size2 + payload_received;
353 // It is impossible to construct an overflow test otherwise. 354 // It is impossible to construct an overflow test otherwise.
354 if (sizeof(size_t) > sizeof(header->payload_size) || 355 if (sizeof(size_t) > sizeof(header->payload_size) ||
355 sizeof(uintptr_t) > sizeof(header->payload_size)) 356 sizeof(uintptr_t) > sizeof(header->payload_size))
356 return; 357 return;
357 358
358 header->payload_size = -(reinterpret_cast<uintptr_t>(start) + header_size2); 359 header->payload_size = -(reinterpret_cast<uintptr_t>(start) + header_size2);
359 EXPECT_TRUE(NULL == Pickle::FindNext(header_size2, start, end)); 360 EXPECT_TRUE(NULL == Pickle::FindNext(header_size2, start, end));
(...skipping 23 matching lines...) Expand all
383 EXPECT_TRUE(PickleIterator(pickle).GetReadPointerAndAdvance(1)); 384 EXPECT_TRUE(PickleIterator(pickle).GetReadPointerAndAdvance(1));
384 EXPECT_FALSE(PickleIterator(pickle).GetReadPointerAndAdvance(-1)); 385 EXPECT_FALSE(PickleIterator(pickle).GetReadPointerAndAdvance(-1));
385 EXPECT_TRUE(PickleIterator(pickle).GetReadPointerAndAdvance(bytes)); 386 EXPECT_TRUE(PickleIterator(pickle).GetReadPointerAndAdvance(bytes));
386 EXPECT_FALSE(PickleIterator(pickle).GetReadPointerAndAdvance(bytes + 1)); 387 EXPECT_FALSE(PickleIterator(pickle).GetReadPointerAndAdvance(bytes + 1));
387 EXPECT_FALSE(PickleIterator(pickle).GetReadPointerAndAdvance(INT_MAX)); 388 EXPECT_FALSE(PickleIterator(pickle).GetReadPointerAndAdvance(INT_MAX));
388 EXPECT_FALSE(PickleIterator(pickle).GetReadPointerAndAdvance(INT_MIN)); 389 EXPECT_FALSE(PickleIterator(pickle).GetReadPointerAndAdvance(INT_MIN));
389 } 390 }
390 391
391 TEST(PickleTest, Resize) { 392 TEST(PickleTest, Resize) {
392 size_t unit = Pickle::kPayloadUnit; 393 size_t unit = Pickle::kPayloadUnit;
393 scoped_ptr<char[]> data(new char[unit]); 394 std::unique_ptr<char[]> data(new char[unit]);
394 char* data_ptr = data.get(); 395 char* data_ptr = data.get();
395 for (size_t i = 0; i < unit; i++) 396 for (size_t i = 0; i < unit; i++)
396 data_ptr[i] = 'G'; 397 data_ptr[i] = 'G';
397 398
398 // construct a message that will be exactly the size of one payload unit, 399 // construct a message that will be exactly the size of one payload unit,
399 // note that any data will have a 4-byte header indicating the size 400 // note that any data will have a 4-byte header indicating the size
400 const size_t payload_size_after_header = unit - sizeof(uint32_t); 401 const size_t payload_size_after_header = unit - sizeof(uint32_t);
401 Pickle pickle; 402 Pickle pickle;
402 pickle.WriteData( 403 pickle.WriteData(
403 data_ptr, static_cast<int>(payload_size_after_header - sizeof(uint32_t))); 404 data_ptr, static_cast<int>(payload_size_after_header - sizeof(uint32_t)));
(...skipping 254 matching lines...) Expand 10 before | Expand all | Expand 10 after
658 { 659 {
659 TestingPickle pickle; 660 TestingPickle pickle;
660 base::PickleSizer sizer; 661 base::PickleSizer sizer;
661 pickle.WriteBytes(testdata, testdatalen); 662 pickle.WriteBytes(testdata, testdatalen);
662 sizer.AddBytes(testdatalen); 663 sizer.AddBytes(testdatalen);
663 EXPECT_EQ(sizer.payload_size(), pickle.payload_size()); 664 EXPECT_EQ(sizer.payload_size(), pickle.payload_size());
664 } 665 }
665 } 666 }
666 667
667 } // namespace base 668 } // namespace base
OLDNEW
« no previous file with comments | « base/metrics/statistics_recorder_unittest.cc ('k') | base/power_monitor/power_monitor.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698