X-Git-Url: https://ruin.nu/git/?p=germs.git;a=blobdiff_plain;f=src%2Ftest%2Fcomponenttreetest.cpp;fp=src%2Ftest%2Fcomponenttreetest.cpp;h=3e0b5051a57c62f15ddb7552f2cfb4dbd80a473e;hp=0000000000000000000000000000000000000000;hb=dcd966c5fca7dca53ca1f605f70f13f019d29771;hpb=8e617d91244bf6c8b22503850e10909fa2071c44 diff --git a/src/test/componenttreetest.cpp b/src/test/componenttreetest.cpp new file mode 100644 index 0000000..3e0b505 --- /dev/null +++ b/src/test/componenttreetest.cpp @@ -0,0 +1,101 @@ +#include +#include + +#include +#include +#include +#include + +#include +#include +using namespace std; + +/* + * A test case that is designed to produce + * example errors and failures. + * + */ + +#define TESTNAME ComponentTreeTest + + +class TESTNAME : public CPPUNIT_NS::TestFixture +{ + CPPUNIT_TEST_SUITE( TESTNAME ); + CPPUNIT_TEST( testCreate ); + CPPUNIT_TEST_SUITE_END(); + +protected: + vector _validPerm; + vector _validPerm2; + vector _validPerm3; + vector _validPerm4; + +public: + + void setUp (){ + int validPerm[] = {1,2,3,4}; + _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}; + _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); + + } + +protected: + + size_t count(ComponentTree::Node* n, bool all = false){ + size_t num = 0; + if (all || n->_comp.i2 != 0) + num += 1; + for (vector::iterator c = n->_children.begin(); + c != n->_children.end(); ++c){ + num += count(*c,all); + } + return num; + } + void testCreate (){ + GeneOrder go(_validPerm.begin(),_validPerm.end()); + ComponentTree t(findComponents(go)); + ComponentTree::Node* n = &t._root; + + CPPUNIT_ASSERT_EQUAL((size_t)4u,count(n)); + CPPUNIT_ASSERT_EQUAL((size_t)5u,count(n,true)); + CPPUNIT_ASSERT_EQUAL((size_t)4u,n->_children.size()); + + Component go10(0,1,0,0,1); + Component go11(1,2,0,1,2); + Component go12(2,3,0,2,3); + Component go13(3,4,0,3,4); + CPPUNIT_ASSERT(n->_children[0]->_comp == go10); + CPPUNIT_ASSERT(n->_children[1]->_comp == go11); + CPPUNIT_ASSERT(n->_children[2]->_comp == go12); + CPPUNIT_ASSERT(n->_children[3]->_comp == go13); + + GeneOrder go2(_validPerm4.begin(),_validPerm4.end()); + ComponentTree t2(findComponents(go2)); + n = &t2._root; + + CPPUNIT_ASSERT_EQUAL((size_t)6u,count(n)); + CPPUNIT_ASSERT_EQUAL((size_t)9u,count(n,true)); + CPPUNIT_ASSERT_EQUAL((size_t)3u,n->_children.size()); + Component go20(1,2,0,2,3); + Component go21(0,4,0,0,4); + 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 == go21); + CPPUNIT_ASSERT(n->_children[1]->_comp == go22); + CPPUNIT_ASSERT(n->_children[2]->_comp == go25); + + } + +}; + +CPPUNIT_TEST_SUITE_REGISTRATION( TESTNAME ); + +#undef TESTNAME