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_s8.hh>
32 #include <mln/value/int_u16.hh>
33 #include <mln/value/int_s16.hh>
35 #include <mln/debug/iota.hh>
36 #include <mln/data/saturate.hh>
37 #include <mln/data/stretch.hh>
43 template <
typename I,
typename J>
45 chck(Image<I>& input_, Image<J>& output_)
47 I& input =
exact(input_);
48 J& output =
exact(output_);
52 template <
typename I,
typename J>
57 image1d<I> input(cols);
59 image1d<J> output(cols);
65 template <
typename I,
typename J>
67 chk2d(
unsigned rows,
unsigned cols)
71 image2d<I> input(rows, cols);
73 image2d<J> output(rows, cols);
79 template <
typename I,
typename J>
81 chk3d(
unsigned slis,
unsigned rows,
unsigned cols)
85 image3d<I> input(slis, rows, cols);
87 image3d<J> output(slis, rows, cols);
94 template <
typename I,
typename J>
96 chk(
unsigned slis,
unsigned rows,
unsigned cols)
98 (std::cerr <<
" in 1d ... ").flush ();
100 for (
unsigned i = 2; i < cols; ++i)
103 std::cerr <<
"OK" << std::endl;
105 (std::cerr <<
" in 2d ... ").flush ();
107 for (
unsigned j = 2; j < rows; ++j)
108 for (
unsigned i = 2; i < cols; ++i)
111 std::cerr <<
"OK" << std::endl;
113 (std::cerr <<
" in 3d ... ").flush ();
115 for (
unsigned k = 2; k < slis; ++k)
116 for (
unsigned j = 2; j < rows; ++j)
117 for (
unsigned i = 2; i < cols; ++i)
118 chk3d<I, J>(k, j, i);
120 std::cerr <<
"OK" << std::endl;
123 template <
typename I>
125 ch(
unsigned slis,
unsigned rows,
unsigned cols)
127 std::cerr <<
" into int_u8:" << std::endl;
128 chk<I, value::int_u8>(slis, rows, cols);
129 std::cerr <<
" into int_u16:" << std::endl;
130 chk<I, value::int_u16>(slis, rows, cols);
143 std::cerr <<
"Tests data::stretch:" << std::endl;
144 std::cerr <<
"on int:" << std::endl;
145 ch<int>(slis, rows, cols);
146 std::cerr <<
"on unsigned:" << std::endl;
147 ch<unsigned>(slis, rows, cols);
148 std::cerr <<
"on int_u8:" << std::endl;
149 ch<value::int_u8>(slis, rows, cols);
150 std::cerr <<
"on int_u16:" << std::endl;
151 ch<value::int_u16>(slis, rows, cols);
152 std::cerr <<
"on int_s8:" << std::endl;
153 ch<value::int_s8>(slis, rows, cols);
154 std::cerr <<
"on int_s16:" << std::endl;
155 ch<value::int_s16>(slis, rows, cols);