Port PluginObject fix downstream. See http://trac.webkit.org/changeset/61415/ for...
[chromium-blink-merge.git] / base / ref_counted_unittest.cc
blobf2739fcea6e6380ffdf2f79f53514eb0cb547885
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"
8 namespace {
10 class SelfAssign : public base::RefCounted<SelfAssign> {
11 friend class base::RefCounted<SelfAssign>;
13 ~SelfAssign() {}
16 class CheckDerivedMemberAccess : public scoped_refptr<SelfAssign> {
17 public:
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_);
25 } // end namespace
27 TEST(RefCountedUnitTest, TestSelfAssignment) {
28 SelfAssign* p = new SelfAssign;
29 scoped_refptr<SelfAssign> var = p;
30 var = var;
31 EXPECT_EQ(var.get(), p);
34 TEST(RefCountedUnitTest, ScopedRefPtrMemberAccess) {
35 CheckDerivedMemberAccess check;