add draw function pointer to drawable
[mussa.git] / alg / test / test_drawable.cpp
index e3afd703ed224e3e98227d5fddaa180e70da5b72..63d75efdd8be802dd4aa018886b69496251b750c 100644 (file)
@@ -4,6 +4,7 @@
 #include <boost/shared_ptr.hpp>
 
 #include "drawable.hpp"
+#include "seq_span.hpp"
 
 BOOST_AUTO_TEST_CASE( drawable_empty_constructors )
 {
@@ -64,4 +65,36 @@ BOOST_AUTO_TEST_CASE( drawable_copyref_constructor )
   BOOST_CHECK_EQUAL(*asp->color(), *grey);
   BOOST_CHECK_EQUAL(*bsp->color(), *grey);
   BOOST_CHECK_EQUAL(*csp->color(), *black); 
+}
+
+void test_draw_func_null(SeqSpanRef r, void *p)
+{
+}
+
+BOOST_AUTO_TEST_CASE( drawable_null_draw_func )
+{
+  ColorRef white(new Color(1.0, 1.0, 1.0));  
+  DrawableRef asp(new Drawable(1.0,1.0,1.0,1.0, white, test_draw_func_null));
+  
+  BOOST_CHECK_EQUAL(asp->drawFunction(), test_draw_func_null);
+  
+  DrawableRef bsp(asp);
+  BOOST_CHECK_EQUAL(bsp->drawFunction(), test_draw_func_null);
+}
+
+void test_draw_func_find_drawable(SeqSpanRef r, void *p)
+{
+  BOOST_REQUIRE(r->drawable());
+  BOOST_REQUIRE_EQUAL(r->drawable()->drawFunction(), test_draw_func_find_drawable);
+}
+
+BOOST_AUTO_TEST_CASE( test_drawable_find_drawable )
+{
+  ColorRef white(new Color(1.0, 1.0, 1.0));  
+  DrawableRef drawsp(new Drawable(1.0,1.0,1.0,1.0, white, test_draw_func_find_drawable));
+  SeqSpanRef ssp(new SeqSpan("AAAA"));
+  ssp->setDrawable(drawsp);
+     
+  BOOST_CHECK_EQUAL(drawsp->drawFunction(), test_draw_func_find_drawable);
+  ssp->drawable()->drawFunction();
 }
\ No newline at end of file