1 #define BOOST_TEST_DYN_LINK
2 #define BOOST_TEST_MODULE test_drawable
3 #include <boost/test/unit_test.hpp>
5 #include <boost/shared_ptr.hpp>
7 #include "drawable.hpp"
8 #include "seq_span.hpp"
10 BOOST_AUTO_TEST_CASE( drawable_empty_constructors )
13 BOOST_CHECK_EQUAL(a.x(), 0);
14 BOOST_CHECK_EQUAL(a.y(), 0);
15 BOOST_CHECK_EQUAL(a.z(), 0);
16 BOOST_CHECK_EQUAL(a.height(), 0);
18 DrawableRef asp(new Drawable);
19 BOOST_CHECK_EQUAL(asp->x(), 0);
20 BOOST_CHECK_EQUAL(asp->y(), 0);
21 BOOST_CHECK_EQUAL(asp->z(), 0);
22 BOOST_CHECK_EQUAL(asp->height(), 0);
25 BOOST_AUTO_TEST_CASE( drawable_filled_constructors )
27 ColorRef white(new Color(1.0, 1.0, 1.0));
29 Drawable a(1.0,2.0,3.0,4.0, white);
30 BOOST_CHECK_EQUAL(a.x(), 1.0);
31 BOOST_CHECK_EQUAL(a.y(), 2.0);
32 BOOST_CHECK_EQUAL(a.z(), 3.0);
33 BOOST_CHECK_EQUAL(a.height(), 4.0);
34 BOOST_CHECK_EQUAL(*(a.color()), *white);
36 DrawableRef asp(new Drawable(1.0,2.0,3.0,4.0, white));
37 BOOST_CHECK_EQUAL(asp->x(), 1.0);
38 BOOST_CHECK_EQUAL(asp->y(), 2.0);
39 BOOST_CHECK_EQUAL(asp->z(), 3.0);
40 BOOST_CHECK_EQUAL(asp->height(), 4.0);
41 BOOST_CHECK_EQUAL(*(asp->color()), *white);
44 BOOST_AUTO_TEST_CASE( drawable_copyref_constructor )
46 ColorRef white(new Color(1.0, 1.0, 1.0));
47 ColorRef grey(new Color(0.5, 0.5, 0.5));
48 ColorRef black(new Color(0.0, 0.0, 0.0));
50 DrawableRef asp(new Drawable(1.0,1.0,1.0,1.0, white));
52 DrawableRef csp(new Drawable(asp));
56 BOOST_CHECK_EQUAL(asp->x(), bsp->x());
57 BOOST_CHECK_EQUAL(asp->x(), 2.0);
58 BOOST_CHECK_EQUAL(*asp->color(), grey);
60 // csp shouldn't have changed
61 BOOST_CHECK_EQUAL(csp->x(), 1.0);
62 BOOST_CHECK_EQUAL(*csp->color(), white);
64 // changes to csp should only affect csp
66 BOOST_CHECK_EQUAL(*asp->color(), *grey);
67 BOOST_CHECK_EQUAL(*bsp->color(), *grey);
68 BOOST_CHECK_EQUAL(*csp->color(), *black);
71 void test_draw_func_null(SeqSpanRef r, float, float)
75 BOOST_AUTO_TEST_CASE( drawable_null_draw_func )
77 ColorRef white(new Color(1.0, 1.0, 1.0));
78 DrawableRef asp(new Drawable(1.0,1.0,1.0,1.0, white, test_draw_func_null));
80 BOOST_CHECK_EQUAL(asp->drawFunction(), test_draw_func_null);
83 BOOST_CHECK_EQUAL(bsp->drawFunction(), test_draw_func_null);
86 void test_draw_func_find_drawable(SeqSpanRef ref, float l, float r)
88 BOOST_REQUIRE(ref->drawable());
89 BOOST_REQUIRE_EQUAL(ref->drawable()->drawFunction(), test_draw_func_find_drawable);
92 BOOST_AUTO_TEST_CASE( test_drawable_find_drawable )
94 ColorRef white(new Color(1.0, 1.0, 1.0));
95 DrawableRef drawsp(new Drawable(1.0,1.0,1.0,1.0, white, test_draw_func_find_drawable));
96 SeqSpanRef ssp(new SeqSpan("AAAA"));
97 ssp->setDrawable(drawsp);
99 BOOST_CHECK_EQUAL(drawsp->drawFunction(), test_draw_func_find_drawable);
100 ssp->drawable()->drawFunction();