CPPUNIT_TEST_SUITE( TESTNAME );
CPPUNIT_TEST( testCreate );
CPPUNIT_TEST( testMakeUnoriented );
+ CPPUNIT_TEST( testCountLeaves );
+ CPPUNIT_TEST( testShortBranches );
CPPUNIT_TEST_SUITE_END();
protected:
_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);
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));
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));
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;
+ ComponentTree::Node* n = t._root;
CPPUNIT_ASSERT_EQUAL((size_t)0u,count(n));
CPPUNIT_ASSERT_EQUAL((size_t)1u,count(n,true));
GeneOrder go2(_validPerm4.begin(),_validPerm4.end());
ComponentTree t2(findComponents(go2));
t2.makeUnoriented();
- n = &t2._root;
+ n = t2._root;
CPPUNIT_ASSERT_EQUAL((size_t)4u,count(n));
CPPUNIT_ASSERT_EQUAL((size_t)6u,count(n,true));
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());
}
};