refactor glsequence to be more testable
[mussa.git] / alg / test / test_sequence.cxx
index 0ef0a41e0820a860342d131d62d35fc9a2fe39bc..17c021df5d9d0df0c1f1dd92aff53e06b516274a 100644 (file)
@@ -28,9 +28,12 @@ BOOST_AUTO_TEST_CASE( sequence_filter )
   BOOST_CHECK_EQUAL(s3.get_seq(), "ANNNG");
   BOOST_CHECK_EQUAL(s3.subseq(0,2), "AN");
 
-  BOOST_CHECK_EQUAL(s3.filter_sequence("AAGGCCTT", 0, 2), "AA");
-  BOOST_CHECK_EQUAL(s3.filter_sequence("AAGGCCTT", 2, 2), "GG");
-  BOOST_CHECK_EQUAL(s3.filter_sequence("AAGGCCTT", 4), "CCTT");
+  s3.set_filtered_sequence("AAGGCCTT", 0, 2); 
+  BOOST_CHECK_EQUAL(s3.get_seq(), "AA");
+  s3.set_filtered_sequence("AAGGCCTT", 2, 2);
+  BOOST_CHECK_EQUAL( s3.get_seq(), "GG");
+  s3.set_filtered_sequence("AAGGCCTT", 4);
+  BOOST_CHECK_EQUAL( s3.get_seq(), "CCTT");
   
   s3.clear();
   BOOST_CHECK_EQUAL(s3.get_seq(), "");
@@ -49,3 +52,39 @@ BOOST_AUTO_TEST_CASE( sequence_load )
                                     "muscle creatine kinase gene (CKMM), "
                                     "5' flank");
 }
+
+BOOST_AUTO_TEST_CASE ( sequence_empty )
+{
+  Sequence s;
+  BOOST_CHECK_EQUAL( s.empty(), true );
+  s = "AAAGGG";
+  BOOST_CHECK_EQUAL( s.empty(), false );
+}
+
+BOOST_AUTO_TEST_CASE ( sequence_iterators )
+{
+  std::string seq_string = "AAGGCCTTNNTATA";
+  Sequence s(seq_string);
+  const Sequence cs(s);
+  std::string::size_type count = 0;
+
+  std::string::iterator str_itor;
+  Sequence::iterator s_itor;
+  Sequence::const_iterator cs_itor;
+
+  for( str_itor = seq_string.begin(),
+       s_itor   = s.begin(),
+       cs_itor  = cs.begin();
+       str_itor != seq_string.end() and
+       s_itor   != s.end() and
+       cs_itor  != cs.end();
+       ++str_itor, ++s_itor, ++cs_itor, ++count)
+  {
+    BOOST_CHECK_EQUAL ( *str_itor, *s_itor );
+    BOOST_CHECK_EQUAL ( *s_itor, *cs_itor );
+    BOOST_CHECK_EQUAL ( *cs_itor, *str_itor );
+  }
+  BOOST_CHECK_EQUAL( seq_string.size(), count );
+  BOOST_CHECK_EQUAL( s.size(), count );
+  BOOST_CHECK_EQUAL( cs.size(), count );
+}