From 058e95a59ccb2ab1748392acdfdbbffd516c9c81 Mon Sep 17 00:00:00 2001 From: Adrian Boguszewski Date: Mon, 11 Jul 2016 14:24:52 +0200 Subject: First part of new SPObject children list (bzr r14954.1.17) --- testfiles/src/sp-object-test.cpp | 78 +++++++++++++++++++++++++++++++--------- 1 file changed, 62 insertions(+), 16 deletions(-) (limited to 'testfiles/src/sp-object-test.cpp') diff --git a/testfiles/src/sp-object-test.cpp b/testfiles/src/sp-object-test.cpp index 594fd9eb7..8419cea23 100644 --- a/testfiles/src/sp-object-test.cpp +++ b/testfiles/src/sp-object-test.cpp @@ -12,7 +12,13 @@ #include #include #include +#include #include +#include +#include + +using namespace Inkscape; +using namespace Inkscape::XML; class SPObjectTest: public DocPerCaseTest { public: @@ -22,6 +28,17 @@ public: c = new SPItem(); d = new SPItem(); e = new SPItem(); + auto sd = new SimpleDocument(); + auto et = new TextNode(Util::share_string("e"), sd); + auto dt = new TextNode(Util::share_string("d"), sd); + auto ct = new TextNode(Util::share_string("c"), sd); + auto bt = new TextNode(Util::share_string("b"), sd); + auto at = new TextNode(Util::share_string("a"), sd); + e->invoke_build(_doc, et, 0); + d->invoke_build(_doc, dt, 0); + c->invoke_build(_doc, ct, 0); + b->invoke_build(_doc, bt, 0); + a->invoke_build(_doc, at, 0); } ~SPObjectTest() { delete a; @@ -38,12 +55,9 @@ public: }; TEST_F(SPObjectTest, Basics) { - d->invoke_build(_doc, _doc->rroot, 1); - c->invoke_build(_doc, _doc->rroot, 1); - b->invoke_build(_doc, _doc->rroot, 1); - a->attach(b, a->lastChild()); a->attach(c, a->lastChild()); - a->attach(d, a->lastChild()); + a->attach(b, nullptr); + a->attach(d, c); EXPECT_TRUE(a->hasChildren()); EXPECT_EQ(d, a->lastChild()); auto children = a->childList(false); @@ -51,19 +65,51 @@ TEST_F(SPObjectTest, Basics) { EXPECT_EQ(b, children[0]); EXPECT_EQ(c, children[1]); EXPECT_EQ(d, children[2]); - b->reorder(d); - children = a->childList(false); - EXPECT_EQ(3, children.size()); - EXPECT_EQ(c, children[0]); - EXPECT_EQ(d, children[1]); - EXPECT_EQ(b, children[2]); - a->detach(d); - EXPECT_EQ(b, a->lastChild()); + a->attach(b, a->lastChild()); + EXPECT_EQ(3, a->_children.size()); + a->reorder(b, b); + EXPECT_EQ(3, a->_children.size()); + EXPECT_EQ(b, &a->_children.front()); + EXPECT_EQ(d, &a->_children.back()); + a->reorder(b, d); + EXPECT_EQ(3, a->_children.size()); + EXPECT_EQ(c, &a->_children.front()); + EXPECT_EQ(b, &a->_children.back()); + a->reorder(d, nullptr); + EXPECT_EQ(3, a->_children.size()); + EXPECT_EQ(d, &a->_children.front()); + EXPECT_EQ(b, &a->_children.back()); + a->reorder(c, b); + EXPECT_EQ(3, a->_children.size()); + EXPECT_EQ(d, &a->_children.front()); + EXPECT_EQ(c, &a->_children.back()); + a->detach(b); + EXPECT_EQ(c, a->lastChild()); children = a->childList(false); EXPECT_EQ(2, children.size()); - EXPECT_EQ(c, children[0]); - EXPECT_EQ(b, children[1]); - a->detach(c); + EXPECT_EQ(d, children[0]); + EXPECT_EQ(c, children[1]); a->detach(b); + EXPECT_EQ(2, a->childList(false).size()); + a->releaseReferences(); EXPECT_FALSE(a->hasChildren()); } + +TEST_F(SPObjectTest, Advanced) { + a->attach(b, a->lastChild()); + a->attach(c, a->lastChild()); + a->attach(d, a->lastChild()); + a->attach(e, a->lastChild()); + EXPECT_EQ(e, a->get_child_by_repr(e->getRepr())); + EXPECT_EQ(c, a->get_child_by_repr(c->getRepr())); +} + +TEST_F(SPObjectTest, Tmp) { + a->attach(b, a->lastChild()); + a->attach(c, a->lastChild()); + a->attach(d, a->lastChild()); + a->attach(e, a->lastChild()); + EXPECT_TRUE(a->hasChildren()); + a->releaseReferences(); + EXPECT_FALSE(a->hasChildren()); +} \ No newline at end of file -- cgit v1.2.3