00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #include <boost/test/unit_test.hpp>
00020 #include "torc/physical/Factory.hpp"
00021 #include "torc/physical/Pip.hpp"
00022
00023 namespace torc {
00024 namespace physical {
00025
00026 BOOST_AUTO_TEST_SUITE(physical)
00027
00028
00029 class A : public Progenitor<class A> {};
00030 class B : public Progeny<class A> {};
00031
00032
00033
00034 BOOST_AUTO_TEST_CASE(ProgenyUnitTest) {
00035
00036 typedef Progenitor<A> progenitor_t;
00037 progenitor_t::SharedPtrType progenitorPtr(new A());
00038 BOOST_REQUIRE(progenitorPtr.get() != 0);
00039 progenitorPtr->setSelfWeakPtr(progenitorPtr);
00040
00041
00042
00043
00044
00045
00046
00047 B progeny1;
00048 B progeny2;
00049 BOOST_CHECK_EQUAL(progeny1.getParentWeakPtr().expired(), true);
00050 BOOST_CHECK_EQUAL(progeny2.getParentWeakPtr().expired(), true);
00051 progeny2.setParentWeakPtr(progenitorPtr);
00052 BOOST_CHECK_EQUAL(progeny2.getParentWeakPtr().expired(), false);
00053 BOOST_CHECK(progeny2.getParentWeakPtr().lock() == progenitorPtr);
00054 progeny1.setParentWeakPtr(progeny2.getParentWeakPtr());
00055 progeny2.resetParentWeakPtr();
00056 BOOST_CHECK(progeny1.getParentWeakPtr().lock() == progenitorPtr);
00057 BOOST_CHECK_EQUAL(progeny1.getParentWeakPtr().expired(), false);
00058 BOOST_CHECK_EQUAL(progeny2.getParentWeakPtr().expired(), true);
00059
00060
00061
00062
00063 }
00064
00065 BOOST_AUTO_TEST_SUITE_END()
00066
00067 }
00068 }