create class to hold drawing information
[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
8 BOOST_AUTO_TEST_CASE( drawable_empty_constructors )
9 {
10   Drawable a;
11   BOOST_CHECK_EQUAL(a.x(), 0);
12   BOOST_CHECK_EQUAL(a.y(), 0);
13   BOOST_CHECK_EQUAL(a.z(), 0);
14   BOOST_CHECK_EQUAL(a.height(), 0);
15   
16   DrawableRef asp(new Drawable);
17   BOOST_CHECK_EQUAL(asp->x(), 0);
18   BOOST_CHECK_EQUAL(asp->y(), 0);
19   BOOST_CHECK_EQUAL(asp->z(), 0);
20   BOOST_CHECK_EQUAL(asp->height(), 0);
21 }
22
23 BOOST_AUTO_TEST_CASE( drawable_filled_constructors )
24 {
25   ColorRef white(new Color(1.0, 1.0, 1.0));
26    
27   Drawable a(1.0,2.0,3.0,4.0, white);
28   BOOST_CHECK_EQUAL(a.x(), 1.0);
29   BOOST_CHECK_EQUAL(a.y(), 2.0);
30   BOOST_CHECK_EQUAL(a.z(), 3.0);
31   BOOST_CHECK_EQUAL(a.height(), 4.0);
32   BOOST_CHECK_EQUAL(*(a.color()), *white);
33   
34   DrawableRef asp(new Drawable(1.0,2.0,3.0,4.0, white));
35   BOOST_CHECK_EQUAL(asp->x(), 1.0);
36   BOOST_CHECK_EQUAL(asp->y(), 2.0);
37   BOOST_CHECK_EQUAL(asp->z(), 3.0);
38   BOOST_CHECK_EQUAL(asp->height(), 4.0);
39   BOOST_CHECK_EQUAL(*(asp->color()), *white);
40 }
41
42 BOOST_AUTO_TEST_CASE( drawable_copyref_constructor )
43 {
44   ColorRef white(new Color(1.0, 1.0, 1.0));
45   ColorRef grey(new Color(0.5, 0.5, 0.5));
46   ColorRef black(new Color(0.0, 0.0, 0.0));
47    
48   DrawableRef asp(new Drawable(1.0,1.0,1.0,1.0, white));
49   DrawableRef bsp(asp);
50   DrawableRef csp(new Drawable(asp));
51   
52   bsp->setX(2.0);
53   bsp->setColor(grey);
54   BOOST_CHECK_EQUAL(asp->x(), bsp->x());
55   BOOST_CHECK_EQUAL(asp->x(), 2.0);
56   BOOST_CHECK_EQUAL(*asp->color(), grey);
57
58   // csp shouldn't have changed
59   BOOST_CHECK_EQUAL(csp->x(), 1.0);
60   BOOST_CHECK_EQUAL(*csp->color(), white);
61   
62   // changes to csp should only affect csp
63   csp->setColor(black);
64   BOOST_CHECK_EQUAL(*asp->color(), *grey);
65   BOOST_CHECK_EQUAL(*bsp->color(), *grey);
66   BOOST_CHECK_EQUAL(*csp->color(), *black); 
67 }