1 #define BOOST_TEST_DYN_LINK
2 #define BOOST_TEST_MODULE test_color
3 #include <boost/test/unit_test.hpp>
4 #include <boost/test/floating_point_comparison.hpp>
9 #include <boost/archive/text_oarchive.hpp>
10 #include <boost/archive/text_iarchive.hpp>
11 #include <boost/archive/xml_oarchive.hpp>
12 #include <boost/archive/xml_iarchive.hpp>
14 #include "alg/color.hpp"
20 BOOST_AUTO_TEST_CASE ( color )
22 const float tolerance = 1e-6;
23 const float zero = 0.0;
24 const float dotone = 0.1;
25 const float dottwo = 0.2;
26 const float dotthree = 0.3;
27 const float dotfour = 0.4;
29 BOOST_CHECK_CLOSE (c1.r(), zero, tolerance );
30 BOOST_CHECK_CLOSE (c1.g(), zero, tolerance );
31 BOOST_CHECK_CLOSE (c1.b(), zero, tolerance );
32 BOOST_CHECK_CLOSE (c1.a(), zero, tolerance );
34 Color c2(dotone, dottwo, dotthree, dotfour);
35 BOOST_CHECK_CLOSE (c2.r(), dotone, tolerance );
36 BOOST_CHECK_CLOSE (c2.g(), dottwo, tolerance );
37 BOOST_CHECK_CLOSE (c2.b(), dotthree, tolerance );
38 BOOST_CHECK_CLOSE (c2.a(), dotfour, tolerance );
41 BOOST_CHECK_CLOSE (c3.r(), dotone, tolerance );
42 BOOST_CHECK_CLOSE (c3.g(), dottwo, tolerance );
43 BOOST_CHECK_CLOSE (c3.b(), dotthree, tolerance );
44 BOOST_CHECK_CLOSE (c3.a(), dotfour, tolerance );
45 BOOST_CHECK_EQUAL ( c2, c3 );
47 const float *colors = c3.get();
48 BOOST_CHECK_CLOSE (colors[Color::RedChannel ], dotone, tolerance );
49 BOOST_CHECK_CLOSE (colors[Color::GreenChannel ], dottwo, tolerance );
50 BOOST_CHECK_CLOSE (colors[Color::BlueChannel ], dotthree, tolerance );
51 BOOST_CHECK_CLOSE (colors[Color::AlphaChannel ], dotfour, tolerance );
55 BOOST_AUTO_TEST_CASE( serialize_color )
57 const Color color1(1.0, 1.0, 1.0, 1.0);
59 std::ostringstream oss;
60 // allocate/deallocate serialization components
62 boost::archive::text_oarchive oarchive(oss);
67 std::istringstream iss(oss.str());
68 boost::archive::text_iarchive iarchive(iss);
71 BOOST_CHECK_EQUAL(color1, color2);
74 BOOST_AUTO_TEST_CASE( serialize_xml_color )
76 const Color color1(0.0, 0.5, 0.0, 0.0);
78 std::ostringstream oss;
79 // allocate/deallocate serialization components
81 boost::archive::xml_oarchive oarchive(oss);
82 oarchive << boost::serialization::make_nvp("color", color1);
84 //std::cout << "XML Color: " << oss.str() << std::endl;
87 std::istringstream iss(oss.str());
88 boost::archive::xml_iarchive iarchive(iss);
89 iarchive >> boost::serialization::make_nvp("color", color2);
91 BOOST_CHECK_EQUAL(color1, color2);