From fffca72cfd8fdf1350dbe4bf8a5408f6088bf5b4 Mon Sep 17 00:00:00 2001 From: Andreas Stöckel Date: Fri, 2 Jan 2015 23:36:02 +0100 Subject: Using Index per default in NodeVector and NodeMap, added Unit test --- test/core/model/IndexTest.cpp | 95 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 95 insertions(+) create mode 100644 test/core/model/IndexTest.cpp (limited to 'test/core') diff --git a/test/core/model/IndexTest.cpp b/test/core/model/IndexTest.cpp new file mode 100644 index 0000000..5bf50db --- /dev/null +++ b/test/core/model/IndexTest.cpp @@ -0,0 +1,95 @@ +/* + Ousía + Copyright (C) 2014, 2015 Benjamin Paaßen, Andreas Stöckel + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +#include + +#include + +#include + +namespace ousia { + +TEST(Index, simple) +{ + Manager mgr{1}; + Rooted owner{new Managed(mgr)}; + { + NodeVector nodes(owner); + Index &idx = nodes.getIndex(); + + Node* n1 = new Node(mgr, "node1"); + Node* n2 = new Node(mgr, "node2"); + Node* n3 = new Node(mgr, "node3"); + + nodes.push_back(n1); + nodes.push_back(n2); + nodes.push_back(n3); + + // Index + ASSERT_EQ(n1, idx.resolve("node1")); + ASSERT_EQ(n2, idx.resolve("node2")); + ASSERT_EQ(n3, idx.resolve("node3")); + ASSERT_EQ(nullptr, idx.resolve("node4")); + + // Rename + n2->setName("node2b"); + ASSERT_EQ(nullptr, idx.resolve("node2")); + ASSERT_EQ(n2, idx.resolve("node2b")); + + // Delete + nodes.erase(nodes.begin() + 1); + ASSERT_EQ(nullptr, idx.resolve("node2b")); + + nodes.erase(nodes.begin() + 0); + ASSERT_EQ(nullptr, idx.resolve("node1")); + + // Another rename + n3->setName("node3b"); + ASSERT_EQ(nullptr, idx.resolve("node3")); + ASSERT_EQ(n3, idx.resolve("node3b")); + } +} + +TEST(Index, shared) +{ + Manager mgr{1}; + Rooted owner{new Managed(mgr)}; + Index idx; + { + NodeVector nodes1(owner, idx); + NodeVector nodes2(owner, idx); + + ASSERT_EQ(&idx, &nodes1.getIndex()); + ASSERT_EQ(&idx, &nodes2.getIndex()); + + Node* n1 = new Node(mgr, "node1"); + Node* n2 = new Node(mgr, "node2"); + Node* n3 = new Node(mgr, "node3"); + + nodes1.push_back(n1); + nodes1.push_back(n2); + nodes2.push_back(n3); + + ASSERT_EQ(n1, idx.resolve("node1")); + ASSERT_EQ(n2, idx.resolve("node2")); + ASSERT_EQ(n3, idx.resolve("node3")); + ASSERT_EQ(nullptr, idx.resolve("node4")); + } +} + +} -- cgit v1.2.3