1 #include <cppunit/TestFixture.h>
2 #include <cppunit/extensions/HelperMacros.h>
4 #include <genesorter.h>
6 #include <genealgorithms.h>
7 #include <componenttree.h>
14 * A test case that is designed to produce
15 * example errors and failures.
19 #define TESTNAME ComponentTreeTest
22 class TESTNAME : public CPPUNIT_NS::TestFixture
24 CPPUNIT_TEST_SUITE( TESTNAME );
25 CPPUNIT_TEST( testCreate );
26 CPPUNIT_TEST_SUITE_END();
29 vector<int> _validPerm;
30 vector<int> _validPerm2;
31 vector<int> _validPerm3;
32 vector<int> _validPerm4;
37 int validPerm[] = {1,2,3,4};
38 _validPerm.assign(validPerm,validPerm+4);
39 int validPerm2[] = {1,-3,-2,4};
40 _validPerm2.assign(validPerm2,validPerm2+4);
41 int validPerm3[] = {0,-2,-1,4,3,5,-8,6,7,9};
42 _validPerm3.assign(validPerm3,validPerm3+10);
43 int validPerm4[] = {-3,1,2,4,6,5,7,-15,-13,-14,-12,-10,-11,-9,8};
44 _validPerm4.assign(validPerm4,validPerm4+15);
50 size_t count(ComponentTree::Node* n, bool all = false){
52 if (all || n->_comp.i2 != 0)
54 for (vector<ComponentTree::Node*>::iterator c = n->_children.begin();
55 c != n->_children.end(); ++c){
61 GeneOrder go(_validPerm.begin(),_validPerm.end());
62 ComponentTree t(findComponents(go));
63 ComponentTree::Node* n = &t._root;
65 CPPUNIT_ASSERT_EQUAL((size_t)4u,count(n));
66 CPPUNIT_ASSERT_EQUAL((size_t)5u,count(n,true));
67 CPPUNIT_ASSERT_EQUAL((size_t)4u,n->_children.size());
69 Component go10(0,1,0,0,1);
70 Component go11(1,2,0,1,2);
71 Component go12(2,3,0,2,3);
72 Component go13(3,4,0,3,4);
73 CPPUNIT_ASSERT(n->_children[0]->_comp == go10);
74 CPPUNIT_ASSERT(n->_children[1]->_comp == go11);
75 CPPUNIT_ASSERT(n->_children[2]->_comp == go12);
76 CPPUNIT_ASSERT(n->_children[3]->_comp == go13);
78 GeneOrder go2(_validPerm4.begin(),_validPerm4.end());
79 ComponentTree t2(findComponents(go2));
82 CPPUNIT_ASSERT_EQUAL((size_t)6u,count(n));
83 CPPUNIT_ASSERT_EQUAL((size_t)9u,count(n,true));
84 CPPUNIT_ASSERT_EQUAL((size_t)3u,n->_children.size());
85 Component go20(1,2,0,2,3);
86 Component go21(0,4,0,0,4);
87 Component go22(4,7,1,4,7);
88 Component go23(-15,-12,-1,8,11);
89 Component go24(-12,-9,-1,11,14);
90 Component go25(7,16,0,7,16);
91 CPPUNIT_ASSERT(n->_children[0]->_comp == go21);
92 CPPUNIT_ASSERT(n->_children[1]->_comp == go22);
93 CPPUNIT_ASSERT(n->_children[2]->_comp == go25);
99 CPPUNIT_TEST_SUITE_REGISTRATION( TESTNAME );