summaryrefslogtreecommitdiff
path: root/test/core/ManagedTest.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'test/core/ManagedTest.cpp')
-rw-r--r--test/core/ManagedTest.cpp84
1 files changed, 2 insertions, 82 deletions
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 <core/Managed.hpp>
+#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<Owned<Managed>> 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<Managed> h) { refs.push_back(acquire(h)); }
-
- void deleteRef(Handle<Managed> h)
- {
- for (auto it = refs.begin(); it != refs.end();) {
- if (*it == h) {
- it = refs.erase(it);
- } else {
- it++;
- }
- }
- }
-};
-
TEST(Manager, linearDependencies)
{
std::array<bool, 4> a;
@@ -542,54 +511,5 @@ TEST(Manager, hiddenRootedGraph)
}
}
-TEST(ManagedVector, managedVector)
-{
- // TODO: This test is highly incomplete
-
- constexpr int nElem = 16;
- std::array<bool, nElem> a;
-
- Manager mgr(1);
- {
- Rooted<Managed> root{new Managed{mgr}};
-
- std::vector<TestManaged*> elems;
- for (int i = 0; i < nElem; i++) {
- elems.push_back(new TestManaged{mgr, a[i]});
- }
-
- for (bool v : a) {
- ASSERT_TRUE(v);
- }
-
- ManagedVector<TestManaged> 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);
- }
-}
-
}