#include "shared_ptr.h" #include "UnitTest++.h" #include class Foo { private: int x; public: Foo(int x):x(x) { } int get_x() const { return x; } void set_x(int nx) { x = nx; } }; typedef std::vector > TFooVector; TEST(test_shared_ptr) { TFooVector v; bdm::shared_ptr zero; CHECK_EQUAL(0l, zero.use_count()); bdm::shared_ptr one(new Foo(1)); v.push_back(one); CHECK(!one.unique()); v.push_back(one); v.push_back(bdm::shared_ptr(new Foo(2))); CHECK_EQUAL(static_cast(3), v.size()); Foo c(*(v[0])); CHECK_EQUAL(1, c.get_x()); Foo *p = v[1].get(); CHECK_EQUAL(1, p->get_x()); p->set_x(12); CHECK_EQUAL(12, one->get_x()); CHECK(v[2].unique()); CHECK_EQUAL(2, v[2]->get_x()); }