copy motifs to a new subanalysis
[mussa.git] / alg / test / test_sequence.cpp
index 6317144c026510016c8e7f1fe376f1105aab6d65..a3c63b6d87d8c4710a4cb76777a0e9b6775b711f 100644 (file)
@@ -612,6 +612,37 @@ BOOST_AUTO_TEST_CASE( sequence_motifs )
   */
 }
 
+BOOST_AUTO_TEST_CASE( sequence_motif_subseq)
+{
+  // when searching for a motif on a subsequence we should 
+  // only search the subsequence ticket:199
+  string aaaa("AAAA");
+  string cccc("CCCC");
+  Sequence s1("AAAANCCCC", Sequence::reduced_dna_alphabet);
+
+  // this shouldn't show up
+  s1.add_motif(cccc);
+  BOOST_CHECK_EQUAL( s1.motifs().size(), 1 );
+
+  s1.add_motif(aaaa);
+  BOOST_CHECK_EQUAL( s1.motifs().size(), 2 );
+
+  Sequence subseq1 = s1.subseq(4,5);
+  BOOST_CHECK_EQUAL(subseq1.motifs().size(), 2);
+  subseq1.clear_motifs();
+  BOOST_CHECK_EQUAL(subseq1.motifs().size(), 0);
+  // this is outside of our subsequence, and so shouldn't be found    
+  subseq1.add_motif(aaaa);
+  BOOST_CHECK_EQUAL( subseq1.motifs().size(), 0 );
+  
+  subseq1.add_motif(cccc);
+  BOOST_CHECK_EQUAL( subseq1.motifs().size(), 1);
+  std::list<motif>::const_iterator motif_i = subseq1.motifs().begin();
+  BOOST_REQUIRE(motif_i != subseq1.motifs().end());
+  BOOST_CHECK_EQUAL(motif_i->begin, 1);
+  BOOST_CHECK_EQUAL(motif_i->end, 5);
+}
+
 BOOST_AUTO_TEST_CASE( annot_test )
 {
   annot a(0, 10, "test", "thing");