X-Git-Url: https://ruin.nu/git/?p=germs.git;a=blobdiff_plain;f=src%2Ftest%2Fgeneordertest.cpp;h=bfa2dbdd4dc82bb7fee3ba67ebe02130a677bdc8;hp=d8cf105f68b3dce230beba2f23aa5bf0dddb246f;hb=959f25585c048a9cda1653ef4c5ea2c1a7007b67;hpb=61d4b0437c63ecc3452e8b59746d629a4387543f diff --git a/src/test/geneordertest.cpp b/src/test/geneordertest.cpp index d8cf105..bfa2dbd 100644 --- a/src/test/geneordertest.cpp +++ b/src/test/geneordertest.cpp @@ -2,6 +2,8 @@ #include #include + +#include using namespace std; /* @@ -17,6 +19,9 @@ class TESTNAME : public CPPUNIT_NS::TestFixture { CPPUNIT_TEST_SUITE( TESTNAME ); CPPUNIT_TEST( testCreate ); + CPPUNIT_TEST( testCopyCreate ); + CPPUNIT_TEST( testAssign ); + CPPUNIT_TEST( testReverse ); CPPUNIT_TEST_SUITE_END(); protected: @@ -51,6 +56,40 @@ protected: CPPUNIT_ASSERT_NO_THROW(GeneOrder go(_bigvalidPerm.begin(),_bigvalidPerm.end())); CPPUNIT_ASSERT_THROW(GeneOrder go(_invalidPerm.begin(),_invalidPerm.end()),invalid_argument); } + void testCopyCreate (){ + GeneOrder go(_bigvalidPerm.begin(),_bigvalidPerm.end()); + GeneOrder go2(go); + CPPUNIT_ASSERT(equal(go.begin(),go.end(),go2.begin())); + GeneOrder go3(_validPerm.begin(),_validPerm.end()); + CPPUNIT_ASSERT(!equal(go3.begin(),go3.end(),go2.begin())); + } + void testAssign (){ + GeneOrder go(_bigvalidPerm.begin(),_bigvalidPerm.end()); + GeneOrder go2(_validPerm.begin(),_validPerm.end()); + go2 = go; + CPPUNIT_ASSERT(equal(go.begin(),go.end(),go2.begin())); + GeneOrder go3(_validPerm.begin(),_validPerm.end()); + CPPUNIT_ASSERT(!equal(go3.begin(),go3.end(),go2.begin())); + } + void testReverse(){ + int validPerm[] = {1,2,3,4,5,6,7}; + GeneOrder go(validPerm,validPerm+7); + int validPerm2[] = {1,-6,-5,-4,-3,-2,7}; + GeneOrder go2(validPerm2,validPerm2+7); + go2.reverse(2,6); + CPPUNIT_ASSERT(equal(go.begin(),go.end(),go2.begin())); + + int validPerm3[] = {1,6,-5,-4,-3,2,7}; + GeneOrder go3(validPerm3,validPerm3+7); + + go3.reverse(2,6); + CPPUNIT_ASSERT(!equal(go.begin(),go.end(),go3.begin())); + + CPPUNIT_ASSERT_THROW(go.reverse(2,1),out_of_range); + CPPUNIT_ASSERT_THROW(go.reverse(1,9),out_of_range); + CPPUNIT_ASSERT_THROW(go.reverse(-1,3),out_of_range); + } + }; CPPUNIT_TEST_SUITE_REGISTRATION( TESTNAME );