blob: cd6f922414a75644dd7e9ce6fcf37aee4f60cf55 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
// Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "testing/gtest/include/gtest/gtest.h"
#include "base/ref_counted.h"
namespace {
class SelfAssign : public base::RefCounted<SelfAssign> {
friend class base::RefCounted<SelfAssign>;
~SelfAssign() {}
};
class CheckDerivedMemberAccess : public scoped_refptr<SelfAssign> {
public:
CheckDerivedMemberAccess() {
// This shouldn't compile if we don't have access to the member variable.
SelfAssign** pptr = &ptr_;
EXPECT_EQ(*pptr, ptr_);
}
};
} // end namespace
TEST(RefCountedUnitTest, TestSelfAssignment) {
SelfAssign* p = new SelfAssign;
scoped_refptr<SelfAssign> var(p);
var = var;
EXPECT_EQ(var.get(), p);
}
TEST(RefCountedUnitTest, ScopedRefPtrMemberAccess) {
CheckDerivedMemberAccess check;
}
|