Newer
Older
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;
ext::cow_shared_ptr<SharedPtrTest::Moveable> one(new SharedPtrTest::Moveable(moves, copies));
CPPUNIT_ASSERT(one.unique());
CPPUNIT_ASSERT(moves == 0);
CPPUNIT_ASSERT(copies == 0);
ext::cow_shared_ptr<SharedPtrTest::Moveable> two(one);
CPPUNIT_ASSERT(!one.unique());
CPPUNIT_ASSERT(moves == 0);
CPPUNIT_ASSERT(copies == 0);
ext::cow_shared_ptr<SharedPtrTest::Moveable> three(std::move ( two ) );
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;
ext::cow_shared_ptr<SharedPtrTest::Moveable2> one(new SharedPtrTest::Moveable2(moves, copies));
CPPUNIT_ASSERT(one.unique());
CPPUNIT_ASSERT(moves == 0);
CPPUNIT_ASSERT(copies == 0);
ext::cow_shared_ptr<SharedPtrTest::Moveable2> two(one);
CPPUNIT_ASSERT(!one.unique());
CPPUNIT_ASSERT(moves == 0);
CPPUNIT_ASSERT(copies == 0);
ext::cow_shared_ptr<SharedPtrTest::Moveable2> three(std::move ( two ) );
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::testSharedPtr3() {
ext::cow_shared_ptr<SharedPtrTest::Base> one(new SharedPtrTest::Derived());
ext::cow_shared_ptr<SharedPtrTest::Base> two(one);