From 045b32a59a4a35ddf86c4d97499de857b9743b50 Mon Sep 17 00:00:00 2001 From: Michael Andreen Date: Tue, 28 Aug 2007 17:07:12 +0000 Subject: [PATCH] BUGFIX: forgot to set parent to 0 on child when removing parent node --- src/componenttree.cpp | 1 + src/test/componenttreetest.cpp | 41 +++++++++++++++++++++++++++++++--- 2 files changed, 39 insertions(+), 3 deletions(-) diff --git a/src/componenttree.cpp b/src/componenttree.cpp index fac5639..f28c7ee 100644 --- a/src/componenttree.cpp +++ b/src/componenttree.cpp @@ -79,6 +79,7 @@ void ComponentTree::makeUnoriented(){ _root->_children.clear(); delete _root; _root = n; + _root->_parent = 0; } } diff --git a/src/test/componenttreetest.cpp b/src/test/componenttreetest.cpp index 61e9322..a269465 100644 --- a/src/test/componenttreetest.cpp +++ b/src/test/componenttreetest.cpp @@ -41,7 +41,7 @@ public: _validPerm.assign(validPerm,validPerm+4); int validPerm2[] = {1,-3,-2,4}; _validPerm2.assign(validPerm2,validPerm2+4); - int validPerm3[] = {0,-2,-1,4,3,5,-8,6,7,9}; + int validPerm3[] = {0,-2,-1,4,3,5,8,6,7,9}; _validPerm3.assign(validPerm3,validPerm3+10); int validPerm4[] = {-3,1,2,4,6,5,7,-15,-13,-14,-12,-10,-11,-9,8}; _validPerm4.assign(validPerm4,validPerm4+15); @@ -98,6 +98,23 @@ protected: CPPUNIT_ASSERT(n->_children[2]->_children[0]->_children[0]->_comp == go23); CPPUNIT_ASSERT(n->_children[2]->_children[0]->_children[1]->_comp == go24); + GeneOrder go3(_validPerm3.begin(),_validPerm3.end()); + ComponentTree t3(findComponents(go3)); + n = t3._root; + + CPPUNIT_ASSERT_EQUAL((size_t)4u,count(n)); + CPPUNIT_ASSERT_EQUAL((size_t)7u,count(n,true)); + CPPUNIT_ASSERT_EQUAL((size_t)2u,n->_children.size()); + + Component go30(-2,-1,0,1,2); + Component go31(0,5,0,0,5); + Component go32(6,7,0,7,8); + Component go33(5,9,1,5,9); + CPPUNIT_ASSERT(n->_children[0]->_comp == go31); + CPPUNIT_ASSERT(n->_children[1]->_comp == go33); + CPPUNIT_ASSERT(n->_children[0]->_children[0]->_children[0]->_comp == go30); + CPPUNIT_ASSERT(n->_children[1]->_children[0]->_children[0]->_comp == go32); + } void testMakeUnoriented (){ @@ -126,6 +143,15 @@ protected: CPPUNIT_ASSERT(n->_children[1]->_comp == go25); CPPUNIT_ASSERT(n->_children[1]->_children[0]->_children[0]->_comp == go23); CPPUNIT_ASSERT(n->_children[1]->_children[0]->_children[1]->_comp == go24); + + GeneOrder go3(_validPerm3.begin(),_validPerm3.end()); + ComponentTree t3(findComponents(go3)); + t3.makeUnoriented(); + n = t3._root; + + CPPUNIT_ASSERT_EQUAL((size_t)1u,count(n)); + CPPUNIT_ASSERT_EQUAL((size_t)1u,count(n,true)); + CPPUNIT_ASSERT_EQUAL((size_t)0u,n->_children.size()); } void testCountLeaves (){ @@ -142,6 +168,11 @@ protected: CPPUNIT_ASSERT_EQUAL((size_t)2u,n->_children.size()); CPPUNIT_ASSERT_EQUAL(false,n->_children.empty()); CPPUNIT_ASSERT_EQUAL((size_t)3u,t2.countLeaves()); + + GeneOrder go3(_validPerm3.begin(),_validPerm3.end()); + ComponentTree t3(findComponents(go3)); + t3.makeUnoriented(); + CPPUNIT_ASSERT_EQUAL((size_t)1u,t3.countLeaves()); } void testShortBranches (){ GeneOrder go(_validPerm.begin(),_validPerm.end()); @@ -153,8 +184,12 @@ protected: GeneOrder go2(_validPerm4.begin(),_validPerm4.end()); ComponentTree t2(findComponents(go2)); t2.makeUnoriented(); - ComponentTree::Node* n = t2._root; - //CPPUNIT_ASSERT_EQUAL((size_t)1u,t2.shortBranches()); + CPPUNIT_ASSERT_EQUAL((size_t)1u,t2.shortBranches()); + + GeneOrder go3(_validPerm3.begin(),_validPerm3.end()); + ComponentTree t3(findComponents(go3)); + t3.makeUnoriented(); + CPPUNIT_ASSERT_EQUAL((size_t)1u,t3.shortBranches()); } }; -- 2.39.2