set_motifs should erase the previous motifs
[mussa.git] / alg / test / test_sequence.cpp
index 1f3256ee3997bec9e32d767dfb4614aac61c9cf5..cf543fd00c603bce8b0286ed5ffafb08ef8a91c2 100644 (file)
@@ -226,9 +226,11 @@ BOOST_AUTO_TEST_CASE( sequence_motifs )
   BOOST_CHECK( motif_end == s1.motifs().end() );
   BOOST_CHECK( motif_i == motif_end );
 
-
+  // this shouldn't show up
   s1.add_motif(bogus);
   BOOST_CHECK( s1.motifs().begin() == s1.motifs().end() );
+  BOOST_CHECK_EQUAL( s1.motifs().size(), 0 );
+
   s1.add_motif(m);
   BOOST_CHECK( s1.motifs().begin() != s1.motifs().end() );
   BOOST_CHECK_EQUAL( s1.motifs().size(), 2 );
@@ -340,6 +342,34 @@ BOOST_AUTO_TEST_CASE( subseq_annotation_test )
   }
 }
 
+BOOST_AUTO_TEST_CASE( motif_annotation_update )
+{
+  string s("CCGTCCCCCATCATCGCGGCTCTCCGAGAGTCCCGCGCCCCACTCCCGGC"
+           "ACCCACCTGACCGCGGGCGGCTCCGGCCCCGCTTCGCCCCACTGCGATCA"
+           "GTCGCGTCCCGCAGGCCAGGCACGCCCCGCCGCTCCCGCTGCGCCGGGCG"
+           "TCTGGGACCTCGGGCGGCTCCTCCGAGGGGCGGGGCAGCCGGGAGCCACG"
+           "CCCCCGCAGGTGAGCCGGCCACGCCCACCGCCCGTGGGAAGTTCAGCCTC"
+           "GGGGCTCCAGCCCCGCGGGAATGGCAGAACTTCGCACGCGGAACTGGTAA"
+           "CCTCCAGGACACCTCGAATCAGGGTGATTGTAGCGCAGGGGCCTTGGCCA"
+           "AGCTAAAACTTTGGAAACTTTAGATCCCAGACAGGTGGCTTTCTTGCAGT");
+  Sequence seq(s);
+
+  // starting conditions
+  BOOST_CHECK_EQUAL(seq.annotations().size(), 0);
+  BOOST_CHECK_EQUAL(seq.motifs().size(), 0);
+  seq.add_annotation(annot(0, 10, "0-10", "0-10"));
+  seq.add_annotation(annot(10, 20, "10-20", "10-20"));
+  seq.add_annotation(annot(0, 20, "0-20", "0-20"));
+  BOOST_CHECK_EQUAL(seq.annotations().size(), 3);
+  BOOST_CHECK_EQUAL(seq.motifs().size(), 0);
+  seq.add_motif("CCGTCCC");
+  BOOST_CHECK_EQUAL(seq.annotations().size(), 3);
+  BOOST_CHECK_EQUAL(seq.motifs().size(), 1);
+  seq.clear_motifs();
+  BOOST_CHECK_EQUAL(seq.annotations().size(), 3);
+  BOOST_CHECK_EQUAL(seq.motifs().size(), 0);
+}
+
 BOOST_AUTO_TEST_CASE( out_operator )
 {
   string s("AAGGCCTT");