+ 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());