
Module: ppl/ppl Branch: floating_point Commit: 33f20542b9b6d690f2bf243e9991e6b36b423195 URL: http://www.cs.unipr.it/git/gitweb.cgi?p=ppl/ppl.git;a=commit;h=33f20542b9b6d...
Author: Roberto Amadini r.amadini@virgilio.it Date: Thu Sep 17 14:02:50 2009 +0200
Added and modified tests.
---
tests/Floating_Point_Expression/refinelf1.cc | 81 +++++++++++++++++++++++++- 1 files changed, 79 insertions(+), 2 deletions(-)
diff --git a/tests/Floating_Point_Expression/refinelf1.cc b/tests/Floating_Point_Expression/refinelf1.cc index a866e3c..d639016 100644 --- a/tests/Floating_Point_Expression/refinelf1.cc +++ b/tests/Floating_Point_Expression/refinelf1.cc @@ -63,7 +63,7 @@ test01() { return ok1 && ok2; }
-// tests [-1, 2] <= [-4, -1] + A +// tests [-1, 2] <= [-4, -1] + A and [-4, -1] + A <= [-1, 2] bool test02() { Variable A(0); @@ -85,17 +85,94 @@ test02() {
Octagonal_Shape<float> known_result(oc1); known_result.add_constraint(-A <= 0); + print_constraints(known_result, "*** known_result1 ***"); + + bool ok1 = (oc1 == known_result); + + oc1.refine_with_linear_form_inequality(l2, l1); + print_constraints(oc1, "*** [-4, -1] + A <= [-1, 2] ***"); + + known_result.add_constraint(A <= 6); + print_constraints(known_result, "*** known_result2 ***"); + + bool ok2 = (oc1 == known_result); + + return ok1 && ok2; + +} + +// tests [3.5, 6] <= [-2.5, 0] - A and [-2.5, 0] - A <= [3.5, 6] +bool +test03() { + Variable A(0); + Variable B(1); + + Octagonal_Shape<double> oc1(3); + oc1.add_constraint(A <= 2); + oc1.add_constraint(A - B <= 3); + oc1.add_constraint(B <= 2); + db_r_oc tmp(3.5); + tmp.join_assign(6); + Linear_Form<db_r_oc> l1(tmp); + Linear_Form<db_r_oc> l2(-A); + tmp.lower() = -2.5; + tmp.upper() = 0; + l2 += tmp; + oc1.refine_with_linear_form_inequality(l1, l2); + print_constraints(oc1, "*** [3.5, 6] <= [-2.5, 0] - A ***"); + + Octagonal_Shape<double> known_result(oc1); + known_result.add_constraint(2*A <= -7); + print_constraints(known_result, "*** known_result ***"); + + bool ok1 = (oc1 == known_result); + + oc1.refine_with_linear_form_inequality(l2, l1); + print_constraints(oc1, "*** [-2.5, 0] - A <= [3.5, 6] ***"); + + known_result.add_constraint(2*A >= -17); + print_constraints(known_result, "*** known_result2 ***"); + + bool ok2 = (oc1 == known_result); + + return ok1 && ok2; + +} +/* +// tests [3.5, 6] <= [-2.5, 0] + A +bool +test03() { + Variable A(0); + Variable B(1); + + Octagonal_Shape<double> oc1(3); + oc1.add_constraint(A <= 2); + oc1.add_constraint(A - B <= 3); + oc1.add_constraint(B <= 2); + db_r_oc tmp(3.5); + tmp.join_assign(6); + Linear_Form<db_r_oc> l1(tmp); + Linear_Form<db_r_oc> l2(-A); + tmp.lower() = -2.5; + tmp.upper() = 0; + l2 += tmp; + oc1.refine_with_linear_form_inequality(l1, l2); + print_constraints(oc1, "*** [3.5, 6] <= [-2.5, 0] + A ***"); + + Octagonal_Shape<double> known_result(oc1); + known_result.add_constraint(A <= -3.5); print_constraints(known_result, "*** known_result ***");
bool ok = (oc1 == known_result);
return ok;
-} +} */
} //namespace
BEGIN_MAIN DO_TEST(test01); DO_TEST(test02); + DO_TEST(test03); END_MAIN