throw errors when spirit parsing fails
[mussa.git] / alg / test / test_mussa.cpp
index dd68250476d906dc1edaf8750d1e59aa6e315359..74f3c20b2a543f1f0d14b9a92aad49da3aa30b1b 100644 (file)
@@ -180,8 +180,7 @@ BOOST_AUTO_TEST_CASE( mussa_load_analysis )
 BOOST_AUTO_TEST_CASE( mussa_load_motif )
 {
   string data = "AAGG 1.0 1.0 0.0\n"
-                "GGTT 0.0 0.1 1.0\n"
-                "ZXY 2 1.9 0\n";
+                "GGTT 0.0 0.1 1.0\n";
 
   istringstream test_istream(data);
 
@@ -190,6 +189,7 @@ BOOST_AUTO_TEST_CASE( mussa_load_motif )
   m1.append_sequence("GGGCCCCTTCCAATT");
   m1.load_motifs(test_istream);
 
+  BOOST_CHECK_EQUAL( m1.motifs().size(), 2);
   for (Mussa::vector_sequence_type::const_iterator seq_i = m1.sequences().begin();
        seq_i != m1.sequences().end();
        ++seq_i)
@@ -198,6 +198,22 @@ BOOST_AUTO_TEST_CASE( mussa_load_motif )
   }
 }
 
+BOOST_AUTO_TEST_CASE( mussa_load_broken_motif )
+{
+  string data = "AAGG 1.0 1.0 0.0\n"
+                "GGTT 0.0 0.1 1.0 1.0\n"
+                "ZZCTA 0.1 0.0 1.0\n";
+
+  istringstream test_istream(data);
+
+  Mussa m1;
+  m1.append_sequence("AAAAGGGGTTTT");
+  m1.append_sequence("GGGCCCCTTCCAATT");
+  BOOST_CHECK_THROW(m1.load_motifs(test_istream), motif_load_error);
+
+  BOOST_CHECK_EQUAL( m1.motifs().size(), 0);
+}
+
 BOOST_AUTO_TEST_CASE( mussa_named_motif )
 {
   string data = "CCAATT cat 0.1 0.2 0.3\n";