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

Side by Side Diff: base/containers/scoped_ptr_hash_map_unittest.cc

Issue 1099383002: Change ScopedPtrHashMap's 2nd template parameter (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 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
OLDNEW
(Empty)
1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "base/containers/scoped_ptr_hash_map.h"
6
7 #include "base/memory/scoped_ptr.h"
8 #include "testing/gtest/include/gtest/gtest.h"
9
10 namespace base {
11
12 struct DeleteCounter {
13 public:
14 DeleteCounter() {}
15 ~DeleteCounter() { g_delete_count++; }
16
17 static void ResetCounter() { g_delete_count = 0; }
18 static int delete_count() { return g_delete_count; }
19
20 private:
21 static int g_delete_count;
22 };
23
24 template <>
25 struct DefaultDeleter<DeleteCounter> {
26 public:
27 inline void operator()(DeleteCounter* ptr) const {
28 g_count++;
29 delete ptr;
30 }
31
32 static int count() { return g_count; }
33 static void ResetCounter() { g_count = 0; }
34
35 private:
36 static int g_count;
37 };
38
39 int DeleteCounter::g_delete_count = 0;
40 int DefaultDeleter<DeleteCounter>::g_count = 0;
41
42 } // namespace
43
44 TEST(ScopedPtrHashMapTest, CustomDeleter) {
45 int key = 123;
46 base::DeleteCounter::ResetCounter();
47 base::DefaultDeleter<base::DeleteCounter>::ResetCounter();
48 {
49 base::ScopedPtrHashMap<int, base::DeleteCounter> map;
50 map.set(key, scoped_ptr<base::DeleteCounter>(new base::DeleteCounter));
51 }
52 EXPECT_EQ(1, base::DeleteCounter::delete_count());
53 EXPECT_EQ(1, base::DefaultDeleter<base::DeleteCounter>::count());
54
55 base::DeleteCounter::ResetCounter();
56 base::DefaultDeleter<base::DeleteCounter>::ResetCounter();
57 {
58 base::ScopedPtrHashMap<int, base::DeleteCounter> map;
59 map.erase(
60 map.set(key, scoped_ptr<base::DeleteCounter>(new base::DeleteCounter)));
61 EXPECT_EQ(1, base::DeleteCounter::delete_count());
62 EXPECT_EQ(1, base::DefaultDeleter<base::DeleteCounter>::count());
63 }
64 EXPECT_EQ(1, base::DeleteCounter::delete_count());
65 EXPECT_EQ(1, base::DefaultDeleter<base::DeleteCounter>::count());
66
67 base::DeleteCounter::ResetCounter();
68 base::DefaultDeleter<base::DeleteCounter>::ResetCounter();
69 {
70 base::ScopedPtrHashMap<int, base::DeleteCounter> map;
71 map.set(key, scoped_ptr<base::DeleteCounter>(new base::DeleteCounter));
72 map.set(key, scoped_ptr<base::DeleteCounter>(new base::DeleteCounter));
73 map.set(key, scoped_ptr<base::DeleteCounter>(new base::DeleteCounter));
74 EXPECT_EQ(2, base::DeleteCounter::delete_count());
75 EXPECT_EQ(2, base::DefaultDeleter<base::DeleteCounter>::count());
76 }
77 EXPECT_EQ(3, base::DeleteCounter::delete_count());
78 EXPECT_EQ(3, base::DefaultDeleter<base::DeleteCounter>::count());
79 }
OLDNEW
« base/containers/scoped_ptr_hash_map.h ('K') | « base/containers/scoped_ptr_hash_map.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698