test paircomp::NwayComparison
authorDiane Trout <diane@caltech.edu>
Fri, 5 Jan 2007 23:46:48 +0000 (23:46 +0000)
committerDiane Trout <diane@caltech.edu>
Fri, 5 Jan 2007 23:46:48 +0000 (23:46 +0000)
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.

alg/test/test_paircomp.cpp

index 045c7e2f2542554726a8c9d848c2ab39ac3bc138..e32f5c72659e813b4ae959e34181f82ba9422e4f 100644 (file)
@@ -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<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