Index: skia/ext/refptr_unittest.cc |
diff --git a/skia/ext/refptr_unittest.cc b/skia/ext/refptr_unittest.cc |
index 1d63ed1b1e929b1041783a24c6f3fd32a854b968..0b512a2a70a3aca7bfe7b1758fd27f3d73aca5e4 100644 |
--- a/skia/ext/refptr_unittest.cc |
+++ b/skia/ext/refptr_unittest.cc |
@@ -9,6 +9,11 @@ |
namespace skia { |
namespace { |
+TEST(RefPtrTest, EmptyContruction) { |
+ RefPtr<SkRefCnt> refptr; |
+ EXPECT_FALSE(refptr); |
+} |
+ |
TEST(RefPtrTest, ReferenceCounting) { |
SkRefCnt* ref = new SkRefCnt(); |
EXPECT_EQ(1, ref->getRefCnt()); |
@@ -121,5 +126,24 @@ TEST(RefPtrTest, Upcast) { |
EXPECT_EQ(2, parent->getRefCnt()); |
} |
+bool Factory(SkRefCnt** refcnt) { |
+ *refcnt = new SkRefCnt; |
+ return true; |
+} |
+ |
+TEST(RefPtrTest, Receive) { |
+ RefPtr<SkRefCnt> refptr; |
+ Factory(refptr.ReceiveAndAdoptRef()); |
+ EXPECT_EQ(1, refptr->getRefCnt()); |
+} |
+ |
+TEST(RefPtrTest, ReceiveAndUseInSameExpression) { |
+ // This should assert, but only in debug mode. |
+#ifndef NDEBUG |
+ RefPtr<SkRefCnt> refptr; |
+ EXPECT_DEATH({ Factory(refptr.ReceiveAndAdoptRef()) && refptr.get(); }, ""); |
+#endif |
+} |
+ |
} // namespace |
} // namespace skia |