1 #define BOOST_AUTO_TEST_MAIN
2 #include <boost/test/auto_unit_test.hpp>
4 #include <boost/shared_ptr.hpp>
6 #include "drawable.hpp"
7 #include "seq_span.hpp"
9 BOOST_AUTO_TEST_CASE( drawable_empty_constructors )
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);
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);
24 BOOST_AUTO_TEST_CASE( drawable_filled_constructors )
26 ColorRef white(new Color(1.0, 1.0, 1.0));
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);
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);
43 BOOST_AUTO_TEST_CASE( drawable_copyref_constructor )
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));
49 DrawableRef asp(new Drawable(1.0,1.0,1.0,1.0, white));
51 DrawableRef csp(new Drawable(asp));
55 BOOST_CHECK_EQUAL(asp->x(), bsp->x());
56 BOOST_CHECK_EQUAL(asp->x(), 2.0);
57 BOOST_CHECK_EQUAL(*asp->color(), grey);
59 // csp shouldn't have changed
60 BOOST_CHECK_EQUAL(csp->x(), 1.0);
61 BOOST_CHECK_EQUAL(*csp->color(), white);
63 // changes to csp should only affect csp
65 BOOST_CHECK_EQUAL(*asp->color(), *grey);
66 BOOST_CHECK_EQUAL(*bsp->color(), *grey);
67 BOOST_CHECK_EQUAL(*csp->color(), *black);
70 void test_draw_func_null(SeqSpanRef r, void *p)
74 BOOST_AUTO_TEST_CASE( drawable_null_draw_func )
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));
79 BOOST_CHECK_EQUAL(asp->drawFunction(), test_draw_func_null);
82 BOOST_CHECK_EQUAL(bsp->drawFunction(), test_draw_func_null);
85 void test_draw_func_find_drawable(SeqSpanRef r, void *p)
87 BOOST_REQUIRE(r->drawable());
88 BOOST_REQUIRE_EQUAL(r->drawable()->drawFunction(), test_draw_func_find_drawable);
91 BOOST_AUTO_TEST_CASE( test_drawable_find_drawable )
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);
98 BOOST_CHECK_EQUAL(drawsp->drawFunction(), test_draw_func_find_drawable);
99 ssp->drawable()->drawFunction();