]>
git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/gil/test/extension/numeric/kernel_fixed.cpp
2 // Copyright 2019 Mateusz Loskot <mateusz at loskot dot net>
3 // Copyright 2019 Miral Shah <miralshah2211@gmail.com>
5 // Distributed under the Boost Software License, Version 1.0
6 // See accompanying file LICENSE_1_0.txt or copy at
7 // http://www.boost.org/LICENSE_1_0.txt
9 #define BOOST_DISABLE_ASSERTS 1 // kernel_1d_adaptor assertions are too strict
10 #include <boost/gil.hpp>
11 #include <boost/gil/extension/numeric/kernel.hpp>
13 #include <boost/core/lightweight_test.hpp>
17 namespace gil
= boost::gil
;
19 void test_kernel_1d_fixed_default_constructor()
21 gil::kernel_1d_fixed
<int, 9> k
;
22 BOOST_TEST_EQ(k
.center(), 0);
23 BOOST_TEST_EQ(k
.left_size(), 0);
24 BOOST_TEST_EQ(k
.right_size(), 8); // TODO: Why not 0 or -1 if not set?
25 // std::array interface
26 BOOST_TEST_EQ(k
.size(), 9);
29 void test_kernel_2d_fixed_default_constructor()
31 gil::detail::kernel_2d_fixed
<int, 9> k
;
32 BOOST_TEST_EQ(k
.center_x(), 0);
33 BOOST_TEST_EQ(k
.center_y(), 0);
34 BOOST_TEST_EQ(k
.left_size(), 0);
35 BOOST_TEST_EQ(k
.right_size(), 8); // TODO: Why not 0 or -1 if not set?
36 BOOST_TEST_EQ(k
.upper_size(), 0);
37 BOOST_TEST_EQ(k
.lower_size(), 8);
38 // std::array interface
39 BOOST_TEST_EQ(k
.size(), 9);
42 void test_kernel_1d_fixed_parameterized_constructor()
44 gil::kernel_1d_fixed
<int, 9> k(4);
45 BOOST_TEST_EQ(k
.center(), 4);
46 BOOST_TEST_EQ(k
.left_size(), 4);
47 BOOST_TEST_EQ(k
.right_size(), 4);
48 // std::vector interface
49 BOOST_TEST_EQ(k
.size(), 9);
52 void test_kernel_2d_fixed_parameterized_constructor()
54 gil::detail::kernel_2d_fixed
<int, 9> k(4, 4);
55 BOOST_TEST_EQ(k
.center_x(), 4);
56 BOOST_TEST_EQ(k
.center_y(), 4);
57 BOOST_TEST_EQ(k
.left_size(), 4);
58 BOOST_TEST_EQ(k
.right_size(), 4);
59 BOOST_TEST_EQ(k
.upper_size(), 4);
60 BOOST_TEST_EQ(k
.lower_size(), 4);
61 // std::vector interface
62 BOOST_TEST_EQ(k
.size(), 9);
65 void test_kernel_1d_fixed_parameterized_constructor_with_iterator()
67 // FIXME: The constructor should throw if v.size() < k.size()
68 std::vector
<int> v(9);
69 gil::kernel_1d_fixed
<int, 9> k(v
.cbegin(), 4);
70 BOOST_TEST_EQ((gil::kernel_1d_fixed
<int, 9>::static_size
), 9);
71 BOOST_TEST_EQ(k
.center(), 4);
72 BOOST_TEST_EQ(k
.left_size(), 4);
73 BOOST_TEST_EQ(k
.right_size(), 4);
74 // std::vector interface
75 BOOST_TEST_EQ(k
.size(), 9);
78 void test_kernel_2d_fixed_parameterized_constructor_with_iterator()
80 // // FIXME: The constructor should throw if v.size() < k.size()
81 std::array
<int, 81> v
;
82 gil::detail::kernel_2d_fixed
<int, 9> k(v
.cbegin(), 4, 4);
83 BOOST_TEST_EQ((gil::detail::kernel_2d_fixed
<int, 9>::static_size
), 9);
84 BOOST_TEST_EQ(k
.center_y(), 4);
85 BOOST_TEST_EQ(k
.center_x(), 4);
86 BOOST_TEST_EQ(k
.left_size(), 4);
87 BOOST_TEST_EQ(k
.right_size(), 4);
88 BOOST_TEST_EQ(k
.upper_size(), 4);
89 BOOST_TEST_EQ(k
.lower_size(), 4);
90 // std::vector interface
91 BOOST_TEST_EQ(k
.size(), 9);
94 void test_kernel_1d_fixed_copy_constructor()
96 gil::kernel_1d_fixed
<int, 9> d(4);
97 gil::kernel_1d_fixed
<int, 9> k(d
);
98 BOOST_TEST_EQ((gil::kernel_1d_fixed
<int, 9>::static_size
), 9);
99 BOOST_TEST_EQ(k
.center(), 4);
100 BOOST_TEST_EQ(k
.center(), d
.center());
101 BOOST_TEST_EQ(k
.left_size(), d
.left_size());
102 BOOST_TEST_EQ(k
.right_size(), d
.right_size());
103 // std::vector interface
104 BOOST_TEST_EQ(k
.size(), d
.size());
107 void test_kernel_2d_fixed_copy_constructor()
109 gil::detail::kernel_2d_fixed
<int, 9> d(4, 4);
110 gil::detail::kernel_2d_fixed
<int, 9> k(d
);
111 BOOST_TEST_EQ((gil::detail::kernel_2d_fixed
<int, 9>::static_size
), 9);
112 BOOST_TEST_EQ(k
.center_x(), 4);
113 BOOST_TEST_EQ(k
.center_y(), 4);
114 BOOST_TEST_EQ(k
.center_x(), d
.center_x());
115 BOOST_TEST_EQ(k
.center_y(), d
.center_y());
116 BOOST_TEST_EQ(k
.left_size(), d
.left_size());
117 BOOST_TEST_EQ(k
.right_size(), d
.right_size());
118 BOOST_TEST_EQ(k
.lower_size(), d
.lower_size());
119 BOOST_TEST_EQ(k
.upper_size(), d
.upper_size());
120 // std::vector interface
121 BOOST_TEST_EQ(k
.size(), d
.size());
124 void test_kernel_1d_fixed_assignment_operator()
126 gil::kernel_1d_fixed
<int, 9> d(4);
127 gil::kernel_1d_fixed
<int, 9> k
;
129 BOOST_TEST_EQ((gil::kernel_1d_fixed
<int, 9>::static_size
), 9);
130 BOOST_TEST_EQ(k
.center(), 4);
131 BOOST_TEST_EQ(k
.center(), d
.center());
132 BOOST_TEST_EQ(k
.left_size(), d
.left_size());
133 BOOST_TEST_EQ(k
.right_size(), d
.right_size());
134 // std::vector interface
135 BOOST_TEST_EQ(k
.size(), d
.size());
138 void test_kernel_2d_fixed_assignment_operator()
140 gil::detail::kernel_2d_fixed
<int, 9> d(4, 4);
141 gil::detail::kernel_2d_fixed
<int, 9> k
;
143 BOOST_TEST_EQ((gil::detail::kernel_2d_fixed
<int, 9>::static_size
), 9);
144 BOOST_TEST_EQ(k
.center_x(), 4);
145 BOOST_TEST_EQ(k
.center_y(), 4);
146 BOOST_TEST_EQ(k
.center_x(), d
.center_x());
147 BOOST_TEST_EQ(k
.center_y(), d
.center_y());
148 BOOST_TEST_EQ(k
.left_size(), d
.left_size());
149 BOOST_TEST_EQ(k
.right_size(), d
.right_size());
150 BOOST_TEST_EQ(k
.lower_size(), d
.lower_size());
151 BOOST_TEST_EQ(k
.upper_size(), d
.upper_size());
152 // std::vector interface
153 BOOST_TEST_EQ(k
.size(), d
.size());
156 void test_kernel_1d_fixed_reverse_kernel()
158 std::array
<int, 3> values
= {{1, 2, 3}};
159 gil::kernel_1d_fixed
<int, 3> k(values
.begin(), 1);
160 BOOST_TEST_EQ((gil::kernel_1d_fixed
<int, 3>::static_size
), 3);
161 BOOST_TEST_ALL_EQ(k
.begin(), k
.end(), values
.begin(), values
.end());
163 std::array
<int, 3> values_rev
= {{3, 2, 1}};
164 auto const k_rev
= gil::reverse_kernel(k
);
165 BOOST_TEST_ALL_EQ(k_rev
.begin(), k_rev
.end(), values_rev
.begin(), values_rev
.end());
170 test_kernel_1d_fixed_default_constructor();
171 test_kernel_2d_fixed_default_constructor();
172 test_kernel_1d_fixed_parameterized_constructor();
173 test_kernel_2d_fixed_parameterized_constructor();
174 test_kernel_1d_fixed_parameterized_constructor_with_iterator();
175 test_kernel_2d_fixed_parameterized_constructor_with_iterator();
176 test_kernel_1d_fixed_copy_constructor();
177 test_kernel_2d_fixed_copy_constructor();
178 test_kernel_1d_fixed_assignment_operator();
179 test_kernel_2d_fixed_assignment_operator();
180 test_kernel_1d_fixed_reverse_kernel();
182 return ::boost::report_errors();