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>
36 #include <mln/core/routine/duplicate.hh>
37 #include <mln/data/apply.hh>
38 #include <mln/debug/iota.hh>
40 #include <mln/debug/println.hh>
44 typedef unsigned short result;
45 result operator()(
int c)
const
47 return result(c % 42);
60 mln_piter(I)
p (ref.domain ());
66 mln_assertion((mln_value(I))(ref(
p) % 42) == out(
p));
108 unsigned slis_start = 1;
109 unsigned slis_end = 3;
111 unsigned rows_start = 1;
112 unsigned rows_end = 8;
114 unsigned cols_start = 2;
115 unsigned cols_end = 256;
118 std::cerr <<
"Tests data::apply" << std::endl;
120 (std::cerr <<
"in 1d ... ").flush ();
122 for (
unsigned i = cols_start; i < cols_end; ++i)
126 chk1d<value::int_u8>(i);
127 chk1d<value::int_u16>(i);
128 chk1d<value::int_s8>(i);
129 chk1d<value::int_s16>(i);
132 std::cerr <<
"OK" << std::endl;
134 (std::cerr <<
"in 2d ... ").flush ();
136 for (
unsigned h = rows_start; h < rows_end; ++h)
137 for (
unsigned i = cols_start; i < cols_end; ++i)
140 chk2d<unsigned>(h, i);
141 chk2d<value::int_u8>(h, i);
142 chk2d<value::int_u16>(h, i);
143 chk2d<value::int_s8>(h, i);
144 chk2d<value::int_s16>(h, i);
147 std::cerr <<
"OK" << std::endl;
150 (std::cerr <<
"in 3d ... ").flush ();
152 for (
unsigned g = slis_start; g < slis_end; ++g)
153 for (
unsigned h = rows_start; h < rows_end; ++h)
154 for (
unsigned i = cols_start; i < cols_end; ++i)
157 chk3d<unsigned>(g, h, i);
158 chk3d<value::int_u8>(g, h, i);
159 chk3d<value::int_u16>(g, h, i);
160 chk3d<value::int_s8>(g, h, i);
161 chk3d<value::int_s16>(g, h, i);
164 std::cerr <<
"OK" << std::endl;