Newer
Older
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
#include "SharedPtrTest.h"
#include <memory>
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( SharedPtrTest, "bits" );
CPPUNIT_TEST_SUITE_REGISTRATION( SharedPtrTest );
void SharedPtrTest::setUp() {
}
void SharedPtrTest::tearDown() {
}
void SharedPtrTest::testSharedPtr1() {
int moves;
int copies;
std::cow_shared_ptr<SharedPtrTest::Moveable> one(new SharedPtrTest::Moveable(moves, copies));
CPPUNIT_ASSERT(one.unique());
CPPUNIT_ASSERT(moves == 0);
CPPUNIT_ASSERT(copies == 0);
std::cow_shared_ptr<SharedPtrTest::Moveable> two(one);
CPPUNIT_ASSERT(!one.unique());
CPPUNIT_ASSERT(moves == 0);
CPPUNIT_ASSERT(copies == 0);
std::make_const(two).get();
CPPUNIT_ASSERT(!one.unique());
CPPUNIT_ASSERT(moves == 0);
CPPUNIT_ASSERT(copies == 0);
two.get();
CPPUNIT_ASSERT(one.unique());
CPPUNIT_ASSERT(moves == 0);
CPPUNIT_ASSERT(copies == 1);
}
void SharedPtrTest::testSharedPtr2() {
int moves;
int copies;
std::cow_shared_ptr<SharedPtrTest::Moveable2> one(new SharedPtrTest::Moveable2(moves, copies));
CPPUNIT_ASSERT(one.unique());
CPPUNIT_ASSERT(moves == 0);
CPPUNIT_ASSERT(copies == 0);
std::cow_shared_ptr<SharedPtrTest::Moveable2> two(one);
CPPUNIT_ASSERT(!one.unique());
CPPUNIT_ASSERT(moves == 0);
CPPUNIT_ASSERT(copies == 0);
std::make_const(two).get();
CPPUNIT_ASSERT(!one.unique());
CPPUNIT_ASSERT(moves == 0);
CPPUNIT_ASSERT(copies == 0);
two.get();
CPPUNIT_ASSERT(one.unique());
CPPUNIT_ASSERT(moves == 0);
CPPUNIT_ASSERT(copies == 1);
}