Update mussa to build on ubuntu 10.04 with qt 4.6.2 +boost 1.40.0.1
[mussa.git] / alg / test / test_color.cpp
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>
5
6 #include <string>
7 #include <sstream>
8
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>
13
14 #include "alg/color.hpp"
15
16 #include <iostream>
17
18 using namespace std;
19
20 BOOST_AUTO_TEST_CASE ( color )
21 {
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;
28   Color c1;
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 );
33
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 );
39
40   Color c3(c2);
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 );
46
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 );
52 }
53
54 /*
55 BOOST_AUTO_TEST_CASE( serialize_color )
56 {
57   const Color color1(1.0, 1.0, 1.0, 1.0);
58
59   std::ostringstream oss;
60   // allocate/deallocate serialization components
61   {
62     boost::archive::text_oarchive oarchive(oss);
63     oarchive << color1;
64   }
65   Color color2;
66   {
67     std::istringstream iss(oss.str());
68     boost::archive::text_iarchive iarchive(iss);
69     iarchive >> color2;
70   }
71   BOOST_CHECK_EQUAL(color1, color2);
72 }  
73
74 BOOST_AUTO_TEST_CASE( serialize_xml_color )
75 {
76   const Color color1(0.0, 0.5, 0.0, 0.0);
77
78   std::ostringstream oss;
79   // allocate/deallocate serialization components
80   {
81     boost::archive::xml_oarchive oarchive(oss);
82     oarchive << boost::serialization::make_nvp("color", color1);
83   }
84   //std::cout << "XML Color: " << oss.str() << std::endl;
85   Color color2;
86   {
87     std::istringstream iss(oss.str());
88     boost::archive::xml_iarchive iarchive(iss);
89     iarchive >> boost::serialization::make_nvp("color", color2);
90   }
91   BOOST_CHECK_EQUAL(color1, color2);
92 }
93 */