7d2a885f8594e027c2aaf1e501f9f693f3a2afcd
[mussa.git] / alg / test / test_annotation_color.cpp
1 #define BOOST_AUTO_TEST_MAIN
2 #include <boost/test/auto_unit_test.hpp>
3
4 #include "alg/annotation_colors.hpp"
5 #include "alg/color.hpp"
6
7 BOOST_AUTO_TEST_CASE( simple_annot_colors )
8 {
9   Color black(0.0, 0.0, 0.0);
10   Color white(1.0, 1.0, 1.0);
11   Color red(1.0, 0.0, 0.0);
12
13   AnnotationColors ac;
14
15   ac.setColor(white);
16   BOOST_CHECK_EQUAL( ac.color(), white);
17
18   ac.appendTypeColor("bleem", black);
19   BOOST_CHECK_EQUAL( ac.typeColor("bleem"), black );
20   // FIXME: it'd be nice if something like this worked?
21   //BOOST_CHECK_RAISES( ac.typeColor("not found"), not_found );
22   ac.appendInstanceColor("bleem", "a", red);
23   BOOST_CHECK_EQUAL( ac.instanceColor("bleem", "a"), red);
24  
25   BOOST_CHECK_EQUAL( ac.lookup("bleem", "a"), red );
26   BOOST_CHECK_EQUAL( ac.lookup("bleem", "foo"), black );
27   BOOST_CHECK_EQUAL( ac.lookup("venchent", "a"), white );
28
29   annot a;
30   a.begin = 30;
31   a.end = 45;
32   a.type = "bleem";
33   a.name = "a";
34   
35   BOOST_CHECK_EQUAL( ac.lookup(a), red );
36   a.name = "b";
37   BOOST_CHECK_EQUAL( ac.lookup(a), black );
38   a.type = "venchent";
39   BOOST_CHECK_EQUAL( ac.lookup(a), white );
40
41   ac.clear();
42   BOOST_CHECK_EQUAL( ac.lookup("bleem", "a"), black);
43 }
44
45 // can we assign a color?
46 BOOST_AUTO_TEST_CASE( annotation_color_assignment )
47 {
48   Color black(0.0, 0.0, 0.0);
49   Color white(1.0, 1.0, 1.0);
50   Color red(1.0, 0.0, 0.0);
51
52   AnnotationColors ac1;
53   ac1.setColor(white);
54   ac1.appendTypeColor("bleem", black);
55   ac1.appendInstanceColor("bleem", "a", red);
56
57   AnnotationColors ac2;
58   BOOST_CHECK_EQUAL( ac2.color(), black );
59   ac2 = ac1;
60   BOOST_CHECK_EQUAL( ac2.color(), white );
61   BOOST_CHECK_EQUAL( ac2.typeColor("bleem"), ac1.typeColor("bleem") );
62   BOOST_CHECK_EQUAL( ac2.lookup("bleem","a"), ac1.lookup("bleem","a") );
63 }