report our "start/stop" location on a subsequence
[mussa.git] / alg / test / test_sequence.cpp
index c6a4ca6346afdefec6eedf926b22e31c00dc4e2e..e8b35ad823d4e3ca96542db6ff0f1a2cce65bcd2 100644 (file)
@@ -93,6 +93,36 @@ BOOST_AUTO_TEST_CASE( subseq_names )
   BOOST_CHECK_EQUAL(s2.get_fasta_header(), s1.get_fasta_header());
 }
 
+BOOST_AUTO_TEST_CASE( sequence_start_stop )
+{
+  Sequence s1;
+  BOOST_CHECK_EQUAL( s1.start(), 0 );
+  BOOST_CHECK_EQUAL( s1.stop(), 0 );
+
+  std::string seq_string("AAGGCCTT");
+  Sequence s2(seq_string);
+  BOOST_CHECK_EQUAL( s2.start(), 0 );
+  BOOST_CHECK_EQUAL( s2.stop(), seq_string.size() );
+
+  std::string s3seq_string = seq_string.substr(2,3);
+  Sequence s3 = s2.subseq(2,3);
+  BOOST_CHECK_EQUAL( s3.start(), 2);
+  BOOST_CHECK_EQUAL( s3.stop(), 2+3);
+  BOOST_CHECK_EQUAL( s3.size(), 3);
+  BOOST_CHECK_EQUAL( s3, s3seq_string);
+  
+  // FIXME: updated for ticket:129
+  // once I have a solution for ticket:129 the commented
+  // out version should work.
+  //std::string s4seq_string = s3seq_string.substr(1,1);
+  std::string s4seq_string = seq_string.substr(1,1);
+  Sequence s4 = s2.subseq(1,1);
+  BOOST_CHECK_EQUAL( s4.start(), 1 );
+  BOOST_CHECK_EQUAL( s4.stop(), 1+1);
+  BOOST_CHECK_EQUAL( s4.size(), 1);
+  BOOST_CHECK_EQUAL( s4, s4seq_string);
+}
+
 //! Can we load data from a file
 BOOST_AUTO_TEST_CASE( sequence_load )
 {