From: Diane Trout Date: Fri, 5 Jan 2007 23:46:48 +0000 (+0000) Subject: test paircomp::NwayComparison X-Git-Url: http://woldlab.caltech.edu/gitweb/?p=mussa.git;a=commitdiff_plain;h=26820f9f79e3b01cbf1717c0d4d2a873ff4baa3e test paircomp::NwayComparison this does require paircomp revision 110 from http://svn.idyll.org/svn/t/cartwheel/branches/diane/paircomp if you're using paircomp. Mussa will only try to build paircomp if there's a mussa/paircomp directory. --- diff --git a/alg/test/test_paircomp.cpp b/alg/test/test_paircomp.cpp index 045c7e2..e32f5c7 100644 --- a/alg/test/test_paircomp.cpp +++ b/alg/test/test_paircomp.cpp @@ -8,6 +8,7 @@ namespace fs = boost::filesystem; #include "alg/sequence.hpp" #include "paircomp.hh" +#include "Match.hh" using namespace std; @@ -43,5 +44,63 @@ BOOST_AUTO_TEST_CASE( simple_nxn_comparison_mixed_case ) BOOST_CHECK_EQUAL( cmp->is_empty(), false); const paircomp::_MatchContainer *matches = cmp->get_matches(0); BOOST_REQUIRE( matches != 0); - BOOST_CHECK_EQUAL( matches->num, 1 ); + BOOST_CHECK_EQUAL( matches->num, 1 ); + paircomp::Match *m = &(matches->block[ 0 ]); + BOOST_CHECK_EQUAL( m->get_top_pos(), 0 ); + BOOST_CHECK_EQUAL( m->get_bot_pos(), 0 ); + BOOST_CHECK_EQUAL( m->get_length(), 6 ); +} + +//! there should be no matches +BOOST_AUTO_TEST_CASE( paircomp_3way_null ) +{ + Sequence s0("AAAANNNN"); + Sequence s1("GGGGNNNN"); + Sequence s2("TTTTNNNN"); + + paircomp::NwayComparison cmp(4, 0.75); + cmp.add_sequence(s0); + cmp.add_sequence(s1); + cmp.add_sequence(s2); + BOOST_CHECK_EQUAL( cmp.size(), cmp.n_sequences() ); + BOOST_CHECK_EQUAL( cmp.size(), 3 ); + std::vector paths = cmp.filter(); + + BOOST_CHECK_EQUAL( paths.size(), 0 ); +} + +//! there should be no matches +BOOST_AUTO_TEST_CASE( paircomp_3way_one_match ) +{ + Sequence s0("AAAANNNN"); + Sequence s1("AAAAGGGG"); + Sequence s2("NNNNTTTT"); + + paircomp::NwayComparison nway(4, 1.0); + nway.add_sequence(s0); + nway.add_sequence(s1); + nway.add_sequence(s2); + std::vector paths = nway.filter(); + + // check the comparisons hidden within the nway to make sure they still make sense + paircomp::ImmutableComparison *cmp_0_1 = nway.get_comparison(0,1); + const paircomp::_MatchContainer *matches = cmp_0_1->get_matches(0); + BOOST_REQUIRE( matches != 0 ); + BOOST_CHECK_EQUAL( matches->num, 1 ); + BOOST_CHECK_EQUAL( matches->block[0].get_top_pos(), 0 ); + BOOST_CHECK_EQUAL( matches->block[0].get_bot_pos(), 0 ); + + BOOST_REQUIRE_EQUAL( paths.size(), 1 ); + std::stringstream result; + result << paths; + BOOST_CHECK_EQUAL( result.str(), "[[0(+), 0(-), 4(+)]]"); + + BOOST_CHECK_EQUAL( paths[0][0].pos, 0 ); + BOOST_CHECK_EQUAL( paths[0][0].orient, 1 ); + + BOOST_CHECK_EQUAL( paths[0][1].pos, 0 ); + BOOST_CHECK_EQUAL( paths[0][1].orient, -1 ); + + BOOST_CHECK_EQUAL( paths[0][2].pos, 4 ); + BOOST_CHECK_EQUAL( paths[0][2].orient, 1 ); } \ No newline at end of file