From d777bca65566bf15e9e2ed8b23f854fb974c902a Mon Sep 17 00:00:00 2001 From: Andreas Stöckel Date: Fri, 21 Nov 2014 12:08:09 +0100 Subject: refactored ManagedContainer to own header, added (currently untested) ManagedMap class --- test/core/ManagedTest.cpp | 84 ++--------------------------------------------- 1 file changed, 2 insertions(+), 82 deletions(-) (limited to 'test/core/ManagedTest.cpp') diff --git a/test/core/ManagedTest.cpp b/test/core/ManagedTest.cpp index 1aada5a..a52ba88 100644 --- a/test/core/ManagedTest.cpp +++ b/test/core/ManagedTest.cpp @@ -24,6 +24,8 @@ #include +#include "TestManaged.hpp" + namespace ousia { /* Class ObjectDescriptor */ @@ -211,39 +213,6 @@ TEST(Owned, equalsAndAssign) /* Class Manager */ -class TestManaged : public Managed { -private: - bool &alive; - - std::vector> refs; - -public: - TestManaged(Manager &mgr, bool &alive) : Managed(mgr), alive(alive) - { - //std::cout << "create TestManaged @" << this << std::endl; - alive = true; - } - - ~TestManaged() override - { - //std::cout << "delete TestManaged @" << this << std::endl; - alive = false; - } - - void addRef(Handle h) { refs.push_back(acquire(h)); } - - void deleteRef(Handle h) - { - for (auto it = refs.begin(); it != refs.end();) { - if (*it == h) { - it = refs.erase(it); - } else { - it++; - } - } - } -}; - TEST(Manager, linearDependencies) { std::array a; @@ -542,54 +511,5 @@ TEST(Manager, hiddenRootedGraph) } } -TEST(ManagedVector, managedVector) -{ - // TODO: This test is highly incomplete - - constexpr int nElem = 16; - std::array a; - - Manager mgr(1); - { - Rooted root{new Managed{mgr}}; - - std::vector elems; - for (int i = 0; i < nElem; i++) { - elems.push_back(new TestManaged{mgr, a[i]}); - } - - for (bool v : a) { - ASSERT_TRUE(v); - } - - ManagedVector v(root, elems); - - // Remove the last element from the list. It should be garbage collected. - v.pop_back(); - ASSERT_FALSE(a[nElem - 1]); - - // Insert a new element into the list. - v.push_back(new TestManaged{mgr, a[nElem - 1]}); - ASSERT_TRUE(a[nElem - 1]); - - // Erase element 10 - { - auto it = v.find(elems[10]); - ASSERT_TRUE(it != v.end()); - v.erase(it); - ASSERT_FALSE(a[10]); - } - - // Erase element 3 - 5 - v.erase(v.find(elems[3]), v.find(elems[5])); - ASSERT_FALSE(a[3] || a[4]); - ASSERT_TRUE(a[5]); - } - - for (bool v : a) { - ASSERT_FALSE(v); - } -} - } -- cgit v1.2.3