]> ruin.nu Git - germs.git/blobdiff - src/test/componenttreetest.cpp
make the componenttree a minimal unoriented tree
[germs.git] / src / test / componenttreetest.cpp
index 222d2d76a7a3c63b74c7af5bd8900d16cdb146ee..3bde9b196eb94ebaee11cd650b14eb6d71e70ec3 100644 (file)
@@ -23,6 +23,7 @@ class TESTNAME : public CPPUNIT_NS::TestFixture
 {
   CPPUNIT_TEST_SUITE( TESTNAME );
   CPPUNIT_TEST( testCreate );
+  CPPUNIT_TEST( testMakeUnoriented );
   CPPUNIT_TEST_SUITE_END();
 
 protected:
@@ -97,6 +98,34 @@ protected:
 
        }
 
+       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);
+       }
+
 };
 
 CPPUNIT_TEST_SUITE_REGISTRATION( TESTNAME );