#include "alg/sequence.hpp"
#include "paircomp.hh"
+#include "Match.hh"
using namespace std;
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<Sequence> 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<paircomp::NwayPath> 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<Sequence> nway(4, 1.0);
+ nway.add_sequence(s0);
+ nway.add_sequence(s1);
+ nway.add_sequence(s2);
+ std::vector<paircomp::NwayPath> 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