URL:
https://svn.lrde.epita.fr/svn/oln/trunk/milena
ChangeLog:
2007-10-12 Guillaume Duhamel <guillaume.duhamel(a)lrde.epita.fr>
Add tests for queue.
* queue_p_fast.cc,
* queue_p_fast_priority.cc,
* queue_p_priority.cc: New tests.
* image2d.cc: Update test for (id_) in mln/core/internal.
---
image2d.cc | 10 ++++
queue_p_fast.cc | 57 +++++++++++++++++++++++++++
queue_p_fast_priority.cc | 98 +++++++++++++++++++++++++++++++++++++++++++++++
queue_p_priority.cc | 98 +++++++++++++++++++++++++++++++++++++++++++++++
4 files changed, 263 insertions(+)
Index: trunk/milena/tests/image2d.cc
===================================================================
--- trunk/milena/tests/image2d.cc (revision 1324)
+++ trunk/milena/tests/image2d.cc (revision 1325)
@@ -34,6 +34,7 @@
#include <mln/geom/size2d.hh>
#include <mln/core/init.hh>
+#include <mln/border/resize.hh>
@@ -47,6 +48,15 @@
image2d<int> f(nrows, ncols, border);
+ {
+ std::cout << f.id_() << std::endl;
+ image2d<int> g;
+ std::cout << g.id_() << std::endl;
+ g = f;
+ // border::resize (g, 2);
+ std::cout << g.id_() << std::endl;
+ }
+
mln_assertion(f.npoints() == geom::nrows(f) * geom::ncols(f));
mln_assertion(f.ncells() == (nrows + 2 * border) * (ncols + 2 * border));
}
Index: trunk/milena/tests/queue_p_fast.cc
===================================================================
--- trunk/milena/tests/queue_p_fast.cc (revision 0)
+++ trunk/milena/tests/queue_p_fast.cc (revision 1325)
@@ -0,0 +1,57 @@
+// Copyright (C) 2007 EPITA Research and Development Laboratory
+//
+// This file is part of the Olena Library. This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License version 2 as published by the
+// Free Software Foundation.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this library; see the file COPYING. If not, write to
+// the Free Software Foundation, 51 Franklin Street, Fifth Floor,
+// Boston, MA 02111-1307, USA.
+//
+// As a special exception, you may use this file as part of a free
+// software library without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to
+// produce an executable, this file does not by itself cause the
+// resulting executable to be covered by the GNU General Public
+// License. This exception does not however invalidate any other
+// reasons why the executable file might be covered by the GNU General
+// Public License.
+
+/*! \file tests/queue_p.cc
+ *
+ * \brief Tests on mln::queue_p.
+ */
+
+#include <mln/core/point2d.hh>
+#include <mln/core/queue_p_fast.hh>
+
+
+
+int main()
+{
+ using namespace mln;
+
+ queue_p_fast<point2d> q;
+ q
+ .push(make::point2d(6, 9))
+ .push(make::point2d(5, 1))
+ .push(make::point2d(4, 2));
+ mln_assertion(q.npoints() == 3);
+
+ std::cout << q.bbox() << std::endl;
+ std::cout << q << std::endl;
+
+ q.pop();
+ mln_assertion(q.npoints() == 2);
+ point2d p = q.front();
+ mln_assertion(q.npoints() == 2);
+ mln_assertion(p == make::point2d(5, 1));
+}
Index: trunk/milena/tests/queue_p_priority.cc
===================================================================
--- trunk/milena/tests/queue_p_priority.cc (revision 0)
+++ trunk/milena/tests/queue_p_priority.cc (revision 1325)
@@ -0,0 +1,98 @@
+// Copyright (C) 2007 EPITA Research and Development Laboratory
+//
+// This file is part of the Olena Library. This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License version 2 as published by the
+// Free Software Foundation.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this library; see the file COPYING. If not, write to
+// the Free Software Foundation, 51 Franklin Street, Fifth Floor,
+// Boston, MA 02111-1307, USA.
+//
+// As a special exception, you may use this file as part of a free
+// software library without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to
+// produce an executable, this file does not by itself cause the
+// resulting executable to be covered by the GNU General Public
+// License. This exception does not however invalidate any other
+// reasons why the executable file might be covered by the GNU General
+// Public License.
+
+/*! \file tests/queue_p_priority.cc
+ *
+ * \brief Tests on mln::queue_p_priority.
+ */
+
+#include <mln/core/point2d.hh>
+#include <mln/core/queue_p_priority.hh>
+
+int main ()
+{
+ using namespace mln;
+
+ mln::queue_p_priority<point2d, unsigned> q;
+ point2d p1 (6, 9);
+ point2d p2 (5, 1);
+ point2d p3 (4, 2);
+
+ mln_assertion (q.empty ());
+
+ mln_assertion (q.npoints () == 0);
+
+ q.push_force (p3);
+ q.push_force (p1, 3);
+ q.push_force (p2, 5);
+
+ std::cout << q.bbox () << std::endl;
+ std::cout << q << std::endl;
+
+ mln_assertion (!q.empty ());
+
+ mln_assertion (q.has (p1));
+ mln_assertion (q.has (p2));
+ mln_assertion (q.has (p3));
+
+ mln_assertion (q.npoints () == 3);
+ mln_assertion (q.front () == p2);
+ q.pop ();
+
+ mln_assertion (q.has (p1));
+ mln_assertion (!q.has (p2));
+ mln_assertion (q.has (p3));
+
+ mln_assertion (q.npoints () == 2);
+ mln_assertion (q.front () == p1);
+ q.pop ();
+
+ mln_assertion (!q.has (p1));
+ mln_assertion (!q.has (p2));
+ mln_assertion (q.has (p3));
+
+ mln_assertion (q.npoints () == 1);
+ mln_assertion (q.front () == p3);
+ q.pop ();
+
+ mln_assertion (!q.has (p1));
+ mln_assertion (!q.has (p2));
+ mln_assertion (!q.has (p3));
+ mln_assertion (q.npoints () == 0);
+
+ mln_assertion (q.empty ());
+
+ q.push_force (p3);
+ q.push_force (p2, 5);
+ q.push_force (p1, 3);
+
+ mln_assertion (q[2] == p3);
+ mln_assertion (q[1] == p1);
+ mln_assertion (q[0] == p2);
+ q.clear ();
+ mln_assertion (q.empty ());
+}
Index: trunk/milena/tests/queue_p_fast_priority.cc
===================================================================
--- trunk/milena/tests/queue_p_fast_priority.cc (revision 0)
+++ trunk/milena/tests/queue_p_fast_priority.cc (revision 1325)
@@ -0,0 +1,98 @@
+// Copyright (C) 2007 EPITA Research and Development Laboratory
+//
+// This file is part of the Olena Library. This library is free
+// software; you can redistribute it and/or modify it under the terms
+// of the GNU General Public License version 2 as published by the
+// Free Software Foundation.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this library; see the file COPYING. If not, write to
+// the Free Software Foundation, 51 Franklin Street, Fifth Floor,
+// Boston, MA 02111-1307, USA.
+//
+// As a special exception, you may use this file as part of a free
+// software library without restriction. Specifically, if other files
+// instantiate templates or use macros or inline functions from this
+// file, or you compile this file and link it with other files to
+// produce an executable, this file does not by itself cause the
+// resulting executable to be covered by the GNU General Public
+// License. This exception does not however invalidate any other
+// reasons why the executable file might be covered by the GNU General
+// Public License.
+
+/*! \file tests/queue_p_priority.cc
+ *
+ * \brief Tests on mln::queue_p_priority.
+ */
+
+#include <mln/core/point2d.hh>
+#include <mln/core/queue_p_fast_priority.hh>
+
+int main ()
+{
+ using namespace mln;
+
+ mln::queue_p_fast_priority<point2d, unsigned> q;
+ point2d p1 (6, 9);
+ point2d p2 (5, 1);
+ point2d p3 (4, 2);
+
+ mln_assertion (q.empty ());
+
+ mln_assertion (q.npoints () == 0);
+
+ q.push_force (p3);
+ q.push_force (p1, 3);
+ q.push_force (p2, 5);
+
+ std::cout << q.bbox () << std::endl;
+ std::cout << q << std::endl;
+
+ mln_assertion (!q.empty ());
+
+ mln_assertion (q.has (p1));
+ mln_assertion (q.has (p2));
+ mln_assertion (q.has (p3));
+
+ mln_assertion (q.npoints () == 3);
+ mln_assertion (q.front () == p2);
+ q.pop ();
+
+ mln_assertion (q.has (p1));
+ mln_assertion (!q.has (p2));
+ mln_assertion (q.has (p3));
+
+ mln_assertion (q.npoints () == 2);
+ mln_assertion (q.front () == p1);
+ q.pop ();
+
+ mln_assertion (!q.has (p1));
+ mln_assertion (!q.has (p2));
+ mln_assertion (q.has (p3));
+
+ mln_assertion (q.npoints () == 1);
+ mln_assertion (q.front () == p3);
+ q.pop ();
+
+ mln_assertion (!q.has (p1));
+ mln_assertion (!q.has (p2));
+ mln_assertion (!q.has (p3));
+ mln_assertion (q.npoints () == 0);
+
+ mln_assertion (q.empty ());
+
+ q.push_force (p3);
+ q.push_force (p2, 5);
+ q.push_force (p1, 3);
+
+ mln_assertion (q[2] == p3);
+ mln_assertion (q[1] == p1);
+ mln_assertion (q[0] == p2);
+ q.clear ();
+ mln_assertion (q.empty ());
+}