X-Git-Url: http://woldlab.caltech.edu/gitweb/?p=mussa.git;a=blobdiff_plain;f=alg%2Ftest%2Ftest_conserved_path.cpp;h=2ccea3bbfba5b4fd0bb8da3a4baa4562e7ea5a52;hp=b28c63573f63bde8d86a3e4e433ff199b9ec1954;hb=HEAD;hpb=198f7c18fd0b5fa84528e9b28a84269c3a856cc4 diff --git a/alg/test/test_conserved_path.cpp b/alg/test/test_conserved_path.cpp index b28c635..2ccea3b 100644 --- a/alg/test/test_conserved_path.cpp +++ b/alg/test/test_conserved_path.cpp @@ -1,4 +1,7 @@ -#include +#define BOOST_TEST_DYN_LINK +#define BOOST_TEST_MODULE test_conserved_path +#include + #include using namespace boost::assign; @@ -22,7 +25,7 @@ BOOST_AUTO_TEST_CASE ( conserved_path_simple ) cp1.track_indexes = path; BOOST_CHECK_EQUAL( cp1.size(), path.size() ); - ConservedPath cp2(18, path); + ConservedPath cp2(20, 18, path); BOOST_CHECK_EQUAL (cp1, cp2); BOOST_CHECK_EQUAL( cp2.size(), path.size() ); @@ -63,29 +66,49 @@ BOOST_AUTO_TEST_CASE ( conserved_path_vector ) BOOST_CHECK_EQUAL( cp.size(), 1 ); } +// does the reverse compliment test work? +BOOST_AUTO_TEST_CASE ( conserved_path_reverse_compliment ) +{ + vector path; + path += 3,4,-5,1; // magic from boost assign + + ConservedPath cp1(20, 10, path); + vector reversed = cp1.reverseComplimented(); + + BOOST_CHECK_EQUAL( path.size(), reversed.size()); + vector::iterator path_i = path.begin(); + vector::iterator reversed_i = reversed.begin(); + for(; path_i != path.end() and reversed_i != reversed.end(); + ++path_i, ++reversed_i) + { + // if we're less than zero our reversed flag should be true + BOOST_CHECK_EQUAL( *path_i < 0, *reversed_i); + } +} + BOOST_AUTO_TEST_CASE ( extended_conserved_path_simple ) { vector path; path += 3,4,5,1; // magic from boost assign - ExtendedConservedPath ecp1; + ConservedPath ecp1; ecp1.window_size = 30; ecp1.score = 18; ecp1.track_indexes = path; BOOST_CHECK_EQUAL ( ecp1.size(), path.size() ); - ExtendedConservedPath ecp2(30, 18.0, path); + ConservedPath ecp2(30, 18.0, path); BOOST_CHECK_EQUAL ( ecp1, ecp2 ); BOOST_CHECK_EQUAL ( ecp2.size(), path.size() ); - ExtendedConservedPath ecp_ne(35, 20.0, path); + ConservedPath ecp_ne(35, 20.0, path); BOOST_CHECK(ecp2 != ecp_ne); ConservedPath cp1; cp1.score = 18; cp1.track_indexes = path; - ExtendedConservedPath ecp3(30, cp1); + ConservedPath ecp3(cp1); BOOST_CHECK_EQUAL( ecp2, ecp3 ); BOOST_CHECK_EQUAL( ecp3.size(), path.size() ); } @@ -103,10 +126,10 @@ BOOST_AUTO_TEST_CASE ( extended_conserved_path_growth ) path_not_next += 4,5,6,5; const int window_size = 4; - ExtendedConservedPath ecp_base(window_size, 20, path_base); - ConservedPath cp_next(25, path_next); - ConservedPath cp_next_reversed(25, path_next_reversed); - ConservedPath cp_not_next(22, path_not_next); + ConservedPath ecp_base(window_size, 20, path_base); + ConservedPath cp_next(window_size, 25, path_next); + ConservedPath cp_next_reversed(window_size, 25, path_next_reversed); + ConservedPath cp_not_next(window_size, 22, path_not_next); BOOST_CHECK(ecp_base.nextTo(cp_next)); BOOST_CHECK(!ecp_base.nextTo(cp_not_next)); @@ -117,3 +140,83 @@ BOOST_AUTO_TEST_CASE ( extended_conserved_path_growth ) ecp_base.extend(growth); BOOST_CHECK_EQUAL( ecp_base.window_size, window_size + growth ); } + +BOOST_AUTO_TEST_CASE ( extended_conserved_normalized ) +{ + vector path; + path += 3,-14,5,-19; // magic from boost assign + vector normalized_path; + normalized_path += 3,4, 5,9; + + ConservedPath ecp1; + ecp1.window_size = 10; + ecp1.score = 18; + ecp1.track_indexes = path; + BOOST_CHECK_EQUAL ( ecp1.size(), path.size() ); + + vector normalized_index(ecp1.normalizedIndexes()); + + for(int i=0; i != ecp1.size(); ++i) + { + BOOST_CHECK_EQUAL(normalized_index[i], normalized_path[i]); + } +} + +BOOST_AUTO_TEST_CASE( conserved_path_less_than ) +{ + vector p111; + p111 += 1,1,1; + vector p112; + p112 += 1,1,2; + vector p115; + p115 += 1,1,5; + vector p112a; + p112a += 1,1,1; + vector p1111; + p1111 += 1,1,1,1; + + ConservedPath cp111(10, 1.0, p111); + ConservedPath cp112(10, 1.0, p112); + ConservedPath cp112a(10, 1.0, p112a); + ConservedPath cp115(10, 1.0, p115); + ConservedPath cp1111(10, 1.0, p1111); + + BOOST_CHECK_EQUAL( cp111 < cp112, true ); + BOOST_CHECK_EQUAL( cp111 < cp1111, true ); + BOOST_CHECK_EQUAL( cp1111 < cp111, false ); + BOOST_CHECK_EQUAL( cp112 < cp112, false ); + BOOST_CHECK_EQUAL( cp112 == cp112, true ); + BOOST_CHECK_EQUAL( cp112 < cp115, true ); +} + +BOOST_AUTO_TEST_CASE( conserved_path_sort ) +{ + vector p111; + p111 += 1,1,1; + vector p112; + p112 += 1,1,2; + vector p115; + p115 += 1,1,5; + vector p121; + p121 += 1,2,1; + + ConservedPath cp111(10, 1.0, p111); + ConservedPath cp112(10, 1.0, p112); + ConservedPath cp115(10, 1.0, p115); + ConservedPath cp121(10, 1.0, p121); + + list paths; + paths.push_back(cp115); + paths.push_back(cp121); + paths.push_back(cp112); + paths.push_back(cp111); + + paths.sort(); + BOOST_REQUIRE_EQUAL( paths.size(), 4 ); + list::const_iterator path_i = paths.begin(); + + BOOST_CHECK_EQUAL( *path_i, cp111 ); ++path_i; + BOOST_CHECK_EQUAL( *path_i, cp112 ); ++path_i; + BOOST_CHECK_EQUAL( *path_i, cp115 ); ++path_i; + BOOST_CHECK_EQUAL( *path_i, cp121 ); +}