center on path
[mussa.git] / alg / test / test_glsequence.cpp
index 81443a5a1e25c9ff2017d716daf8e736f2e08887..9c7853043f38ff33d70614a776ac47ea952e8eff 100644 (file)
@@ -106,8 +106,53 @@ BOOST_AUTO_TEST_CASE( glsequence_leftright_base )
 
   BOOST_CHECK_EQUAL( glseq.leftbase( -50.0 ), 0 );
   BOOST_CHECK_EQUAL( glseq.leftbase(   0.5 ), 1 );
+  BOOST_CHECK_EQUAL( glseq.leftbase(   5.0 ), 5 );
   BOOST_CHECK_EQUAL( glseq.leftbase( 500.0 ), seq_string.size() );
+  BOOST_CHECK_EQUAL( glseq.rightbase(    0.0 ), 0 );
   BOOST_CHECK_EQUAL( glseq.rightbase( 1000.0 ), seq_string.size() );
   BOOST_CHECK_EQUAL( glseq.rightbase( seq_string.size()-0.5),
                      seq_string.size()-1);
 }
+
+// do our left and right most base computations still work if
+// we move the sequence around?
+BOOST_AUTO_TEST_CASE( glsequence_movex )
+{
+  AnnotationColors cm;
+  std::string seq_string = "AAGGCCTTAAGGCCTT";
+  Sequence seq(seq_string);
+  GlSequence glseq(seq, cm);
+
+  glseq.setX(-5);
+  BOOST_CHECK_EQUAL( glseq.leftbase(-100.0), 0 );
+  BOOST_CHECK_EQUAL( glseq.leftbase(   0.0), 5 );
+  BOOST_CHECK_EQUAL( glseq.leftbase(  -2.0), 3 );
+  BOOST_CHECK_EQUAL( glseq.leftbase( 100.0), seq_string.size() );
+  BOOST_CHECK_EQUAL( glseq.rightbase( 1000.0 ), seq_string.size() );
+  BOOST_CHECK_EQUAL( glseq.rightbase(    8.0 ), 8+5 );
+  BOOST_CHECK_EQUAL( glseq.rightbase(   -7.0 ), 0 );
+}
+
+// Check iterators
+BOOST_AUTO_TEST_CASE( glsequence_check_iterators )
+{
+  AnnotationColors cm;
+  std::string seq_string = "AAGGCCTTAAGGCCTT";
+  Sequence seq(seq_string);
+  GlSequence glseq(seq, cm);
+
+  Sequence::const_iterator seq_begin_i;
+  Sequence::const_iterator seq_end_i;
+
+  BOOST_CHECK(glseq.sequence_begin(5, -5) == seq.end());
+  BOOST_CHECK(glseq.sequence_begin(0, 20) == seq.begin());
+  BOOST_CHECK(glseq.sequence_begin(10,20) == seq.begin()+10);
+
+  BOOST_CHECK(glseq.sequence_end(5, -5) == seq.end());
+  BOOST_CHECK(glseq.sequence_end(0, 20) == seq.end());
+  BOOST_CHECK(glseq.sequence_end(0, 10) == seq.begin()+10);
+
+  glseq.setX(-5);
+  BOOST_CHECK(glseq.sequence_begin(0, 10) == seq.begin()+5);
+  BOOST_CHECK(glseq.sequence_end(0, 15) == seq.end());
+}