1 #include "ColorTest.hpp"
3 #include "../assert.hpp"
5 #include "graphics/color.hpp"
9 CPPUNIT_TEST_SUITE_REGISTRATION(blobs::graphics::test::ColorTest);
11 using blobs::test::AssertEqual;
18 void ColorTest::setUp() {
22 void ColorTest::tearDown() {
26 void ColorTest::testConversion() {
27 const double epsilon = 1.0e-9;
28 const glm::dvec3 rgb_black(0.0);
29 const glm::dvec3 rgb_white(1.0);
30 const glm::dvec3 rgb_red(1.0, 0.0, 0.0);
31 const glm::dvec3 rgb_green(0.0, 1.0, 0.0);
32 const glm::dvec3 rgb_blue(0.0, 0.0, 1.0);
34 glm::dvec3 hsl_result(rgb2hsl(rgb_black));
35 CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE(
36 "wrong saturation for black",
37 0.0, hsl_result.y, epsilon
39 CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE(
40 "wrong lightness for black",
41 0.0, hsl_result.z, epsilon
43 glm::dvec3 rgb_result(hsl2rgb(hsl_result));
45 "bad HSL to RGB conversion for black",
46 rgb_black, rgb_result, epsilon
49 hsl_result = rgb2hsl(rgb_white);
50 CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE(
51 "wrong saturation for white",
52 0.0, hsl_result.y, epsilon
54 CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE(
55 "wrong lightness for white",
56 1.0, hsl_result.z, epsilon
58 rgb_result = hsl2rgb(hsl_result);
60 "bad HSL to RGB conversion for white",
61 rgb_white, rgb_result, epsilon
64 hsl_result = rgb2hsl(rgb_red);
65 CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE(
67 0.0, hsl_result.x, epsilon
69 CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE(
70 "wrong saturation for red",
71 1.0, hsl_result.y, epsilon
73 CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE(
74 "wrong lightness for red",
75 1.0, hsl_result.z, epsilon
77 rgb_result = hsl2rgb(hsl_result);
79 "bad HSL to RGB conversion for red",
80 rgb_red, rgb_result, epsilon
83 hsl_result = rgb2hsl(rgb_green);
84 CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE(
85 "wrong hue for green",
86 (1.0 / 3.0), hsl_result.x, epsilon
88 CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE(
89 "wrong saturation for green",
90 1.0, hsl_result.y, epsilon
92 CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE(
93 "wrong lightness for green",
94 1.0, hsl_result.z, epsilon
96 rgb_result = hsl2rgb(hsl_result);
98 "bad HSL to RGB conversion for green",
99 rgb_green, rgb_result, epsilon
102 hsl_result = rgb2hsl(rgb_blue);
103 CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE(
104 "wrong hue for blue",
105 (2.0 / 3.0), hsl_result.x, epsilon
107 CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE(
108 "wrong saturation for blue",
109 1.0, hsl_result.y, epsilon
111 CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE(
112 "wrong lightness for blue",
113 1.0, hsl_result.z, epsilon
115 rgb_result = hsl2rgb(hsl_result);
117 "bad HSL to RGB conversion for blue",
118 rgb_blue, rgb_result, epsilon