00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #include <mln/util/soft_heap.hh>
00027 #include <mln/core/alias/point2d.hh>
00028 #include <mln/value/int_u8.hh>
00029
00030 using mln::point2d;
00031
00032 point2d p[] = { point2d(4,5), point2d(3,4), point2d(3,2),
00033 point2d(1,6), point2d(2,3), point2d(3,5),
00034 point2d(2,4), point2d(7,2), point2d(9,6),
00035 point2d(7,3) };
00036
00037 point2d res[] = { point2d(1,6), point2d(2,3), point2d(2,4),
00038 point2d(3,2), point2d(3,4), point2d(3,5),
00039 point2d(4,5), point2d(7,2), point2d(7,3),
00040 point2d(9,6) };
00041
00042
00043 int main()
00044 {
00045 using namespace mln;
00046
00047 util::soft_heap<point2d, value::int_u8> fh;
00048
00049 for (unsigned i = 0; i < 5; ++i)
00050 fh.push(p[i]);
00051
00052 util::soft_heap<point2d, value::int_u8> fh2;
00053 for (unsigned i = 5; i < 10; ++i)
00054 fh2.push(p[i]);
00055
00056
00057 fh2.push(fh);
00058
00059
00060 unsigned i = 0;
00061 while (!fh2.is_empty())
00062 mln_assertion(fh2.pop_front() == res[i++]);
00063
00064
00065 mln_assertion(fh.is_empty());
00066
00067 for (unsigned i = 5; i < 10; ++i)
00068 fh2.push(p[i]);
00069
00070 fh2.clear();
00071 mln_assertion(fh2.nelements() == 0);
00072 mln_assertion(fh2.is_empty());
00073 }