32#include <gtest/gtest.h>
49 return liveList.size();
55 LiveList::iterator liveIt;
60 liveList.push_front(
this);
61 liveIt = liveList.begin();
66 liveList.erase(liveIt);
75TEST(RefcntTest, NullPointerCheck)
79 EXPECT_EQ(NULL, nullCheck.get());
80 EXPECT_EQ(0, liveListSize());
83TEST(RefcntTest, ConstructionFromPointer)
86 Ptr constFromPointer =
new TestRC();
87 EXPECT_EQ(1, liveListSize());
90TEST(RefcntTest, ConstructionFromExistingPointer)
93 Ptr constFromPointer1 =
new TestRC();
94 Ptr constFromPointer2 = constFromPointer1;
96 EXPECT_EQ(1, liveListSize());
99TEST(RefcntTest, DestroyPointer)
102 Ptr *ptrPtr =
new Ptr(
new TestRC());
103 EXPECT_EQ(1, liveListSize());
105 EXPECT_EQ(0, liveListSize());
108TEST(RefcntTest, AssignmentFromAPointerFromAPointer)
111 Ptr assignmentTarget;
112 TestRC *assignmentSourcePointer =
new TestRC();
113 EXPECT_EQ(liveListSize(), 1);
114 assignmentTarget = assignmentSourcePointer;
115 EXPECT_EQ(liveListSize(), 1);
116 assignmentTarget = NULL;
117 EXPECT_EQ(liveListSize(), 0);
118 Ptr assignmentSourcePtr(
new TestRC());
119 EXPECT_EQ(liveListSize(), 1);
120 assignmentTarget = assignmentSourcePtr;
121 EXPECT_EQ(liveListSize(), 1);
122 assignmentSourcePtr = NULL;
123 EXPECT_EQ(liveListSize(), 1);
124 assignmentTarget = NULL;
125 EXPECT_EQ(liveListSize(), 0);
128TEST(RefcntTest, AccessToClassPointers)
131 TestRC *accessTest =
new TestRC();
132 Ptr accessTestPtr = accessTest;
133 accessTest->testVal = 1;
134 EXPECT_EQ(1, accessTestPtr->testVal);
135 EXPECT_EQ(1, (*accessTestPtr).testVal);
136 accessTest->testVal = 2;
137 EXPECT_EQ(2, accessTestPtr->testVal);
138 EXPECT_EQ(2, (*accessTestPtr).testVal);
139 accessTestPtr->testVal = 3;
140 EXPECT_EQ(3, accessTest->testVal);
141 (*accessTestPtr).testVal = 4;
142 EXPECT_EQ(4, accessTest->testVal);
143 accessTestPtr = NULL;
145 EXPECT_EQ(0, liveListSize());
148TEST(RefcntTest, BoolAndLogicalNotOperatorOverloads)
151 Ptr boolTest =
new TestRC();
152 EXPECT_EQ(boolTest,
true);
153 EXPECT_EQ(!boolTest,
false);
155 EXPECT_FALSE(boolTest);
156 EXPECT_TRUE(!boolTest);
157 EXPECT_EQ(0, liveListSize());
160TEST(RefcntTest, EqualityOperators)
163 TestRC *equalTestA =
new TestRC();
164 Ptr equalTestAPtr = equalTestA;
165 Ptr equalTestAPtr2 = equalTestA;
166 TestRC *equalTestB =
new TestRC();
167 Ptr equalTestBPtr = equalTestB;
168 EXPECT_TRUE(equalTestA == equalTestAPtr);
169 EXPECT_TRUE(equalTestAPtr == equalTestA);
170 EXPECT_TRUE(equalTestAPtr == equalTestAPtr2);
171 EXPECT_TRUE(equalTestA != equalTestBPtr);
172 EXPECT_TRUE(equalTestAPtr != equalTestB);
173 EXPECT_TRUE(equalTestAPtr != equalTestBPtr);
Derive from RefCounted if you want to enable reference counting of this class.
If you want a reference counting pointer to a mutable object, create it like this:
Reference material can be found at the JEDEC website: UFS standard http://www.jedec....
Classes for managing reference counted objects.
TEST(RefcntTest, NullPointerCheck)