From 540689657f4b080b1c1b49d6e654d9761b16e67b Mon Sep 17 00:00:00 2001 From: Andreas Stöckel Date: Wed, 17 Dec 2014 02:37:03 +0100 Subject: made deletion order in Manager class (more) deterministic --- test/core/managed/ManagedContainerTest.cpp | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) (limited to 'test') 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 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 a1{new TestManagedWithContainer(mgr)}; + { + Rooted 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) } } - } -- cgit v1.2.3