21 #include <gmock/gmock.h>
22 #include <gtest/gtest.h>
30 class Foo :
public DualRefCounted<Foo> {
41 TEST(DualRefCounted, Basic) {
46 TEST(DualRefCounted, ExtraRef) {
53 TEST(DualRefCounted, ExtraWeakRef) {
55 foo->WeakRef().release();
60 TEST(DualRefCounted, RefIfNonZero) {
62 foo->WeakRef().release();
64 RefCountedPtr<Foo> foop =
foo->RefIfNonZero();
69 RefCountedPtr<Foo> foop =
foo->RefIfNonZero();
75 class FooWithTracing :
public DualRefCounted<FooWithTracing> {
77 FooWithTracing() : DualRefCounted(
"FooWithTracing") {}
86 TEST(DualRefCountedWithTracing, Basic) {
87 FooWithTracing*
foo =
new FooWithTracing();
95 foo->WeakRef().release();
104 int main(
int argc,
char** argv) {