Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(37)

Side by Side Diff: core/fxcrt/cfx_retain_ptr_unittest.cpp

Issue 2583093003: Add CFX_RetainPtr Leak() and Unleak() methods (Closed)
Patch Set: Reduce scope of change Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« core/fxcrt/cfx_retain_ptr.h ('K') | « core/fxcrt/cfx_retain_ptr.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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"
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
121 EXPECT_EQ(1, obj1.release_count()); 121 EXPECT_EQ(1, obj1.release_count());
122 EXPECT_EQ(1, obj2.retain_count()); 122 EXPECT_EQ(1, obj2.retain_count());
123 EXPECT_EQ(0, obj2.release_count()); 123 EXPECT_EQ(0, obj2.release_count());
124 } 124 }
125 EXPECT_EQ(1, obj1.retain_count()); 125 EXPECT_EQ(1, obj1.retain_count());
126 EXPECT_EQ(1, obj1.release_count()); 126 EXPECT_EQ(1, obj1.release_count());
127 EXPECT_EQ(1, obj2.retain_count()); 127 EXPECT_EQ(1, obj2.retain_count());
128 EXPECT_EQ(1, obj2.release_count()); 128 EXPECT_EQ(1, obj2.release_count());
129 } 129 }
130 130
131 TEST(fxcrt, RetainPtrLeak) {
132 PseudoRetainable obj;
133 PseudoRetainable* leak;
134 {
135 CFX_RetainPtr<PseudoRetainable> ptr(&obj);
136 leak = ptr.Leak();
137 EXPECT_EQ(1, obj.retain_count());
138 EXPECT_EQ(0, obj.release_count());
139 }
140 EXPECT_EQ(1, obj.retain_count());
141 EXPECT_EQ(0, obj.release_count());
142 {
143 CFX_RetainPtr<PseudoRetainable> ptr;
144 ptr.Unleak(leak);
145 EXPECT_EQ(1, obj.retain_count());
146 EXPECT_EQ(0, obj.release_count());
147 }
148 EXPECT_EQ(1, obj.retain_count());
149 EXPECT_EQ(1, obj.release_count());
150 }
151
131 TEST(fxcrt, RetainPtrSwapNull) { 152 TEST(fxcrt, RetainPtrSwapNull) {
132 PseudoRetainable obj1; 153 PseudoRetainable obj1;
133 { 154 {
134 CFX_RetainPtr<PseudoRetainable> ptr1(&obj1); 155 CFX_RetainPtr<PseudoRetainable> ptr1(&obj1);
135 { 156 {
136 CFX_RetainPtr<PseudoRetainable> ptr2; 157 CFX_RetainPtr<PseudoRetainable> ptr2;
137 ptr1.Swap(ptr2); 158 ptr1.Swap(ptr2);
138 EXPECT_FALSE(ptr1); 159 EXPECT_FALSE(ptr1);
139 EXPECT_TRUE(ptr2); 160 EXPECT_TRUE(ptr2);
140 EXPECT_EQ(1, obj1.retain_count()); 161 EXPECT_EQ(1, obj1.retain_count());
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
216 237
217 TEST(fxcrt, RetainPtrMakeRetained) { 238 TEST(fxcrt, RetainPtrMakeRetained) {
218 auto ptr = pdfium::MakeRetain<CFX_Retainable>(); 239 auto ptr = pdfium::MakeRetain<CFX_Retainable>();
219 EXPECT_TRUE(ptr->HasOneRef()); 240 EXPECT_TRUE(ptr->HasOneRef());
220 { 241 {
221 CFX_RetainPtr<CFX_Retainable> other = ptr; 242 CFX_RetainPtr<CFX_Retainable> other = ptr;
222 EXPECT_FALSE(ptr->HasOneRef()); 243 EXPECT_FALSE(ptr->HasOneRef());
223 } 244 }
224 EXPECT_TRUE(ptr->HasOneRef()); 245 EXPECT_TRUE(ptr->HasOneRef());
225 } 246 }
OLDNEW
« core/fxcrt/cfx_retain_ptr.h ('K') | « core/fxcrt/cfx_retain_ptr.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698