set_motifs should erase the previous motifs
[mussa.git] / alg / test / test_mussa.cpp
index 2ab594a10107eb0bcd2c3bc82193ccad966722b7..2cf19c0c4226bfb0a3f5f5747dc535a3764f205f 100644 (file)
@@ -165,11 +165,42 @@ BOOST_AUTO_TEST_CASE( mussa_add_motif )
   Mussa m1;
   m1.append_sequence("AAAAGGGGTTTT");
   m1.append_sequence("GGGCCCCTTGGTT");
-  m1.add_motifs(motifs, colors);
+  m1.set_motifs(motifs, colors);
   int first_size = m1.motifs().size();
   BOOST_CHECK_EQUAL( first_size, 1 );
-  m1.add_motifs(motifs, colors);
+  BOOST_REQUIRE(first_size > 0);
+  BOOST_CHECK_EQUAL(*(m1.motifs().begin()), motifs.front());
+  // make sure that our sequences have the right number of motifs
+  BOOST_CHECK_EQUAL(m1.sequences()[0]->motifs().size(), 1);
+  BOOST_CHECK_EQUAL(m1.sequences()[1]->motifs().size(), 1); // because of rc
+
+  // verify that setting the motif clears the arrays
+  m1.set_motifs(motifs, colors);
   BOOST_CHECK_EQUAL( first_size, m1.motifs().size() );
+  // make sure that our sequences have the right number of motifs
+  BOOST_CHECK_EQUAL(m1.sequences()[0]->motifs().size(), 1);
+  BOOST_CHECK_EQUAL(m1.sequences()[1]->motifs().size(), 1);
+
+  // add a different motif
+  motifs.clear();
+  motifs.push_back("CCTTGG");
+  BOOST_CHECK_EQUAL(motifs.size(), 1);
+  m1.set_motifs(motifs, colors);
+  BOOST_CHECK_EQUAL(m1.motifs().size(), 1);
+  BOOST_REQUIRE(m1.motifs().size() > 0);
+  BOOST_CHECK_EQUAL(*(m1.motifs().begin()), motifs.front());
+  BOOST_CHECK_EQUAL(m1.sequences()[0]->motifs().size(), 0);
+  BOOST_CHECK_EQUAL(m1.sequences()[1]->motifs().size(), 1);
+
+  // try a motif that doesn't exist
+  motifs.clear();
+  motifs.push_back("CCTTGG");
+  BOOST_CHECK_EQUAL(motifs.size(), 1);
+  m1.set_motifs(motifs, colors);
+  BOOST_CHECK_EQUAL(m1.motifs().size(), 1);
+  BOOST_CHECK_EQUAL(m1.sequences()[0]->motifs().size(), 0);
+  BOOST_CHECK_EQUAL(m1.sequences()[1]->motifs().size(), 1);
+
 }
 
 static void