Index: core/fxcrt/cfx_retain_ptr_unittest.cpp |
diff --git a/core/fxcrt/cfx_retain_ptr_unittest.cpp b/core/fxcrt/cfx_retain_ptr_unittest.cpp |
index 692beb82ffdf3eadd21d408007a2617ea31a5d85..f9a4ecb74ffb6446209ebfa8644f2b7459859618 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; |
{ |