X-Git-Url: https://ruin.nu/git/?a=blobdiff_plain;f=src%2Ftest%2Fgenesortertest.cpp;h=c84ead8356fd26bf03e22000277e414180fd60cd;hb=efe42ca948704593c847996d0ae8da71d15bb75b;hp=6a58ce2b8fb6e8fa0ecace92a3542d2823545c83;hpb=8827131c37c21740b5ac8acf6da9ff598de3f166;p=germs.git diff --git a/src/test/genesortertest.cpp b/src/test/genesortertest.cpp index 6a58ce2..c84ead8 100644 --- a/src/test/genesortertest.cpp +++ b/src/test/genesortertest.cpp @@ -5,6 +5,8 @@ #include #include #include +#include +#include #include #include @@ -56,43 +58,54 @@ protected: void testSort (){ GeneSorter so; GeneOrder go(_validPerm.begin(),_validPerm.end()); - GeneSorter::ActionList al = so.sort(go); - CPPUNIT_ASSERT_EQUAL(0ul,al.size()); + GeneSorter::ActionList al = so.sort(go,Model(new Models::ModelImpl)); + CPPUNIT_ASSERT_EQUAL((size_t)0u,al.size()); GeneOrder go2(_validPerm2.begin(),_validPerm2.end()); - al = so.sort(go2); - CPPUNIT_ASSERT_EQUAL(1ul,al.size()); + al = so.sort(go2,Model(new Models::ModelImpl)); + CPPUNIT_ASSERT_EQUAL((size_t)1u,al.size()); CPPUNIT_ASSERT(al[0] == ReverseAction(2,3)); al[0](go2); CPPUNIT_ASSERT(equal(go.begin(),go.end(),go2.begin())); GeneOrder go3(_validPerm3.begin(),_validPerm3.end()); - al = so.sort(go3); - CPPUNIT_ASSERT_EQUAL(5ul,al.size()); + al = so.sort(go3,Model(new Models::ModelImpl)); + CPPUNIT_ASSERT_EQUAL((size_t)5u,al.size()); + for (size_t i = 0; i < al.size(); ++i) + al[i](go3); + int perm[] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16}; + CPPUNIT_ASSERT(equal(go3.begin(),go3.end(),perm)); + + GeneOrder go4(_validPerm4.begin(),_validPerm4.end()); + al = so.sort(go4,Model(new Models::ModelImpl)); + CPPUNIT_ASSERT_EQUAL((size_t)13u,al.size()); for (size_t i = 0; i < al.size(); ++i) al[i](go3); - int perm[] = {0,1,2,3,4,5,6,7,8,9}; CPPUNIT_ASSERT(equal(go3.begin(),go3.end(),perm)); } void testSafeActions (){ GeneSorter so; GeneOrder go(_validPerm.begin(),_validPerm.end()); GeneSorter::ActionList al = so.safeActions(go); - CPPUNIT_ASSERT_EQUAL(0ul,al.size()); + CPPUNIT_ASSERT_EQUAL((size_t)0u,al.size()); GeneOrder go2(_validPerm2.begin(),_validPerm2.end()); al = so.safeActions(go2); - CPPUNIT_ASSERT_EQUAL(1ul,al.size()); + CPPUNIT_ASSERT_EQUAL((size_t)2u,al.size()); CPPUNIT_ASSERT(al[0] == ReverseAction(2,3)); + CPPUNIT_ASSERT(al[1] == ReverseAction(2,3)); CPPUNIT_ASSERT(!(al[0] == ReverseAction(2,5))); GeneOrder go3(_validPerm3.begin(),_validPerm3.end()); al = so.safeActions(go3); CPPUNIT_ASSERT(al.size() > 0); - size_t cycles = countCycles(go3); - al[0](go3); - CPPUNIT_ASSERT(cycles < countCycles(go3)); + size_t dist = inversionDistance(go3); + for (size_t i = 0; i < al.size(); ++i){ + GeneOrder go(go3); + al[0](go); + CPPUNIT_ASSERT(dist > inversionDistance(go)); + } } };