Index: base/memory/ptr_util_unittest.cc |
diff --git a/base/memory/ptr_util_unittest.cc b/base/memory/ptr_util_unittest.cc |
index 5a90b8e7ffd7db68967669d18134169a24ca0da7..b0593bf8a8365f58147e7546e6f1e8a3e9ea96e1 100644 |
--- a/base/memory/ptr_util_unittest.cc |
+++ b/base/memory/ptr_util_unittest.cc |
@@ -23,6 +23,19 @@ class DeleteCounter { |
static size_t count_; |
}; |
+struct SumUpDeleter { |
+ explicit SumUpDeleter(int* value) : value_(value) { |
+ } |
+ |
+ void operator()(int* x) { |
+ if (x) |
+ *value_ += *x; |
+ delete x; |
+ } |
+ |
+ int* value_; |
+}; |
+ |
size_t DeleteCounter::count_ = 0; |
} // namespace |
@@ -37,6 +50,14 @@ TEST(PtrUtilTest, WrapUnique) { |
EXPECT_EQ(0u, DeleteCounter::count()); |
} |
+TEST(PtrUtilTest, WrapUniqueWithDeleter) { |
+ int sum = 0; |
+ auto p = WrapUnique(new int(42), SumUpDeleter(&sum)); |
+ EXPECT_EQ(0, sum); |
+ p = nullptr; |
+ EXPECT_EQ(42, sum); |
+} |
+ |
TEST(PtrUtilTest, MakeUniqueScalar) { |
auto s = MakeUnique<std::string>(); |
EXPECT_EQ("", *s); |