More robust eol handling for Sequence::load_fasta
[mussa.git] / alg / test / test_sequence.cpp
index eaf6e5c45bd77bfc61aab2f948caedade2096cc3..251648324db3a3dd14f93805e8652872ea37e97e 100644 (file)
@@ -21,6 +21,34 @@ BOOST_AUTO_TEST_CASE( sequence_load_exception )
   BOOST_CHECK_THROW( s.load_annot("alkejralk", 0, 0), mussa_load_error);
 }
 
+BOOST_AUTO_TEST_CASE( sequence_eol_conventions )
+{
+  string header(">Header");
+  string line1("AAAAGGGGCCCCTTTTT");
+  string line2("AAAAGGGGCCCCTTTTT");
+  int seq_len = line1.size() + line2.size();
+
+  stringstream cr;
+  cr << header << "\015" << line1 << "\015" << line2 << "\015";
+  Sequence seq_cr;
+  seq_cr.load_fasta(cr);
+
+  stringstream crlf;
+  crlf << header << "\015\012" << line1 << "\015\012" << line2 << "\015\012";
+  Sequence seq_crlf;
+  seq_crlf.load_fasta(crlf);
+
+  stringstream lf;
+  lf << header << "\012" << line1 << "\012" << line2 << "\012";
+  Sequence seq_lf;
+  seq_lf.load_fasta(lf);
+
+  BOOST_CHECK_EQUAL(seq_cr.size(),   seq_len);
+  BOOST_CHECK_EQUAL(seq_crlf.size(), seq_len);
+  BOOST_CHECK_EQUAL(seq_cr.size(),   seq_len);
+}
+
+
 //! Do simple operations work correctly?
 BOOST_AUTO_TEST_CASE( sequence_filter )
 {