Home | History | Annotate | Download | only in test
      1 // Copyright 2014 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.
      4 
      5 #include "base/test/opaque_ref_counted.h"
      6 
      7 #include "base/macros.h"
      8 #include "testing/gtest/include/gtest/gtest.h"
      9 
     10 namespace base {
     11 
     12 class OpaqueRefCounted : public RefCounted<OpaqueRefCounted> {
     13  public:
     14   OpaqueRefCounted() = default;
     15 
     16   int Return42() { return 42; }
     17 
     18  private:
     19   friend class RefCounted<OpaqueRefCounted>;
     20   ~OpaqueRefCounted() = default;
     21 
     22   DISALLOW_COPY_AND_ASSIGN(OpaqueRefCounted);
     23 };
     24 
     25 class OpaqueRefCountedThreadSafe
     26     : public RefCounted<OpaqueRefCountedThreadSafe> {
     27  public:
     28   OpaqueRefCountedThreadSafe() = default;
     29 
     30   int Return42() { return 42; }
     31 
     32  private:
     33   friend class RefCounted<OpaqueRefCountedThreadSafe>;
     34   ~OpaqueRefCountedThreadSafe() = default;
     35 
     36   DISALLOW_COPY_AND_ASSIGN(OpaqueRefCountedThreadSafe);
     37 };
     38 
     39 scoped_refptr<OpaqueRefCounted> MakeOpaqueRefCounted() {
     40   return new OpaqueRefCounted();
     41 }
     42 
     43 void TestOpaqueRefCounted(scoped_refptr<OpaqueRefCounted> p) {
     44   EXPECT_EQ(42, p->Return42());
     45 }
     46 
     47 scoped_refptr<OpaqueRefCountedThreadSafe> MakeOpaqueRefCountedThreadSafe() {
     48   return new OpaqueRefCountedThreadSafe();
     49 }
     50 
     51 void TestOpaqueRefCountedThreadSafe(
     52     scoped_refptr<OpaqueRefCountedThreadSafe> p) {
     53   EXPECT_EQ(42, p->Return42());
     54 }
     55 
     56 }  // namespace base
     57 
     58 template class scoped_refptr<base::OpaqueRefCounted>;
     59 template class scoped_refptr<base::OpaqueRefCountedThreadSafe>;
     60