blob: e3c63a44e43f3d49ee5c932228d17efcbc744db3 [file] [log] [blame]
Avi Drissmane4622aa2022-09-08 20:36:061// Copyright 2015 The Chromium Authors
dcheng2ba07d1f2015-12-14 20:07:142// 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/memory/ptr_util.h"
6
avi9beac252015-12-24 08:44:477#include <stddef.h>
8
dcheng2ba07d1f2015-12-14 20:07:149#include "testing/gtest/include/gtest/gtest.h"
10
11namespace base {
12
13namespace {
14
15class DeleteCounter {
16 public:
17 DeleteCounter() { ++count_; }
18 ~DeleteCounter() { --count_; }
19
20 static size_t count() { return count_; }
21
22 private:
23 static size_t count_;
24};
25
26size_t DeleteCounter::count_ = 0;
27
28} // namespace
29
30TEST(PtrUtilTest, WrapUnique) {
31 EXPECT_EQ(0u, DeleteCounter::count());
32 DeleteCounter* counter = new DeleteCounter;
33 EXPECT_EQ(1u, DeleteCounter::count());
34 std::unique_ptr<DeleteCounter> owned_counter = WrapUnique(counter);
35 EXPECT_EQ(1u, DeleteCounter::count());
36 owned_counter.reset();
37 EXPECT_EQ(0u, DeleteCounter::count());
38}
39
dcheng2ba07d1f2015-12-14 20:07:1440} // namespace base