26 #include <mln/core/image/image1d.hh>
27 #include <mln/core/image/image2d.hh>
28 #include <mln/core/image/image3d.hh>
30 #include <mln/value/int_u8.hh>
31 #include <mln/value/int_u16.hh>
32 #include <mln/value/int_s8.hh>
33 #include <mln/value/int_s16.hh>
35 #include <mln/data/compare.hh>
37 #include <mln/debug/iota.hh>
38 #include <mln/arith/plus.hh>
39 #include <mln/arith/minus.hh>
84 template<
typename I,
typename J>
88 mln_assertion(! (lhs == rhs));
89 mln_assertion( (lhs <= rhs));
90 mln_assertion( (lhs < rhs));
91 mln_assertion(! (lhs >= rhs));
92 mln_assertion(! (lhs > rhs));
94 mln_assertion(! (rhs == lhs));
95 mln_assertion(! (rhs <= lhs));
96 mln_assertion(! (rhs < lhs));
97 mln_assertion( (rhs >= lhs));
98 mln_assertion( (rhs > lhs));
101 template<
typename I,
typename J>
105 mln_assertion(! (lhs == rhs));
106 mln_assertion( (lhs <= rhs));
107 mln_assertion( (lhs < rhs));
108 mln_assertion(! (lhs >= rhs));
109 mln_assertion(! (lhs > rhs));
111 mln_assertion(! (rhs == lhs));
112 mln_assertion(! (rhs <= lhs));
113 mln_assertion(! (rhs < lhs));
114 mln_assertion( (rhs >= lhs));
115 mln_assertion( (rhs > lhs));
118 template<
typename I,
typename J>
122 mln_assertion( (lhs == rhs));
123 mln_assertion( (lhs <= rhs));
124 mln_assertion(! (lhs < rhs));
125 mln_assertion( (lhs >= rhs));
126 mln_assertion(! (lhs > rhs));
128 mln_assertion( (rhs == lhs));
129 mln_assertion( (rhs <= lhs));
130 mln_assertion(! (rhs < lhs));
131 mln_assertion( (rhs >= lhs));
132 mln_assertion(! (rhs > lhs));
135 template <
typename I>
139 image1d<I> lhs (cols);
140 image1d<I>
rhs (cols);
145 image1d<int> lhs2 = lhs + 0;
146 image1d<int> rhs2 =
rhs + 1;
148 image1d<int> lhs3 = lhs - 1;
149 image1d<int> rhs3 =
rhs + 0;
153 template <
typename I>
155 chk2d(
unsigned rows,
unsigned cols)
157 image2d<I> lhs (rows, cols);
158 image2d<I>
rhs (rows, cols);
163 image2d<int> lhs2 = lhs + 0;
164 image2d<int> rhs2 =
rhs + 1;
166 image2d<int> lhs3 = lhs - 1;
167 image2d<int> rhs3 =
rhs + 0;
171 template <
typename I>
173 chk3d(
unsigned slis,
unsigned rows,
unsigned cols)
175 image3d<I> lhs (slis, rows, cols);
176 image3d<I>
rhs (slis, rows, cols);
181 image3d<int> lhs2 = lhs + 0;
182 image3d<int> rhs2 =
rhs + 1;
184 image3d<int> lhs3 = lhs - 1;
185 image3d<int> rhs3 =
rhs + 0;
197 unsigned slis_start = 1;
198 unsigned slis_end = 3;
200 unsigned rows_start = 1;
201 unsigned rows_end = 16;
203 unsigned cols_start = 1;
204 unsigned cols_end = 32;
206 std::cerr <<
"Tests data::compare" << std::endl;
208 (std::cerr <<
"in 1d ... ").flush ();
210 for (
unsigned i = cols_start; i < cols_end; ++i)
214 chk1d<value::int_u8>(i);
215 chk1d<value::int_u16>(i);
216 chk1d<value::int_s8>(i);
217 chk1d<value::int_s16>(i);
220 std::cerr <<
"OK" << std::endl;
222 (std::cerr <<
"in 2d ... ").flush ();
224 for (
unsigned j = rows_start; j < rows_end; ++j)
225 for (
unsigned i = cols_start; i < cols_end; ++i)
228 chk2d<unsigned>(j, i);
229 chk2d<value::int_u8>(j, i);
230 chk2d<value::int_u16>(j, i);
231 chk2d<value::int_s8>(j, i);
232 chk2d<value::int_s16>(j, i);
235 std::cerr <<
"OK" << std::endl;
237 (std::cerr <<
"in 3d ... ").flush ();
239 for (
unsigned k = slis_start; k < slis_end; ++k)
240 for (
unsigned j = rows_start; j < rows_end; ++j)
241 for (
unsigned i = cols_start; i < cols_end; ++i)
244 chk3d<unsigned>(k, j, i);
245 chk3d<value::int_u8>(k, j, i);
246 chk3d<value::int_u16>(k, j, i);
247 chk3d<value::int_s8>(k, j, i);
248 chk3d<value::int_s16>(k, j, i);
251 std::cerr <<
"OK" << std::endl;