]> git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/gil/test/core/color_base/homogeneous_color_base.cpp
import new upstream nautilus stable release 14.2.8
[ceph.git] / ceph / src / boost / libs / gil / test / core / color_base / homogeneous_color_base.cpp
1 //
2 // Copyright 2019 Mateusz Loskot <mateusz at loskot dot net>
3 //
4 // Distributed under the Boost Software License, Version 1.0
5 // See accompanying file LICENSE_1_0.txt or copy at
6 // http://www.boost.org/LICENSE_1_0.txt
7 //
8 #include <boost/gil/color_base.hpp>
9 #include <boost/gil/gray.hpp>
10 #include <boost/gil/rgb.hpp>
11 #include <boost/gil/rgba.hpp>
12
13 #include <boost/core/typeinfo.hpp>
14
15 #include <type_traits>
16
17 #define BOOST_TEST_MODULE test_channel_traits
18 #include "unit_test.hpp"
19
20 namespace gil = boost::gil;
21
22 namespace {
23
24 // Unknown layout is used where layout mapping is irrelevant for a test and its result.
25 using unknown_layout_t = gil::gray_layout_t;
26
27 template <int N>
28 using color_base = gil::detail::homogeneous_color_base<std::uint8_t, unknown_layout_t, N>;
29
30 std::integral_constant<int, 0> e0;
31 std::integral_constant<int, 1> e1;
32 std::integral_constant<int, 2> e2;
33 std::integral_constant<int, 3> e3;
34 std::integral_constant<int, 4> e4;
35
36 } // unnamed namespace
37
38 BOOST_AUTO_TEST_CASE(homogeneous_color_base_1_default_constructor)
39 {
40 using fixture = color_base<1>;
41 fixture f;
42 BOOST_TEST(std::uint8_t{f} == std::uint8_t{0});
43 BOOST_TEST(f.at(e0) == std::uint8_t{0});
44 }
45
46 BOOST_AUTO_TEST_CASE(homogeneous_color_base_1_value_constructor)
47 {
48 using fixture = color_base<1>;
49 fixture f{1};
50 BOOST_TEST(std::uint8_t{f} == std::uint8_t{1});
51 BOOST_TEST(f.at(e0) == std::uint8_t{1});
52 }
53
54 BOOST_AUTO_TEST_CASE(homogeneous_color_base_2_default_constructor)
55 {
56 using fixture = color_base<2>;
57 fixture f;
58 BOOST_TEST(f.at(e0) == std::uint8_t{0});
59 BOOST_TEST(f.at(e1) == std::uint8_t{0});
60 }
61
62 BOOST_AUTO_TEST_CASE(homogeneous_color_base_2_value_constructor)
63 {
64 using fixture = color_base<2>;
65 fixture f{2};
66 BOOST_TEST(f.at(e0) == std::uint8_t{2});
67 BOOST_TEST(f.at(e0) == f.at(e1));
68 }
69
70 BOOST_AUTO_TEST_CASE(homogeneous_color_base_3_default_constructor)
71 {
72 using fixture = color_base<3>;
73 fixture f;
74 BOOST_TEST(f.at(e0) == std::uint8_t{0});
75 BOOST_TEST(f.at(e1) == std::uint8_t{0});
76 BOOST_TEST(f.at(e2) == std::uint8_t{0});
77 }
78
79 BOOST_AUTO_TEST_CASE(homogeneous_color_base_3_value_constructor)
80 {
81 using fixture = color_base<3>;
82 fixture f{3};
83 BOOST_TEST(f.at(e0) == std::uint8_t{3});
84 BOOST_TEST(f.at(e0) == f.at(e1));
85 BOOST_TEST(f.at(e0) == f.at(e2));
86 }
87
88 BOOST_AUTO_TEST_CASE(homogeneous_color_base_4_default_constructor)
89 {
90 using fixture = color_base<4>;
91 fixture f;
92 BOOST_TEST(f.at(e0) == std::uint8_t{0});
93 BOOST_TEST(f.at(e1) == std::uint8_t{0});
94 BOOST_TEST(f.at(e2) == std::uint8_t{0});
95 BOOST_TEST(f.at(e3) == std::uint8_t{0});
96 }
97
98 BOOST_AUTO_TEST_CASE(homogeneous_color_base_4_value_constructor)
99 {
100 using fixture = color_base<4>;
101 fixture f{4};
102 BOOST_TEST(f.at(e0) == std::uint8_t{4});
103 BOOST_TEST(f.at(e0) == f.at(e1));
104 BOOST_TEST(f.at(e0) == f.at(e2));
105 BOOST_TEST(f.at(e0) == f.at(e3));
106 }
107
108 BOOST_AUTO_TEST_CASE(homogeneous_color_base_5_default_constructor)
109 {
110 using fixture = color_base<5>;
111 fixture f;
112 BOOST_TEST(f.at(e0) == std::uint8_t{0});
113 BOOST_TEST(f.at(e1) == std::uint8_t{0});
114 BOOST_TEST(f.at(e2) == std::uint8_t{0});
115 BOOST_TEST(f.at(e3) == std::uint8_t{0});
116 BOOST_TEST(f.at(e4) == std::uint8_t{0});
117 }
118
119 BOOST_AUTO_TEST_CASE(homogeneous_color_base_5_value_constructor)
120 {
121 using fixture = color_base<5>;
122 fixture f{5};
123 BOOST_TEST(f.at(e0) == f.at(e1));
124 BOOST_TEST(f.at(e0) == f.at(e2));
125 BOOST_TEST(f.at(e0) == f.at(e3));
126 BOOST_TEST(f.at(e0) == f.at(e4));
127 }