create class to hold drawing information
[mussa.git] / alg / test / test_drawable.cpp
diff --git a/alg/test/test_drawable.cpp b/alg/test/test_drawable.cpp
new file mode 100644 (file)
index 0000000..e3afd70
--- /dev/null
@@ -0,0 +1,67 @@
+#define BOOST_AUTO_TEST_MAIN
+#include <boost/test/auto_unit_test.hpp>
+
+#include <boost/shared_ptr.hpp>
+
+#include "drawable.hpp"
+
+BOOST_AUTO_TEST_CASE( drawable_empty_constructors )
+{
+  Drawable a;
+  BOOST_CHECK_EQUAL(a.x(), 0);
+  BOOST_CHECK_EQUAL(a.y(), 0);
+  BOOST_CHECK_EQUAL(a.z(), 0);
+  BOOST_CHECK_EQUAL(a.height(), 0);
+  
+  DrawableRef asp(new Drawable);
+  BOOST_CHECK_EQUAL(asp->x(), 0);
+  BOOST_CHECK_EQUAL(asp->y(), 0);
+  BOOST_CHECK_EQUAL(asp->z(), 0);
+  BOOST_CHECK_EQUAL(asp->height(), 0);
+}
+
+BOOST_AUTO_TEST_CASE( drawable_filled_constructors )
+{
+  ColorRef white(new Color(1.0, 1.0, 1.0));
+   
+  Drawable a(1.0,2.0,3.0,4.0, white);
+  BOOST_CHECK_EQUAL(a.x(), 1.0);
+  BOOST_CHECK_EQUAL(a.y(), 2.0);
+  BOOST_CHECK_EQUAL(a.z(), 3.0);
+  BOOST_CHECK_EQUAL(a.height(), 4.0);
+  BOOST_CHECK_EQUAL(*(a.color()), *white);
+  
+  DrawableRef asp(new Drawable(1.0,2.0,3.0,4.0, white));
+  BOOST_CHECK_EQUAL(asp->x(), 1.0);
+  BOOST_CHECK_EQUAL(asp->y(), 2.0);
+  BOOST_CHECK_EQUAL(asp->z(), 3.0);
+  BOOST_CHECK_EQUAL(asp->height(), 4.0);
+  BOOST_CHECK_EQUAL(*(asp->color()), *white);
+}
+
+BOOST_AUTO_TEST_CASE( drawable_copyref_constructor )
+{
+  ColorRef white(new Color(1.0, 1.0, 1.0));
+  ColorRef grey(new Color(0.5, 0.5, 0.5));
+  ColorRef black(new Color(0.0, 0.0, 0.0));
+   
+  DrawableRef asp(new Drawable(1.0,1.0,1.0,1.0, white));
+  DrawableRef bsp(asp);
+  DrawableRef csp(new Drawable(asp));
+  
+  bsp->setX(2.0);
+  bsp->setColor(grey);
+  BOOST_CHECK_EQUAL(asp->x(), bsp->x());
+  BOOST_CHECK_EQUAL(asp->x(), 2.0);
+  BOOST_CHECK_EQUAL(*asp->color(), grey);
+
+  // csp shouldn't have changed
+  BOOST_CHECK_EQUAL(csp->x(), 1.0);
+  BOOST_CHECK_EQUAL(*csp->color(), white);
+  
+  // changes to csp should only affect csp
+  csp->setColor(black);
+  BOOST_CHECK_EQUAL(*asp->color(), *grey);
+  BOOST_CHECK_EQUAL(*bsp->color(), *grey);
+  BOOST_CHECK_EQUAL(*csp->color(), *black); 
+}
\ No newline at end of file