[GIT] ppl/ppl(master): Test Polyhedron::drop_some_non_integer_points().

Module: ppl/ppl Branch: master Commit: f34bcd0e0c7397ac91ba95d562446acd8f1efef7 URL: http://www.cs.unipr.it/git/gitweb.cgi?p=ppl/ppl.git;a=commit;h=f34bcd0e0c739...
Author: Roberto Bagnara bagnara@cs.unipr.it Date: Thu Mar 25 07:07:04 2010 +0400
Test Polyhedron::drop_some_non_integer_points().
---
tests/Polyhedron/Makefile.am | 8 + tests/Polyhedron/dropsomenonintegerpoints1.cc | 174 +++++++++++++++++++++++++ tests/Polyhedron/dropsomenonintegerpoints2.cc | 160 +++++++++++++++++++++++ 3 files changed, 342 insertions(+), 0 deletions(-)
diff --git a/tests/Polyhedron/Makefile.am b/tests/Polyhedron/Makefile.am index 22cbec0..2096287 100644 --- a/tests/Polyhedron/Makefile.am +++ b/tests/Polyhedron/Makefile.am @@ -81,6 +81,7 @@ constraints1 \ contains1 contains2 \ containsintegerpoint1 \ disjoint1 disjoint2 \ +dropsomenonintegerpoints1 dropsomenonintegerpoints2 \ dualhypercubes \ empty1 \ equals1 \ @@ -169,6 +170,7 @@ nnc_constraints1 \ nnc_contains1 \ nnc_containsintegerpoint1 \ nnc_disjoint1 \ +nnc_dropsomenonintegerpoints1 \ nnc_empty1 \ nnc_equals1 \ nnc_exceptions1 nnc_exceptions3 \ @@ -288,6 +290,9 @@ containsintegerpoint1_SOURCES = containsintegerpoint1.cc disjoint1_SOURCES = disjoint1.cc disjoint2_SOURCES = disjoint2.cc
+dropsomenonintegerpoints1_SOURCES = dropsomenonintegerpoints1.cc +dropsomenonintegerpoints2_SOURCES = dropsomenonintegerpoints2.cc + dualhypercubes_SOURCES = dualhypercubes.cc
empty1_SOURCES = empty1.cc @@ -517,6 +522,9 @@ nnc_containsintegerpoint1_CXXFLAGS = $(DERIVED_CXXFLAGS) nnc_disjoint1_SOURCES = disjoint1.cc nnc_disjoint1_CXXFLAGS = $(DERIVED_CXXFLAGS)
+nnc_dropsomenonintegerpoints1_SOURCES = dropsomenonintegerpoints1.cc +nnc_dropsomenonintegerpoints1_CXXFLAGS = $(DERIVED_CXXFLAGS) + nnc_empty1_SOURCES = empty1.cc nnc_empty1_CXXFLAGS = $(DERIVED_CXXFLAGS)
diff --git a/tests/Polyhedron/dropsomenonintegerpoints1.cc b/tests/Polyhedron/dropsomenonintegerpoints1.cc new file mode 100644 index 0000000..c02efde --- /dev/null +++ b/tests/Polyhedron/dropsomenonintegerpoints1.cc @@ -0,0 +1,174 @@ +/* Test Polyhedron::drop_some_non_integer_points(). + Copyright (C) 2001-2010 Roberto Bagnara bagnara@cs.unipr.it + +This file is part of the Parma Polyhedra Library (PPL). + +The PPL is free software; you can redistribute it and/or modify it +under the terms of the GNU General Public License as published by the +Free Software Foundation; either version 3 of the License, or (at your +option) any later version. + +The PPL 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 program; if not, write to the Free Software Foundation, +Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1307, USA. + +For the most up-to-date information see the Parma Polyhedra Library +site: http://www.cs.unipr.it/ppl/ . */ + +#include "ppl_test.hh" + +namespace { + +bool +test01() { + Variable A(0); + Variable B(1); + + C_Polyhedron ph(2); + ph.add_constraint(2*A >= 1); + ph.add_constraint(2*B >= -1); + ph.add_constraint(6*A - 3*B >= 7); + + print_constraints(ph, "*** ph ***"); + + ph.drop_some_non_integer_points(); + + C_Polyhedron known_result(2); + known_result.add_constraint(A >= 1); + known_result.add_constraint(B >= 0); + known_result.add_constraint(2*A - B >= 3); + + bool ok = (ph == known_result); + + print_constraints(ph, "*** after ph.drop_some_non_integer_points() ***"); + + return ok; +} + +bool +test02() { + C_Polyhedron ph1; + C_Polyhedron ph2(2, EMPTY); + + print_constraints(ph1, "*** ph1 ***"); + print_constraints(ph2, "*** ph2 ***"); + + C_Polyhedron known_result1(0, EMPTY); + C_Polyhedron known_result2(ph2); + + ph1.drop_some_non_integer_points(); + ph2.drop_some_non_integer_points(); + + bool ok = (ph1 == known_result1 && ph2 == known_result2); + + print_constraints(ph1, "*** after ph1.drop_some_non_integer_points() ***"); + print_constraints(ph2, "*** after ph2.drop_some_non_integer_points() ***"); + + return ok; +} + +bool +test03() { + Variable A(0); + Variable B(1); + + C_Polyhedron ph(2); + ph.add_constraint(A - B == 0); + ph.add_constraint(A >= 0); + + C_Polyhedron known_result(ph); + + print_constraints(ph, "*** ph ***"); + + ph.drop_some_non_integer_points(); + + bool ok = (ph == known_result); + + print_constraints(ph, "*** after ph.drop_some_non_integer_points() ***"); + + return ok; +} + +bool +test04() { + Variable A(0); + Variable B(1); + + C_Polyhedron ph(2); + ph.generators(); + ph.add_constraint(A >= 0); + ph.add_constraint(A == B); + + print_constraints(ph, "*** ph ***"); + + ph.drop_some_non_integer_points(); + + C_Polyhedron known_result(2); + known_result.add_constraint(A >= 0); + known_result.add_constraint(A == B); + + bool ok = (ph == known_result); + + print_constraints(ph, "*** after ph.drop_some_non_integer_points() ***"); + + return ok; +} + +bool +test05() { + Variable A(0); + Variable B(1); + + C_Polyhedron ph(2, EMPTY); + ph.add_generator(point(A+B, 2)); + ph.add_generator(line(B)); + + print_constraints(ph, "*** ph ***"); + + ph.drop_some_non_integer_points(); + + C_Polyhedron known_result(2, EMPTY); + + bool ok = (ph == known_result); + + print_constraints(ph, "*** after ph.drop_some_non_integer_points() ***"); + + return ok; +} + +bool +test06() { + Variable A(0); + Variable B(1); + + C_Polyhedron ph(2); + ph.add_constraint(2*A <= 1); + ph.add_constraint(2*B <= -1); + ph.add_constraint(6*A - 3*B <= 7); + + print_constraints(ph, "*** ph ***"); + + ph.drop_some_non_integer_points(); + + bool ok = true; //(ph1 == ph2); + + print_constraints(ph, "*** after ph.drop_some_non_integer_points() ***"); + + return ok; +} + +} // namespace + +BEGIN_MAIN + DO_TEST(test01); + DO_TEST(test02); + DO_TEST(test03); + DO_TEST(test04); + DO_TEST(test05); + DO_TEST(test06); +END_MAIN diff --git a/tests/Polyhedron/dropsomenonintegerpoints2.cc b/tests/Polyhedron/dropsomenonintegerpoints2.cc new file mode 100644 index 0000000..a3a6606 --- /dev/null +++ b/tests/Polyhedron/dropsomenonintegerpoints2.cc @@ -0,0 +1,160 @@ +/* Test Polyhedron::drop_some_non_integer_points(). + Copyright (C) 2001-2010 Roberto Bagnara bagnara@cs.unipr.it + +This file is part of the Parma Polyhedra Library (PPL). + +The PPL is free software; you can redistribute it and/or modify it +under the terms of the GNU General Public License as published by the +Free Software Foundation; either version 3 of the License, or (at your +option) any later version. + +The PPL 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 program; if not, write to the Free Software Foundation, +Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1307, USA. + +For the most up-to-date information see the Parma Polyhedra Library +site: http://www.cs.unipr.it/ppl/ . */ + +#include "ppl_test.hh" + +namespace { + +bool +test01() { + Variable A(0); + Variable B(1); + + NNC_Polyhedron ph1(2); + ph1.add_constraint(A > 1); + ph1.add_constraint(A - B > 0); + Generator_System gs; + gs.insert(point(2*A)); + gs.insert(closure_point(A + B)); + gs.insert(ray(-B)); + gs.insert(ray(A + B)); + NNC_Polyhedron ph2(gs); + + print_constraints(ph1, "*** ph1 ***"); + print_generators(ph2, "*** ph2 ***"); + + ph1.drop_some_non_integer_points(); + ph2.drop_some_non_integer_points(); + + bool ok = (ph1 == ph2); + + print_constraints(ph1, "*** after ph1.drop_some_non_integer_points() ***"); + print_generators(ph2, "*** after ph2.drop_some_non_integer_points() ***"); + + return ok; +} + +bool +test02() { + NNC_Polyhedron ph1; + NNC_Polyhedron ph2(2, EMPTY); + + print_constraints(ph1, "*** ph1 ***"); + print_constraints(ph2, "*** ph2 ***"); + + NNC_Polyhedron known_result1(0, EMPTY); + NNC_Polyhedron known_result2(ph2); + + ph1.drop_some_non_integer_points(); + ph2.drop_some_non_integer_points(); + + bool ok = (ph1 == known_result1 && ph2 == known_result2); + + print_constraints(ph1, "*** after ph1.drop_some_non_integer_points() ***"); + print_constraints(ph2, "*** after ph2.drop_some_non_integer_points() ***"); + + return ok; +} + +bool +test03() { + Variable A(0); + Variable B(1); + + C_Polyhedron ph(2); + ph.add_constraint(A - B == 0); + ph.add_constraint(A >= 0); + + C_Polyhedron known_result(ph); + + print_constraints(ph, "*** ph ***"); + + ph.drop_some_non_integer_points(); + + bool ok = (ph == known_result); + + print_constraints(ph, "*** after ph.drop_some_non_integer_points() ***"); + + return ok; +} + +bool +test04() { + Variable A(0); + Variable B(1); + + NNC_Polyhedron ph(2); + ph.generators(); + ph.add_constraint(A > 0); + ph.add_constraint(A == B); + + print_constraints(ph, "*** ph ***"); + + ph.drop_some_non_integer_points(); + + NNC_Polyhedron known_result(2); + known_result.add_constraint(A >= 1); + known_result.add_constraint(A == B); + + bool ok = (ph == known_result); + + print_constraints(ph, "*** after ph.drop_some_non_integer_points() ***"); + + return ok; +} + +bool +test05() { + Variable A(0); + Variable B(1); + + NNC_Polyhedron ph(2, EMPTY); + ph.add_generator(point(A)); + ph.constraints(); + ph.add_generator(closure_point()); + ph.add_generator(ray(A)); + ph.add_generator(ray(B)); + + print_generators(ph, "*** ph ***"); + + ph.drop_some_non_integer_points(); + + NNC_Polyhedron known_result(2); + known_result.add_constraint(A >= 1); + known_result.add_constraint(B >= 0); + + bool ok = (ph == known_result); + + print_constraints(ph, "*** after ph.drop_some_non_integer_points() ***"); + + return ok; +} + +} // namespace + +BEGIN_MAIN + DO_TEST(test01); + DO_TEST(test02); + DO_TEST(test03); + DO_TEST(test04); + DO_TEST(test05); +END_MAIN
participants (1)
-
Roberto Bagnara