center on path
[mussa.git] / alg / test / test_glseqbrowser.cpp
index ba4fcae70b9ccbd29d266b45fe89d17a008f44ea..3641d086c842e391b8403f2e2b64d326836f7738 100644 (file)
@@ -45,3 +45,42 @@ BOOST_AUTO_TEST_CASE ( gltracks_connect )
   BOOST_CHECK_EQUAL( gt.path_segments.size(), 0 );
 }
 
+BOOST_AUTO_TEST_CASE( glseqbrowser_center )
+{
+  string s0("AAGGCCTT");
+  string s1("TTGGCCAA");
+  string s2("GATTACAA");
+  Sequence seq0(s0);
+  Sequence seq1(s1);
+  Sequence seq2(s2);
+  AnnotationColors cm;
+  GlSequence glseq0(seq0, cm);
+  GlSequence glseq1(seq1, cm);
+  GlSequence glseq2(seq2, cm);
+
+  GlSeqBrowser gt;
+  gt.push_sequence(glseq0);
+  gt.push_sequence(glseq1);
+  gt.push_sequence(glseq2);
+
+  vector<int> path;
+  path += 0,3,7; 
+
+  BOOST_CHECK_EQUAL( gt.left(), -gt.border() );
+  BOOST_CHECK_EQUAL( gt.right(), s0.size() + gt.border() );
+
+  gt.centerOnPath(path);
+
+  // I didn't bother to compute how the path should shift things
+  // by the magic number 3, i just ran the test and saw how it failed
+  // and hard coded this in.
+  BOOST_CHECK_EQUAL( gt.left(), -3-gt.border() );
+  BOOST_CHECK_EQUAL( gt.right(), 3 + s0.size() + gt.border() );
+
+  // aparently we end up with a different glsequence in the seqbrowser
+  BOOST_CHECK( glseq1.x() != gt.sequences()[1].x() );
+
+  BOOST_CHECK_EQUAL( gt.sequences()[0].x(), gt.viewportCenter()-path[0] );
+  BOOST_CHECK_EQUAL( gt.sequences()[1].x(), gt.viewportCenter()-path[1] );
+  BOOST_CHECK_EQUAL( gt.sequences()[2].x(), gt.viewportCenter()-path[2] );
+}