diff options
Diffstat (limited to 'core/fxcrt/cfx_retain_ptr_unittest.cpp')
-rw-r--r-- | core/fxcrt/cfx_retain_ptr_unittest.cpp | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/core/fxcrt/cfx_retain_ptr_unittest.cpp b/core/fxcrt/cfx_retain_ptr_unittest.cpp index 692beb82ff..f9a4ecb74f 100644 --- a/core/fxcrt/cfx_retain_ptr_unittest.cpp +++ b/core/fxcrt/cfx_retain_ptr_unittest.cpp @@ -128,6 +128,27 @@ TEST(fxcrt, RetainPtrSwap) { EXPECT_EQ(1, obj2.release_count()); } +TEST(fxcrt, RetainPtrLeak) { + PseudoRetainable obj; + PseudoRetainable* leak; + { + CFX_RetainPtr<PseudoRetainable> ptr(&obj); + leak = ptr.Leak(); + EXPECT_EQ(1, obj.retain_count()); + EXPECT_EQ(0, obj.release_count()); + } + EXPECT_EQ(1, obj.retain_count()); + EXPECT_EQ(0, obj.release_count()); + { + CFX_RetainPtr<PseudoRetainable> ptr; + ptr.Unleak(leak); + EXPECT_EQ(1, obj.retain_count()); + EXPECT_EQ(0, obj.release_count()); + } + EXPECT_EQ(1, obj.retain_count()); + EXPECT_EQ(1, obj.release_count()); +} + TEST(fxcrt, RetainPtrSwapNull) { PseudoRetainable obj1; { |