1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "testing/gtest/include/gtest/gtest.h"
6 #include "base/ref_counted.h"
10 class SelfAssign
: public base::RefCounted
<SelfAssign
> {
11 friend class base::RefCounted
<SelfAssign
>;
16 class CheckDerivedMemberAccess
: public scoped_refptr
<SelfAssign
> {
18 CheckDerivedMemberAccess() {
19 // This shouldn't compile if we don't have access to the member variable.
20 SelfAssign
** pptr
= &ptr_
;
21 EXPECT_EQ(*pptr
, ptr_
);
27 TEST(RefCountedUnitTest
, TestSelfAssignment
) {
28 SelfAssign
* p
= new SelfAssign
;
29 scoped_refptr
<SelfAssign
> var
= p
;
31 EXPECT_EQ(var
.get(), p
);
34 TEST(RefCountedUnitTest
, ScopedRefPtrMemberAccess
) {
35 CheckDerivedMemberAccess check
;