[GIT] ppl/ppl(master): In frequency(), deal properly with the case when a box is empty.

Module: ppl/ppl Branch: master Commit: 0bbcc5ab4f06cb3ebc8b1043e2e25c89c67e09ad URL: http://www.cs.unipr.it/git/gitweb.cgi?p=ppl/ppl.git;a=commit;h=0bbcc5ab4f06c...
Author: Patricia Hill p.m.hill@leeds.ac.uk Date: Wed Mar 24 12:12:44 2010 +0000
In frequency(), deal properly with the case when a box is empty. Added tests for this case. Re-enable frequency test in the Prolog interface.
---
...face_generator_prolog_generated_test_pl_code.m4 | 2 +- src/Box.templates.hh | 2 +- tests/BD_Shape/frequency1.cc | 20 ++++++++++++++++++++ tests/Box/frequency1.cc | 20 ++++++++++++++++++++ tests/Octagonal_Shape/frequency1.cc | 20 ++++++++++++++++++++ 5 files changed, 62 insertions(+), 2 deletions(-)
diff --git a/interfaces/Prolog/tests/ppl_interface_generator_prolog_generated_test_pl_code.m4 b/interfaces/Prolog/tests/ppl_interface_generator_prolog_generated_test_pl_code.m4 index 56eb533..4ed6891 100644 --- a/interfaces/Prolog/tests/ppl_interface_generator_prolog_generated_test_pl_code.m4 +++ b/interfaces/Prolog/tests/ppl_interface_generator_prolog_generated_test_pl_code.m4 @@ -905,7 +905,7 @@ ppl_@CLASS@_@MAXMIN@_with_point_6_test :- ).
') -m4_define(`ppl_@CLASS@_frequency_codeXXX', +m4_define(`ppl_@CLASS@_frequency_code', ` ppl_@CLASS@_frequency_6_test :- ( diff --git a/src/Box.templates.hh b/src/Box.templates.hh index 5b08ea1..674fd44 100644 --- a/src/Box.templates.hh +++ b/src/Box.templates.hh @@ -1383,7 +1383,7 @@ Box<ITV>::frequency(const Linear_Expression& expr, }
// For an empty Box, we simply return false. - if (marked_empty()) + if (is_empty()) return false;
// The Box has at least 1 dimension and is not empty. diff --git a/tests/BD_Shape/frequency1.cc b/tests/BD_Shape/frequency1.cc index 7c420b6..f74e6fb 100644 --- a/tests/BD_Shape/frequency1.cc +++ b/tests/BD_Shape/frequency1.cc @@ -243,6 +243,25 @@ test09() { return ok; }
+// Non-relational test of an empty bd_shape in 1-dimension. +bool +test10() { + Variable A(0); + + TBD_Shape bds(1); + bds.add_constraint(A <= 0); + bds.add_constraint(A >= 1); + + Coefficient num; + Coefficient den; + Coefficient valn; + Coefficient vald; + bool ok = (!bds.frequency(Linear_Expression(A), num, den, valn, vald)); + print_constraints(bds, "*** bds ***"); + + return ok; +} + } // namespace
BEGIN_MAIN @@ -255,4 +274,5 @@ BEGIN_MAIN DO_TEST(test07); DO_TEST(test08); DO_TEST(test09); + DO_TEST(test10); END_MAIN diff --git a/tests/Box/frequency1.cc b/tests/Box/frequency1.cc index b64be53..d6c53b1 100644 --- a/tests/Box/frequency1.cc +++ b/tests/Box/frequency1.cc @@ -196,6 +196,25 @@ test08() { return ok; }
+// Non-relational test of an empty box in 1-dimension. +bool +test09() { + Variable A(0); + + TBox box(1); + box.add_constraint(A <= 0); + box.add_constraint(A >= 1); + + Coefficient num; + Coefficient den; + Coefficient valn; + Coefficient vald; + bool ok = (!box.frequency(Linear_Expression(A), num, den, valn, vald)); + print_constraints(box, "*** box ***"); + + return ok; +} + } // namespace
BEGIN_MAIN @@ -207,4 +226,5 @@ BEGIN_MAIN DO_TEST(test06); DO_TEST(test07); DO_TEST(test08); + DO_TEST(test09); END_MAIN diff --git a/tests/Octagonal_Shape/frequency1.cc b/tests/Octagonal_Shape/frequency1.cc index ad840a6..571dd5b 100644 --- a/tests/Octagonal_Shape/frequency1.cc +++ b/tests/Octagonal_Shape/frequency1.cc @@ -321,6 +321,25 @@ test13() { return ok; }
+// Test of an empty octagonal_shape in 1-dimension. +bool +test14() { + Variable A(0); + + TOctagonal_Shape os(1); + os.add_constraint(A <= 0); + os.add_constraint(A >= 1); + + Coefficient num; + Coefficient den; + Coefficient valn; + Coefficient vald; + bool ok = (!os.frequency(Linear_Expression(A), num, den, valn, vald)); + print_constraints(os, "*** os ***"); + + return ok; +} + } // namespace
BEGIN_MAIN @@ -337,4 +356,5 @@ BEGIN_MAIN DO_TEST(test11); DO_TEST(test12); DO_TEST(test13); + DO_TEST(test14); END_MAIN
participants (1)
-
Patricia Hill