diff --git a/src/proc/control/typed-allocation-manager.hpp b/src/proc/control/typed-allocation-manager.hpp index 4c91048d6..cdc04cc03 100644 --- a/src/proc/control/typed-allocation-manager.hpp +++ b/src/proc/control/typed-allocation-manager.hpp @@ -77,7 +77,7 @@ -namespace control { +namespace control { ////////////////////////////////////////////////////////////TODO: should go into namespace lib using std::tr1::shared_ptr; @@ -106,7 +106,7 @@ namespace control { public: /** this is an ABC */ - virtual ~TypedAllocationManager() {} + virtual ~TypedAllocationManager() {} ////////////////////////////////////TODO: seems superfluous? We don't have any extension points (and this is a good thing!) diff --git a/tests/40components.tests b/tests/40components.tests index b301b262d..35bb2ba1e 100644 --- a/tests/40components.tests +++ b/tests/40components.tests @@ -824,6 +824,11 @@ return: 0 END +TEST "TypedAllocationManager_test" TypedAllocationManager_test < + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +* *****************************************************/ + + +#include "lib/test/run.hpp" +#include "lib/test/test-helper.hpp" +//#include "proc/control/command.hpp" +#include "proc/control/typed-allocation-manager.hpp" +//#include "proc/control/command-def.hpp" +//#include "lib/lumitime.hpp" +//#include "include/symbol.hpp" +#include "lib/util.hpp" + + +#include +//#include +//#include +//#include +#include +//#include + + +namespace control { +namespace test { + + +// using boost::format; +// using boost::str; + //using lumiera::Time; + //using util::contains; + using std::tr1::shared_ptr; +// using std::tr1::bind; +// using std::string; + using std::rand; + //using std::cout; + //using std::endl; +// using lib::test::showSizeof; + using util::isSameObject; +// using util::contains; + +// using session::test::TestClip; +// using lumiera::Symbol; +// using lumiera::P; + + + //using lumiera::typelist::BuildTupleAccessor; +// using lumiera::error::LUMIERA_ERROR_EXTERNAL; + + namespace { // test data and helpers... + + long checksum_ = 0; + + /** + * Yet-another ctor/dtor-tracking test dummy object.... + */ + template + class DummyObj + { + char crap_[siz]; + + public: + DummyObj() + { + REQUIRE (siz); + for (uint i=0; i > PD1; + typedef shared_ptr > PD22; + ASSERT (sizeof(DummyObj<1>) != sizeof(DummyObj<22>)); + + { + PD1 pD11 = allocator.create >(); + PD1 pD12 = allocator.create >(); + PD22 pD21 = allocator.create >(); + PD22 pD22 = allocator.create >(); + ASSERT (pD11); + ASSERT (pD12); + ASSERT (pD21); + ASSERT (pD22); + ASSERT (1 == pD11.use_count()); + ASSERT (1 == pD12.use_count()); + ASSERT (1 == pD21.use_count()); + ASSERT (1 == pD22.use_count()); + ASSERT (!isSameObject (*pD11, *pD12)); + ASSERT (!isSameObject (*pD11, *pD21)); + ASSERT (!isSameObject (*pD11, *pD22)); + ASSERT (!isSameObject (*pD12, *pD21)); + ASSERT (!isSameObject (*pD12, *pD22)); + ASSERT (!isSameObject (*pD21, *pD22)); + + PD22 pD2x = pD21; + ASSERT (pD2x); + ASSERT (2 == pD21.use_count()); + ASSERT (2 == pD2x.use_count()); + ASSERT (isSameObject (*pD21, *pD2x)); + + } + + ASSERT (0 == checksum_); + } + }; + + + /** Register this test class... */ + LAUNCHER (TypedAllocationManager_test, "unit common"); + + +}} // namespace control::test