28 #include <mln/core/image/vertex_image.hh>
29 #include <mln/make/vertex_image.hh>
30 #include <mln/core/image/image2d.hh>
31 #include <mln/accu/shape/bbox.hh>
32 #include <mln/fun/i2v/array.hh>
33 #include <mln/util/graph.hh>
34 #include <mln/debug/draw_graph.hh>
52 static const unsigned X = mln_max(
unsigned);
57 static unsigned expected_fwd_nb[5][3] = { { 1, X, X },
63 static unsigned expected_bkd_nb[5][3] = { { 1, X, X },
108 viota_t
iota(g.v_nmax());
109 for (
unsigned i = 0; i <
iota.size(); ++i)
125 mln_piter_(ima_t)
p(ima.domain());
129 mln_assertion(
bbox == make::
box2d(5, 5));
153 debug::
draw_graph(ima_rep, ima.domain(), 1, 9);
161 mln_piter_(ima_t) p(ima.domain());
164 mln_assertion(ima(p) == i++);
166 typedef ima_t::win_t win_t;
171 mln_qiter_(win_t) q(win, p);
177 mln_assertion(expected_fwd_nb[p.id()][i] == q.id());
185 mln_bkd_qiter_(win_t) q(win, p);
191 mln_assertion(expected_bkd_nb[p.id()][i] == q.id());
197 typedef ima_t::nbh_t nbh_t;
201 mln_niter_(nbh_t) n(neigh, p);
208 mln_assertion(expected_fwd_nb[p.id()][i] == n.id());
216 mln_bkd_niter_(nbh_t) n(neigh, p);
222 mln_assertion(expected_bkd_nb[p.id()][i] == n.id());
236 ima_void_t ima_void(g,
iota);
239 mln_piter_(ima_void_t) p(ima_void.domain());
242 mln_assertion(ima_void(p) == i++);
244 typedef ima_void_t::win_t win_t;
249 mln_qiter_(win_t) q(win, p);
255 mln_assertion(expected_fwd_nb[p.id()][i] == q.id());
263 mln_bkd_qiter_(win_t) q(win, p);
269 mln_assertion(expected_bkd_nb[p.id()][i] == q.id());
275 typedef ima_void_t::nbh_t nbh_t;
279 mln_niter_(nbh_t) n(neigh, p);
287 mln_assertion(expected_fwd_nb[p.id()][i] == n.element().id());
295 mln_bkd_niter_(nbh_t) n(neigh, p);
302 mln_assertion(expected_bkd_nb[p.id()][i] == n.element().id());