8319984a9b57ec42f7af9c85b401258574bd8156
[mussa.git] / alg / test / test_drawable.cpp
1 #define BOOST_AUTO_TEST_MAIN
2 #include <boost/test/auto_unit_test.hpp>
3
4 #include <boost/shared_ptr.hpp>
5
6 #include "drawable.hpp"
7 #include "seq_span.hpp"
8
9 BOOST_AUTO_TEST_CASE( drawable_empty_constructors )
10 {
11   Drawable a;
12   BOOST_CHECK_EQUAL(a.x(), 0);
13   BOOST_CHECK_EQUAL(a.y(), 0);
14   BOOST_CHECK_EQUAL(a.z(), 0);
15   BOOST_CHECK_EQUAL(a.height(), 0);
16   
17   DrawableRef asp(new Drawable);
18   BOOST_CHECK_EQUAL(asp->x(), 0);
19   BOOST_CHECK_EQUAL(asp->y(), 0);
20   BOOST_CHECK_EQUAL(asp->z(), 0);
21   BOOST_CHECK_EQUAL(asp->height(), 0);
22 }
23
24 BOOST_AUTO_TEST_CASE( drawable_filled_constructors )
25 {
26   ColorRef white(new Color(1.0, 1.0, 1.0));
27    
28   Drawable a(1.0,2.0,3.0,4.0, white);
29   BOOST_CHECK_EQUAL(a.x(), 1.0);
30   BOOST_CHECK_EQUAL(a.y(), 2.0);
31   BOOST_CHECK_EQUAL(a.z(), 3.0);
32   BOOST_CHECK_EQUAL(a.height(), 4.0);
33   BOOST_CHECK_EQUAL(*(a.color()), *white);
34   
35   DrawableRef asp(new Drawable(1.0,2.0,3.0,4.0, white));
36   BOOST_CHECK_EQUAL(asp->x(), 1.0);
37   BOOST_CHECK_EQUAL(asp->y(), 2.0);
38   BOOST_CHECK_EQUAL(asp->z(), 3.0);
39   BOOST_CHECK_EQUAL(asp->height(), 4.0);
40   BOOST_CHECK_EQUAL(*(asp->color()), *white);
41 }
42
43 BOOST_AUTO_TEST_CASE( drawable_copyref_constructor )
44 {
45   ColorRef white(new Color(1.0, 1.0, 1.0));
46   ColorRef grey(new Color(0.5, 0.5, 0.5));
47   ColorRef black(new Color(0.0, 0.0, 0.0));
48    
49   DrawableRef asp(new Drawable(1.0,1.0,1.0,1.0, white));
50   DrawableRef bsp(asp);
51   DrawableRef csp(new Drawable(asp));
52   
53   bsp->setX(2.0);
54   bsp->setColor(grey);
55   BOOST_CHECK_EQUAL(asp->x(), bsp->x());
56   BOOST_CHECK_EQUAL(asp->x(), 2.0);
57   BOOST_CHECK_EQUAL(*asp->color(), grey);
58
59   // csp shouldn't have changed
60   BOOST_CHECK_EQUAL(csp->x(), 1.0);
61   BOOST_CHECK_EQUAL(*csp->color(), white);
62   
63   // changes to csp should only affect csp
64   csp->setColor(black);
65   BOOST_CHECK_EQUAL(*asp->color(), *grey);
66   BOOST_CHECK_EQUAL(*bsp->color(), *grey);
67   BOOST_CHECK_EQUAL(*csp->color(), *black); 
68 }
69
70 void test_draw_func_null(SeqSpanRef r, float, float)
71 {
72 }
73
74 BOOST_AUTO_TEST_CASE( drawable_null_draw_func )
75 {
76   ColorRef white(new Color(1.0, 1.0, 1.0));  
77   DrawableRef asp(new Drawable(1.0,1.0,1.0,1.0, white, test_draw_func_null));
78   
79   BOOST_CHECK_EQUAL(asp->drawFunction(), test_draw_func_null);
80   
81   DrawableRef bsp(asp);
82   BOOST_CHECK_EQUAL(bsp->drawFunction(), test_draw_func_null);
83 }
84
85 void test_draw_func_find_drawable(SeqSpanRef ref, float l, float r)
86 {
87   BOOST_REQUIRE(ref->drawable());
88   BOOST_REQUIRE_EQUAL(ref->drawable()->drawFunction(), test_draw_func_find_drawable);
89 }
90
91 BOOST_AUTO_TEST_CASE( test_drawable_find_drawable )
92 {
93   ColorRef white(new Color(1.0, 1.0, 1.0));  
94   DrawableRef drawsp(new Drawable(1.0,1.0,1.0,1.0, white, test_draw_func_find_drawable));
95   SeqSpanRef ssp(new SeqSpan("AAAA"));
96   ssp->setDrawable(drawsp);
97      
98   BOOST_CHECK_EQUAL(drawsp->drawFunction(), test_draw_func_find_drawable);
99   ssp->drawable()->drawFunction();
100 }