size_type size() const;
//! alias for size (used by string)
size_type length() const;
+ //! start position relative to "base" sequence
+ size_type start() const;
+ //! one past the last position relative to "base" sequence
+ size_type stop() const;
//! return a subsequence, copying over any appropriate annotation
Sequence subseq(int start=0, int count = std::string::npos) const;
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 )
{