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.cpp23
1 files changed, 23 insertions, 0 deletions
diff --git a/core/fxcrt/cfx_retain_ptr_unittest.cpp b/core/fxcrt/cfx_retain_ptr_unittest.cpp
index 3168b5a4c7..f097b4b28c 100644
--- a/core/fxcrt/cfx_retain_ptr_unittest.cpp
+++ b/core/fxcrt/cfx_retain_ptr_unittest.cpp
@@ -65,6 +65,8 @@ TEST(fxcrt, RetainPtrMoveCtor) {
CFX_RetainPtr<PseudoRetainable> ptr1(&obj);
{
CFX_RetainPtr<PseudoRetainable> ptr2(std::move(ptr1));
+ EXPECT_EQ(nullptr, ptr1.Get());
+ EXPECT_EQ(&obj, ptr2.Get());
EXPECT_EQ(1, obj.retain_count());
EXPECT_EQ(0, obj.release_count());
}
@@ -185,6 +187,27 @@ TEST(fxcrt, RetainPtrAssign) {
EXPECT_EQ(2, obj.release_count());
}
+TEST(fxcrt, RetainPtrMoveAssign) {
+ PseudoRetainable obj;
+ {
+ CFX_RetainPtr<PseudoRetainable> ptr1(&obj);
+ {
+ CFX_RetainPtr<PseudoRetainable> ptr2;
+ EXPECT_EQ(&obj, ptr1.Get());
+ EXPECT_EQ(nullptr, ptr2.Get());
+ ptr2 = std::move(ptr1);
+ EXPECT_EQ(nullptr, ptr1.Get());
+ EXPECT_EQ(&obj, ptr2.Get());
+ EXPECT_EQ(1, obj.retain_count());
+ EXPECT_EQ(0, obj.release_count());
+ }
+ EXPECT_EQ(1, obj.retain_count());
+ EXPECT_EQ(1, obj.release_count());
+ }
+ EXPECT_EQ(1, obj.retain_count());
+ EXPECT_EQ(1, obj.release_count());
+}
+
TEST(fxcrt, RetainPtrEquals) {
PseudoRetainable obj1;
PseudoRetainable obj2;