OLD | NEW |
1 // Copyright 2016 PDFium Authors. All rights reserved. | 1 // Copyright 2016 PDFium 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 "core/fxcrt/cfx_retain_ptr.h" | 5 #include "core/fxcrt/cfx_retain_ptr.h" |
6 | 6 |
7 #include <utility> | 7 #include <utility> |
8 | 8 |
9 #include "testing/fx_string_testhelpers.h" | 9 #include "testing/fx_string_testhelpers.h" |
10 #include "testing/gtest/include/gtest/gtest.h" | 10 #include "testing/gtest/include/gtest/gtest.h" |
11 | 11 |
12 namespace { | 12 namespace { |
13 | 13 |
14 class PseudoRetainable { | 14 class PseudoRetainable { |
15 public: | 15 public: |
16 PseudoRetainable() : retain_count_(0), release_count_(0) {} | 16 PseudoRetainable() : retain_count_(0), release_count_(0) {} |
17 void Retain() { ++retain_count_; } | |
18 void Release() { ++release_count_; } | |
19 int retain_count() const { return retain_count_; } | 17 int retain_count() const { return retain_count_; } |
20 int release_count() const { return release_count_; } | 18 int release_count() const { return release_count_; } |
21 | 19 |
22 private: | 20 private: |
| 21 template <typename U> |
| 22 friend struct ::ReleaseDeleter; |
| 23 template <typename U> |
| 24 friend class ::CFX_RetainPtr; |
| 25 |
| 26 void Retain() { ++retain_count_; } |
| 27 void Release() { ++release_count_; } |
| 28 |
23 int retain_count_; | 29 int retain_count_; |
24 int release_count_; | 30 int release_count_; |
25 }; | 31 }; |
26 | 32 |
27 } // namespace | 33 } // namespace |
28 | 34 |
29 TEST(fxcrt, RetainPtrNull) { | 35 TEST(fxcrt, RetainPtrNull) { |
30 CFX_RetainPtr<PseudoRetainable> ptr; | 36 CFX_RetainPtr<PseudoRetainable> ptr; |
31 EXPECT_EQ(nullptr, ptr.Get()); | 37 EXPECT_EQ(nullptr, ptr.Get()); |
32 } | 38 } |
(...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
216 | 222 |
217 TEST(fxcrt, RetainPtrMakeRetained) { | 223 TEST(fxcrt, RetainPtrMakeRetained) { |
218 auto ptr = pdfium::MakeRetain<CFX_Retainable>(); | 224 auto ptr = pdfium::MakeRetain<CFX_Retainable>(); |
219 EXPECT_TRUE(ptr->HasOneRef()); | 225 EXPECT_TRUE(ptr->HasOneRef()); |
220 { | 226 { |
221 CFX_RetainPtr<CFX_Retainable> other = ptr; | 227 CFX_RetainPtr<CFX_Retainable> other = ptr; |
222 EXPECT_FALSE(ptr->HasOneRef()); | 228 EXPECT_FALSE(ptr->HasOneRef()); |
223 } | 229 } |
224 EXPECT_TRUE(ptr->HasOneRef()); | 230 EXPECT_TRUE(ptr->HasOneRef()); |
225 } | 231 } |
OLD | NEW |