+#include <cppunit/TestFixture.h>
+#include <cppunit/extensions/HelperMacros.h>
+
+#include <genesorter.h>
+#include <geneorder.h>
+#include <genealgorithms.h>
+#include <reverseaction.h>
+
+#include <algorithm>
+#include <iterator>
+using namespace std;
+
+/*
+ * A test case that is designed to produce
+ * example errors and failures.
+ *
+ */
+
+#define TESTNAME GeneSorterTest
+
+
+class TESTNAME : public CPPUNIT_NS::TestFixture
+{
+ CPPUNIT_TEST_SUITE( TESTNAME );
+ CPPUNIT_TEST( testCreate );
+ CPPUNIT_TEST( testSafeActions );
+ CPPUNIT_TEST( testSort );
+ CPPUNIT_TEST_SUITE_END();
+
+protected:
+ vector<int> _validPerm;
+ vector<int> _validPerm2;
+ vector<int> _validPerm3;
+ vector<int> _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:
+
+ void testCreate (){
+ GeneSorter so;
+ so = so;
+ }
+ void testSort (){
+ GeneSorter so;
+ GeneOrder go(_validPerm.begin(),_validPerm.end());
+ GeneSorter::ActionList al = so.sort(go);
+ CPPUNIT_ASSERT_EQUAL(0ul,al.size());
+
+ GeneOrder go2(_validPerm2.begin(),_validPerm2.end());
+ al = so.sort(go2);
+ CPPUNIT_ASSERT_EQUAL(1ul,al.size());
+ CPPUNIT_ASSERT(al[0] == ReverseAction(2,3));
+
+ GeneOrder go3(_validPerm3.begin(),_validPerm3.end());
+ al = so.sort(go3);
+ CPPUNIT_ASSERT_EQUAL(5ul,al.size());
+ }
+ void testSafeActions (){
+ GeneSorter so;
+ GeneOrder go(_validPerm.begin(),_validPerm.end());
+ GeneSorter::ActionList al = so.safeActions(go);
+ CPPUNIT_ASSERT_EQUAL(0ul,al.size());
+
+ GeneOrder go2(_validPerm2.begin(),_validPerm2.end());
+ al = so.safeActions(go2);
+ CPPUNIT_ASSERT_EQUAL(1ul,al.size());
+ CPPUNIT_ASSERT(al[0] == ReverseAction(2,3));
+ }
+
+};
+
+CPPUNIT_TEST_SUITE_REGISTRATION( TESTNAME );
+
+#undef TESTNAME