summaryrefslogtreecommitdiff
path: root/core/fxcrt/cfx_retain_ptr_unittest.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'core/fxcrt/cfx_retain_ptr_unittest.cpp')
-rw-r--r--core/fxcrt/cfx_retain_ptr_unittest.cpp21
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;
{