1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
|
#include <cassert>
#include <cppunit/extensions/HelperMacros.h>
//
#include "DataFormats/GeometrySurface/interface/ReferenceCounted.h"
namespace testreferencecounted {
class Test : public CppUnit::TestFixture {
CPPUNIT_TEST_SUITE(Test);
CPPUNIT_TEST(deleteTest);
CPPUNIT_TEST(multiRefTest);
CPPUNIT_TEST(assignmentTest);
CPPUNIT_TEST(modifyTest);
CPPUNIT_TEST(intrusiveTest);
CPPUNIT_TEST_SUITE_END();
public:
void setUp() {}
void tearDown() {}
void deleteTest();
void multiRefTest();
void assignmentTest();
void modifyTest();
void intrusiveTest();
};
static unsigned int s_construct = 0;
struct RefTest : public ReferenceCounted {
RefTest() { s_construct++; }
~RefTest() { s_construct--; }
};
typedef ReferenceCountingPointer<RefTest> RefPtr;
} // namespace testreferencecounted
///registration of the test so that the runner can find it
CPPUNIT_TEST_SUITE_REGISTRATION(testreferencecounted::Test);
namespace testreferencecounted {
void Test::deleteTest() {
{ RefPtr pointer(new RefTest); }
assert(0 == s_construct);
}
void Test::multiRefTest() {
{
RefPtr pointer(new RefTest);
{ RefPtr pointer2(pointer); }
}
assert(0 == s_construct);
}
void Test::assignmentTest() {
{
RefPtr pointer(new RefTest);
{
RefPtr pointer2;
pointer2 = pointer;
}
}
assert(0 == s_construct);
}
void Test::modifyTest() {
{
RefPtr pointer(new RefTest);
{
RefPtr pointer2;
pointer2 = pointer;
*pointer = RefTest();
}
}
assert(0 == s_construct);
}
void Test::intrusiveTest() {
{
RefTest* ptr = new RefTest;
RefPtr pointer(ptr);
{ RefPtr pointer2(ptr); }
}
assert(0 == s_construct);
}
} // namespace testreferencecounted
///registration of the test so that the runner can find it
CPPUNIT_TEST_SUITE_REGISTRATION(testreferencecounted::Test);
#include "Utilities/Testing/interface/CppUnit_testdriver.icpp"
|