diff options
author | Andreas Stöckel <astoecke@techfak.uni-bielefeld.de> | 2014-12-17 02:37:03 +0100 |
---|---|---|
committer | Andreas Stöckel <astoecke@techfak.uni-bielefeld.de> | 2014-12-17 02:37:03 +0100 |
commit | 540689657f4b080b1c1b49d6e654d9761b16e67b (patch) | |
tree | 071dbf12fa2b4b73d927443b696f2bafe46cd99c /test | |
parent | 076e67fcd2cfd5a5ff9dd28b4ac0e6e5e8cd22c2 (diff) |
made deletion order in Manager class (more) deterministic
Diffstat (limited to 'test')
-rw-r--r-- | test/core/managed/ManagedContainerTest.cpp | 30 |
1 files changed, 29 insertions, 1 deletions
diff --git a/test/core/managed/ManagedContainerTest.cpp b/test/core/managed/ManagedContainerTest.cpp index a2f7aa6..c34541a 100644 --- a/test/core/managed/ManagedContainerTest.cpp +++ b/test/core/managed/ManagedContainerTest.cpp @@ -220,6 +220,35 @@ TEST(ManagedVector, moveWithNewOwner) } } +class TestManagedWithContainer : public Managed { + +public: + ManagedVector<TestManaged> elems; + + TestManagedWithContainer(Manager &mgr) : Managed(mgr), elems(this) {}; + +}; + +TEST(ManagedVector, embedded) { + // Note: This test depends on the correct deletion order -- otherwise + // valgrind shows an error + bool a; + Manager mgr(1); + { + Rooted<TestManagedWithContainer> a1{new TestManagedWithContainer(mgr)}; + { + Rooted<TestManaged> a2{new TestManaged(mgr, a)}; + + ASSERT_TRUE(a); + + a1->elems.push_back(a2); + } + ASSERT_TRUE(a); + } + ASSERT_FALSE(a); +} + + TEST(ManagedMap, managedMap) { // TODO: This test is highly incomplete @@ -270,6 +299,5 @@ TEST(ManagedMap, managedMap) } } - } |