Update mussa to build on ubuntu 10.04 with qt 4.6.2 +boost 1.40.0.1
[mussa.git] / alg / test / test_glsequence.cpp
index 0c00fb1271857e79c631ad0ab445600eaeacee85..29bbf34839a171bfeeb5bd9312d0681ec210297a 100644 (file)
@@ -1,5 +1,6 @@
-#define BOOST_AUTO_TEST_MAIN
-#include <boost/test/auto_unit_test.hpp>
+#define BOOST_TEST_DYN_LINK
+#define BOOST_TEST_MODULE test_glsequence
+#include <boost/test/unit_test.hpp>
 #include <boost/test/floating_point_comparison.hpp>
 #include <boost/shared_ptr.hpp>
 
@@ -74,23 +75,50 @@ BOOST_AUTO_TEST_CASE( glsequence_color )
   BOOST_CHECK_EQUAL( *(s.color()), *c );
 }
 
-BOOST_AUTO_TEST_CASE( glsequence_find_null_sequence )
+BOOST_AUTO_TEST_CASE( glsequence_find_real_sequence )
 {
   boost::shared_ptr<AnnotationColors> cm(new AnnotationColors);
-  GlSequence s("AAAAAAAAAANNNNNANAN", cm);
+  GlSequence s("AAAAAAAAAANNNNNANNA", cm);
   //            0123456789012345678
-  s.add_annotations_for_undefined_sequence();
+  s.add_annotations_for_defined_sequence();
   
   BOOST_CHECK_EQUAL(s.annotations().size(), 3);
   std::vector<SeqSpanRef> annot(s.annotations().begin(), s.annotations().end());
-  BOOST_CHECK_EQUAL(annot[0]->start(), 10);
-  BOOST_CHECK_EQUAL(annot[0]->stop(), 15);
-  BOOST_CHECK_EQUAL(annot[1]->start(), 16);
+  BOOST_CHECK_EQUAL(annot[0]->start(), 0);
+  BOOST_CHECK_EQUAL(annot[0]->stop(), 10);
+  BOOST_CHECK_EQUAL(annot[1]->start(), 15);
   BOOST_CHECK_EQUAL(annot[1]->size(), 1);
   BOOST_CHECK_EQUAL(annot[2]->start(), 18);
   BOOST_CHECK_EQUAL(annot[2]->size(), 1);
 }
 
+void dummy_draw_func(SeqSpanRef ref, float l, float r)
+{
+}
+  
+BOOST_AUTO_TEST_CASE( glsequence_set_annotation_drawfunc_by_type )
+{
+  ColorRef default_color(new Color(1.0, 0.0, 0.0));
+  boost::shared_ptr<AnnotationColors> cm(new AnnotationColors);
+  GlSequence s("AAAAGGGGNNNNTTTTCCC", cm);
+  //            0123456789012345678
+  s.add_annotation("Aname", "value", 0, 4);
+  s.add_annotation("Gname", "value", 4, 4);
+  s.add_annotation("Tname", "gene", 12, 4);
+  s.update_annotation_draw_function("gene", dummy_draw_func, default_color);
+
+  BOOST_CHECK_EQUAL(s.annotations().size(), 3);
+  std::vector<SeqSpanRef> annot(s.annotations().begin(), s.annotations().end());
+  // the two not updated annotations shouldn't have a drawable attached to them yet 
+  BOOST_CHECK( not annot[0]->drawable());
+  BOOST_CHECK( not annot[1]->drawable());
+  // the annotation updated must be drawable
+  BOOST_REQUIRE(annot[2]->drawable());
+  // and it must have the right draw function
+  BOOST_CHECK_EQUAL(annot[2]->drawable()->drawFunction(), dummy_draw_func);
+  BOOST_CHECK_EQUAL(annot[2]->drawable()->color(), default_color);
+}
+
 BOOST_AUTO_TEST_CASE( glsequence_renderable )
 {
   boost::shared_ptr<AnnotationColors> cm(new AnnotationColors);
@@ -247,4 +275,4 @@ BOOST_AUTO_TEST_CASE ( shared_ptr_test )
   BOOST_CHECK_EQUAL(seq0.use_count(), 1);
   BOOST_CHECK_EQUAL(seq1.use_count(), 1);
 }
-*/
\ No newline at end of file
+*/