X-Git-Url: https://ruin.nu/git/?a=blobdiff_plain;f=src%2Ftest%2Fcomponenttreetest.cpp;h=a26946537deff3ed68258018d8aa8c760bcb6671;hb=a45ea752862a45a0868940280aeb837af270cf22;hp=222d2d76a7a3c63b74c7af5bd8900d16cdb146ee;hpb=6ba92ada02bfbb04abb8a0c7a039ec63c7c9921e;p=germs.git diff --git a/src/test/componenttreetest.cpp b/src/test/componenttreetest.cpp index 222d2d7..a269465 100644 --- a/src/test/componenttreetest.cpp +++ b/src/test/componenttreetest.cpp @@ -23,6 +23,9 @@ class TESTNAME : public CPPUNIT_NS::TestFixture { CPPUNIT_TEST_SUITE( TESTNAME ); CPPUNIT_TEST( testCreate ); + CPPUNIT_TEST( testMakeUnoriented ); + CPPUNIT_TEST( testCountLeaves ); + CPPUNIT_TEST( testShortBranches ); CPPUNIT_TEST_SUITE_END(); protected: @@ -38,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); @@ -60,7 +63,7 @@ protected: void testCreate (){ GeneOrder go(_validPerm.begin(),_validPerm.end()); ComponentTree t(findComponents(go)); - ComponentTree::Node* n = &t._root; + ComponentTree::Node* n = t._root; CPPUNIT_ASSERT_EQUAL((size_t)4u,count(n)); CPPUNIT_ASSERT_EQUAL((size_t)5u,count(n,true)); @@ -77,7 +80,7 @@ protected: GeneOrder go2(_validPerm4.begin(),_validPerm4.end()); ComponentTree t2(findComponents(go2)); - n = &t2._root; + n = t2._root; CPPUNIT_ASSERT_EQUAL((size_t)6u,count(n)); CPPUNIT_ASSERT_EQUAL((size_t)9u,count(n,true)); @@ -95,6 +98,98 @@ 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 (){ + GeneOrder go(_validPerm.begin(),_validPerm.end()); + ComponentTree t(findComponents(go)); + t.makeUnoriented(); + ComponentTree::Node* n = t._root; + + CPPUNIT_ASSERT_EQUAL((size_t)0u,count(n)); + CPPUNIT_ASSERT_EQUAL((size_t)1u,count(n,true)); + CPPUNIT_ASSERT_EQUAL((size_t)0u,n->_children.size()); + + GeneOrder go2(_validPerm4.begin(),_validPerm4.end()); + ComponentTree t2(findComponents(go2)); + t2.makeUnoriented(); + n = t2._root; + + CPPUNIT_ASSERT_EQUAL((size_t)4u,count(n)); + CPPUNIT_ASSERT_EQUAL((size_t)6u,count(n,true)); + CPPUNIT_ASSERT_EQUAL((size_t)2u,n->_children.size()); + Component go22(4,7,1,4,7); + Component go23(-15,-12,-1,8,11); + Component go24(-12,-9,-1,11,14); + Component go25(7,16,0,7,16); + CPPUNIT_ASSERT(n->_children[0]->_comp == go22); + 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 (){ + GeneOrder go(_validPerm.begin(),_validPerm.end()); + ComponentTree t(findComponents(go)); + t.makeUnoriented(); + + CPPUNIT_ASSERT_EQUAL((size_t)0u,t.countLeaves()); + + GeneOrder go2(_validPerm4.begin(),_validPerm4.end()); + ComponentTree t2(findComponents(go2)); + t2.makeUnoriented(); + ComponentTree::Node* n = t2._root; + 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()); + ComponentTree t(findComponents(go)); + t.makeUnoriented(); + + CPPUNIT_ASSERT_EQUAL((size_t)0u,t.shortBranches()); + + GeneOrder go2(_validPerm4.begin(),_validPerm4.end()); + ComponentTree t2(findComponents(go2)); + t2.makeUnoriented(); + 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()); } };