GeneOrder go2(_validPerm2.begin(),_validPerm2.end());
al = so.sort(go2);
CPPUNIT_ASSERT_EQUAL(1ul,al.size());
- CPPUNIT_ASSERT((*al[0]) == ReverseAction(2,3));
+ CPPUNIT_ASSERT(al[0] == ReverseAction(2,3));
- (*al[0])(go2);
+ 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());
for (size_t i = 0; i < al.size(); ++i)
- (*al[i])(go3);
- int perm[] = {0,1,2,3,4,5,6,7,8,9};
+ 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);
+ CPPUNIT_ASSERT_EQUAL(13ul,al.size());
+ for (size_t i = 0; i < al.size(); ++i)
+ al[i](go3);
CPPUNIT_ASSERT(equal(go3.begin(),go3.end(),perm));
}
void testSafeActions (){
GeneOrder go2(_validPerm2.begin(),_validPerm2.end());
al = so.safeActions(go2);
- CPPUNIT_ASSERT_EQUAL(1ul,al.size());
- CPPUNIT_ASSERT((*al[0]) == ReverseAction(2,3));
- CPPUNIT_ASSERT(!((*al[0]) == ReverseAction(2,5)));
+ CPPUNIT_ASSERT_EQUAL(2ul,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 dist = inversionDistance(go3);
+ for (size_t i = 0; i < al.size(); ++i){
+ GeneOrder go(go3);
+ al[0](go);
+ CPPUNIT_ASSERT(dist > inversionDistance(go));
+ }
}
};