//! Do simple operations work correctly?
BOOST_AUTO_TEST_CASE( sequence_filter )
{
- Sequence s1("AATTGGCC");
- BOOST_CHECK_EQUAL(s1.get_seq(), "AATTGGCC");
+ const char *core_seq = "AATTGGCC";
+ Sequence s1(core_seq);
+ BOOST_CHECK_EQUAL(s1, core_seq);
Sequence s2("aattggcc");
- BOOST_CHECK_EQUAL(s2.get_seq(), "AATTGGCC");
+ BOOST_CHECK_EQUAL(s2, "AATTGGCC");
BOOST_CHECK_EQUAL(s2.rev_comp(), "GGCCAATT");
- BOOST_CHECK_EQUAL(s2.size(), s2.get_seq().size());
- BOOST_CHECK_EQUAL(s2.c_seq(), s2.get_seq().c_str());
+ BOOST_CHECK_EQUAL(s2.size(), s2.size());
+ BOOST_CHECK_EQUAL(s2.c_str(), core_seq);
Sequence s3("asdfg");
- BOOST_CHECK_EQUAL(s3.get_seq(), "ANNNG");
+ BOOST_CHECK_EQUAL(s3, "ANNNG");
BOOST_CHECK_EQUAL(s3.subseq(0,2), "AN");
s3.set_filtered_sequence("AAGGCCTT", 0, 2);
- BOOST_CHECK_EQUAL(s3.get_seq(), "AA");
+ BOOST_CHECK_EQUAL(s3, "AA");
s3.set_filtered_sequence("AAGGCCTT", 2, 2);
- BOOST_CHECK_EQUAL( s3.get_seq(), "GG");
+ BOOST_CHECK_EQUAL( s3, "GG");
s3.set_filtered_sequence("AAGGCCTT", 4);
- BOOST_CHECK_EQUAL( s3.get_seq(), "CCTT");
+ BOOST_CHECK_EQUAL( s3, "CCTT");
s3.clear();
- BOOST_CHECK_EQUAL(s3.get_seq(), "");
+ BOOST_CHECK_EQUAL(s3, "");
- s3.set_seq("AAGGFF");
- BOOST_CHECK_EQUAL(s3.get_seq(), "AAGGNN");
+ s3 = "AAGGFF";
+ BOOST_CHECK_EQUAL(s3, "AAGGNN");
}
//! Can we load data from a file
BOOST_CHECK_EQUAL(seq.annotations().size(), count);
}
+BOOST_AUTO_TEST_CASE( subseq_annotation_test )
+{
+ string s("CCGCCCCCCATCATCGCGGCTCTCCGAGAGTCCCGCGCCCCACTCCCGGC"
+ "ACCCACCTGACCGCGGGCGGCTCCGGCCCCGCTTCGCCCCACTGCGATCA"
+ "GTCGCGTCCCGCAGGCCAGGCACGCCCCGCCGCTCCCGCTGCGCCGGGCG"
+ "TCTGGGACCTCGGGCGGCTCCTCCGAGGGGCGGGGCAGCCGGGAGCCACG"
+ "CCCCCGCAGGTGAGCCGGCCACGCCCACCGCCCGTGGGAAGTTCAGCCTC"
+ "GGGGCTCCAGCCCCGCGGGAATGGCAGAACTTCGCACGCGGAACTGGTAA"
+ "CCTCCAGGACACCTCGAATCAGGGTGATTGTAGCGCAGGGGCCTTGGCCA"
+ "AGCTAAAACTTTGGAAACTTTAGATCCCAGACAGGTGGCTTTCTTGCAGT");
+ Sequence seq(s);
+
+
+ seq.add_annotation(annot(0, 10, "0-10", "0-10"));
+ seq.add_annotation(annot(10, 20, "10-20", "10-20"));
+ seq.add_annotation(annot(0, 20, "0-20", "0-20"));
+ seq.add_annotation(annot(8, 12, "8-12", "8-12"));
+ seq.add_annotation(annot(100, 5000, "100-5000", "100-5000"));
+
+ Sequence subseq = seq.subseq(5, 10);
+ const list<annot> annots = subseq.annotations();
+ // generate some ground truth
+ list<annot> correct;
+ correct.push_back(annot(0, 5, "0-10", "0-10"));
+ correct.push_back(annot(5,10, "10-20", "10-20"));
+ correct.push_back(annot(0,10, "0-20", "0-20"));
+ correct.push_back(annot(3, 7, "8-12", "8-12"));
+ BOOST_REQUIRE_EQUAL( annots.size(), correct.size() );
+
+ list<annot>::iterator correct_i = correct.begin();
+ list<annot>::const_iterator annot_i = annots.begin();
+ for(; annot_i != annots.end(); ++annot_i, ++correct_i)
+ {
+ BOOST_CHECK( *annot_i == *correct_i );
+ }
+}
+
+BOOST_AUTO_TEST_CASE( out_operator )
+{
+ string s("AAGGCCTT");
+ Sequence seq(s);
+
+ ostringstream buf;
+ buf << s;
+ BOOST_CHECK_EQUAL( s, buf.str() );
+}
+