#include <list>
#include <iostream>
+#include <sstream>
#include "alg/sequence.hpp"
#include "mussa_exceptions.hpp"
"5' flank");
}
+BOOST_AUTO_TEST_CASE( annotation_load )
+{
+ string annot_data = "human\n"
+ "0 10 name type\n"
+ "10 20 name\n"
+ "20 30\n"
+ "15 20 backward\n";
+ string s('A',100);
+ s += "GCTGCT";
+ Sequence seq(s);
+
+ //istringstream annot_stream(annot_data);
+ seq.parse_annot(annot_data, 0, 0);
+ typedef std::list<annot> annot_list_t;
+ annot_list_t annots = seq.annotations();
+ for(annot_list_t::iterator annot_i = annots.begin();
+ annot_i != annots.end();
+ ++annot_i)
+ {
+ std::cout << "start " << annot_i->start << endl;
+ }
+}
+
// ticket:83 when you try to load a sequence from a file that doesn't
// have fasta headers it crashes.
BOOST_AUTO_TEST_CASE( sequence_past_end )
BOOST_AUTO_TEST_CASE( annotate_from_sequence )
{
- Sequence s("CCGCCCCCCATCATCGCGGCTCTCCGAGAGTCCCGCGCCCCACTCCCGGC"
- "ACCCACCTGACCGCGGGCGGCTCCGGCCCCGCTTCGCCCCACTGCGATCA"
- "GTCGCGTCCCGCAGGCCAGGCACGCCCCGCCGCTCCCGCTGCGCCGGGCG"
- "TCTGGGACCTCGGGCGGCTCCTCCGAGGGGCGGGGCAGCCGGGAGCCACG"
- "CCCCCGCAGGTGAGCCGGCCACGCCCACCGCCCGTGGGAAGTTCAGCCTC"
- "GGGGCTCCAGCCCCGCGGGAATGGCAGAACTTCGCACGCGGAACTGGTAA"
- "CCTCCAGGACACCTCGAATCAGGGTGATTGTAGCGCAGGGGCCTTGGCCA"
- "AGCTAAAACTTTGGAAACTTTAGATCCCAGACAGGTGGCTTTCTTGCAGT");
+ string s("CCGCCCCCCATCATCGCGGCTCTCCGAGAGTCCCGCGCCCCACTCCCGGC"
+ "ACCCACCTGACCGCGGGCGGCTCCGGCCCCGCTTCGCCCCACTGCGATCA"
+ "GTCGCGTCCCGCAGGCCAGGCACGCCCCGCCGCTCCCGCTGCGCCGGGCG"
+ "TCTGGGACCTCGGGCGGCTCCTCCGAGGGGCGGGGCAGCCGGGAGCCACG"
+ "CCCCCGCAGGTGAGCCGGCCACGCCCACCGCCCGTGGGAAGTTCAGCCTC"
+ "GGGGCTCCAGCCCCGCGGGAATGGCAGAACTTCGCACGCGGAACTGGTAA"
+ "CCTCCAGGACACCTCGAATCAGGGTGATTGTAGCGCAGGGGCCTTGGCCA"
+ "AGCTAAAACTTTGGAAACTTTAGATCCCAGACAGGTGGCTTTCTTGCAGT");
+ string gc("GCCCCC");
+ string gga("GGACACCTC");
+ Sequence seq(s);
std::list<Sequence> query_list;
- query_list.push_back(Sequence("GCCCCC"));
- query_list.push_back(Sequence("GGACACCTC"));
-
- BOOST_CHECK_EQUAL( s.annotations().size(), 0 );
- s.find_sequences(query_list.begin(), query_list.end());
- BOOST_CHECK_EQUAL( s.annotations().size(), 4 );
+ std::list<string> string_list;
+ query_list.push_back(Sequence(gc));
+ string_list.push_back(gc);
+ query_list.push_back(Sequence(gga));
+ string_list.push_back(gga);
+
+ BOOST_CHECK_EQUAL( seq.annotations().size(), 0 );
+ seq.find_sequences(query_list.begin(), query_list.end());
+
+ int count = 0;
+ for(list<string>::iterator string_i = string_list.begin();
+ string_i != string_list.end();
+ ++string_i)
+ {
+ string::size_type pos=0;
+ while(pos != string::npos) {
+ pos = s.find(*string_i, pos);
+ if (pos != string::npos) {
+ ++count;
+ ++pos;
+ }
+ }
+ }
+ BOOST_CHECK_EQUAL(seq.annotations().size(), count);
}