28 #include <mln/core/image/edge_image.hh>
29 #include <mln/core/image/image2d.hh>
30 #include <mln/accu/shape/bbox.hh>
31 #include <mln/fun/i2v/array.hh>
32 #include <mln/util/graph.hh>
33 #include <mln/util/site_pair.hh>
34 #include <mln/debug/draw_graph.hh>
51 static const unsigned X = mln_max(
unsigned);
56 static unsigned expected_fwd_nb[5][3] = { { 1, 2, X },
62 static unsigned expected_bkd_nb[5][3] = { { 2, 1, X },
79 typedef fun::i2v::array<site_t> fsite_t;
106 typedef fun::i2v::array<unsigned> viota_t;
107 viota_t
iota(g.v_nmax());
108 for (
unsigned i = 0; i <
iota.size(); ++i)
112 ima_t ima(g, sites, iota);
119 mln_piter_(ima_t) p(ima.domain());
158 mln_piter_(ima_t) p(ima.domain());
161 mln_assertion(ima(p) == i++);
163 typedef ima_t::win_t win_t;
168 mln_qiter_(win_t) q(win, p);
174 mln_assertion(expected_fwd_nb[p.id()][i] == q.id());
182 mln_bkd_qiter_(win_t) q(win, p);
188 mln_assertion(expected_bkd_nb[p.id()][i] == q.id());
194 typedef ima_t::nbh_t nbh_t;
198 mln_niter_(nbh_t) n(neigh, p);
205 mln_assertion(expected_fwd_nb[p.id()][i] == n.id());
213 mln_bkd_niter_(nbh_t) n(neigh, p);
219 mln_assertion(expected_bkd_nb[p.id()][i] == n.id());