root/library/tests/test_shared_ptr.cpp @ 419

Revision 419, 0.8 kB (checked in by vbarta, 15 years ago)

added basic smart pointer

Line 
1#include "shared_ptr.h"
2#include "UnitTest++.h"
3#include <vector>
4
5class Foo
6{ 
7private:
8    int x;
9
10public:
11    Foo(int x):x(x) { }
12
13    int get_x() const { return x; }
14
15    void set_x(int nx) { x = nx; }
16};
17
18typedef std::vector<bdm::shared_ptr<Foo> > TFooVector;
19
20TEST(test_shared_ptr)
21{
22    TFooVector v;
23
24    bdm::shared_ptr<Foo> zero;
25    CHECK_EQUAL(0l, zero.use_count());
26
27    bdm::shared_ptr<Foo> one(new Foo(1));
28    v.push_back(one);
29    CHECK(!one.unique());
30
31    v.push_back(one);
32    v.push_back(bdm::shared_ptr<Foo>(new Foo(2)));
33    CHECK_EQUAL(static_cast<TFooVector::size_type>(3), v.size());
34
35    Foo c(*(v[0]));
36    CHECK_EQUAL(1, c.get_x());
37   
38    Foo *p = v[1].get();
39    CHECK_EQUAL(1, p->get_x());
40    p->set_x(12);
41    CHECK_EQUAL(12, one->get_x());
42
43    CHECK(v[2].unique());
44    CHECK_EQUAL(2, v[2]->get_x());
45}
Note: See TracBrowser for help on using the browser.