| Index: base/memory/ref_counted_unittest.cc
|
| diff --git a/base/memory/ref_counted_unittest.cc b/base/memory/ref_counted_unittest.cc
|
| index 7e73bde1155db44e11eb2bdf071091782a648ce6..f75cd38f19c86d530237200e37792a2cde9480eb 100644
|
| --- a/base/memory/ref_counted_unittest.cc
|
| +++ b/base/memory/ref_counted_unittest.cc
|
| @@ -10,9 +10,19 @@
|
| namespace {
|
|
|
| class SelfAssign : public base::RefCounted<SelfAssign> {
|
| + protected:
|
| + virtual ~SelfAssign() {}
|
| +
|
| + private:
|
| friend class base::RefCounted<SelfAssign>;
|
| +};
|
| +
|
| +class Derived : public SelfAssign {
|
| + protected:
|
| + ~Derived() override {}
|
|
|
| - ~SelfAssign() {}
|
| + private:
|
| + friend class base::RefCounted<Derived>;
|
| };
|
|
|
| class CheckDerivedMemberAccess : public scoped_refptr<SelfAssign> {
|
| @@ -72,3 +82,34 @@ TEST(RefCountedUnitTest, ScopedRefPtrToOpaque) {
|
| base::TestOpaqueRefCounted(p);
|
| base::TestOpaqueRefCounted(q);
|
| }
|
| +
|
| +TEST(RefCountedUnitTest, BooleanTesting) {
|
| + scoped_refptr<SelfAssign> p;
|
| + EXPECT_FALSE(p);
|
| + p = new SelfAssign;
|
| + EXPECT_TRUE(p);
|
| +}
|
| +
|
| +TEST(RefCountedUnitTest, Equality) {
|
| + scoped_refptr<SelfAssign> p1(new SelfAssign);
|
| + scoped_refptr<SelfAssign> p2(new SelfAssign);
|
| +
|
| + EXPECT_EQ(p1, p1);
|
| + EXPECT_EQ(p2, p2);
|
| +
|
| + EXPECT_NE(p1, p2);
|
| + EXPECT_NE(p2, p1);
|
| +}
|
| +
|
| +TEST(RefCountedUnitTest, ConvertibleEquality) {
|
| + scoped_refptr<Derived> p1(new Derived);
|
| + scoped_refptr<SelfAssign> p2;
|
| +
|
| + EXPECT_NE(p1, p2);
|
| + EXPECT_NE(p2, p1);
|
| +
|
| + p2 = p1;
|
| +
|
| + EXPECT_EQ(p1, p2);
|
| + EXPECT_EQ(p2, p1);
|
| +}
|
|
|