diff options
author | Andreas Stöckel <astoecke@techfak.uni-bielefeld.de> | 2014-12-15 18:45:01 +0100 |
---|---|---|
committer | Andreas Stöckel <astoecke@techfak.uni-bielefeld.de> | 2014-12-15 18:45:01 +0100 |
commit | 84cbdcaba520f89eb3ddbdaf1fe2ab3db412501a (patch) | |
tree | ca3df3c791834e65479c6b9a8720f8e55150a396 /test/core/managed/ManagerTest.cpp | |
parent | c5d18a42da8e9ed19c9520308fef087f4fb76323 (diff) |
Improved ManagedContainer classes
Diffstat (limited to 'test/core/managed/ManagerTest.cpp')
-rw-r--r-- | test/core/managed/ManagerTest.cpp | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/test/core/managed/ManagerTest.cpp b/test/core/managed/ManagerTest.cpp index da42f0a..f597af7 100644 --- a/test/core/managed/ManagerTest.cpp +++ b/test/core/managed/ManagerTest.cpp @@ -548,5 +548,46 @@ TEST(Manager, hiddenRootedGraph) ASSERT_FALSE(v); } } + +TEST(Manager, storeData) +{ + Manager mgr(1); + + std::array<bool, 5> a; + + { + Rooted<TestManaged> n{new TestManaged{mgr, a[0]}}; + + mgr.storeData(n.get(), "key1", new TestManaged{mgr, a[1]}); + + Managed *m2 = new TestManaged{mgr, a[2]}; + mgr.storeData(n.get(), "key2", m2); + + ASSERT_TRUE(a[0] && a[1] && a[2]); + + ASSERT_TRUE(mgr.deleteData(n.get(), "key1")); + ASSERT_FALSE(a[1]); + ASSERT_FALSE(mgr.deleteData(n.get(), "key1")); + + mgr.storeData(n.get(), "key1", new TestManaged{mgr, a[3]}); + ASSERT_TRUE(a[3]); + + Managed *m = new TestManaged{mgr, a[4]}; + mgr.storeData(n.get(), "key1", m); + ASSERT_FALSE(a[3]); + ASSERT_TRUE(a[4]); + + ASSERT_EQ(m, mgr.readData(n.get(), "key1")); + ASSERT_EQ(m2, mgr.readData(n.get(), "key2")); + + auto map = mgr.readData(n.get()); + ASSERT_EQ(2U, map.size()); + ASSERT_TRUE(map.find("key1") != map.end()); + ASSERT_TRUE(map.find("key2") != map.end()); + } + + ASSERT_FALSE(a[0] || a[1] || a[2] || a[3] || a[4]); +} + } |