[PPL-devel] [GIT] ppl/ppl(master): Overflow is expected for PIP_Problem tests with 8 bits coefficients.
Enea Zaffanella
zaffanella at cs.unipr.it
Thu Apr 15 14:02:02 CEST 2010
Module: ppl/ppl
Branch: master
Commit: baa72379c66f766c6ee6a6956e6f3f329cffeba7
URL: http://www.cs.unipr.it/git/gitweb.cgi?p=ppl/ppl.git;a=commit;h=baa72379c66f766c6ee6a6956e6f3f329cffeba7
Author: Enea Zaffanella <zaffanella at cs.unipr.it>
Date: Thu Apr 15 13:58:39 2010 +0200
Overflow is expected for PIP_Problem tests with 8 bits coefficients.
---
interfaces/OCaml/tests/test1.ml | 162 ++++++++++++++++++++++++---------------
1 files changed, 101 insertions(+), 61 deletions(-)
diff --git a/interfaces/OCaml/tests/test1.ml b/interfaces/OCaml/tests/test1.ml
index a3d84aa..e877d34 100644
--- a/interfaces/OCaml/tests/test1.ml
+++ b/interfaces/OCaml/tests/test1.ml
@@ -506,12 +506,21 @@ print_string_if_noisy "PIP_Problem_OK ";;
print_string_if_noisy "and PIP_Tree_Node_is_bottom \n";;
let pip = ppl_new_PIP_Problem 3
[e1 >=/ e2; e1 <=/ e2 -/ (linear_expression_of_int 7)] [2];;
-let ptree = ppl_PIP_Problem_solution pip;;
-let
- out = if (ppl_PIP_Problem_OK pip
- & ppl_PIP_Tree_Node_is_bottom ptree)
- then "success" else "failed"
- in (print_string_if_noisy out);;
+
+begin
+try
+ let ptree = ppl_PIP_Problem_solution pip
+ in let out = if (ppl_PIP_Problem_OK pip & ppl_PIP_Tree_Node_is_bottom ptree)
+ then "success" else "failed"
+ in (print_string_if_noisy out)
+with PPL_arithmetic_overflow what ->
+ let unexpected = (ppl_Coefficient_bits() != 8)
+ in if (unexpected)
+ then raise (PPL_arithmetic_overflow(what));
+ print_string_if_noisy "Expected overflow exception caught: ";
+ print_string_if_noisy what;
+ print_string_if_noisy "\n"
+end;;
print_string_if_noisy "\n";;
print_string_if_noisy "PIP_Problem 2 \n";;
@@ -542,22 +551,31 @@ let out = if (not b0 & b1 & (big_par = 7))
else "ppl_PIP_Problem big parameter dimension tests failed"
in (print_string_if_noisy out);;
print_string_if_noisy "\n";;
-let out = if (ppl_PIP_Problem_is_satisfiable pip2)
- then "ppl_PIP_Problem_is_satisfiable test succeeded"
- else "ppl_PIP_Problem_is_satisfiable test failed"
- in (print_string_if_noisy out);;
-print_string_if_noisy "\n";;
-print_string_if_noisy "testing ppl_PIP_Problem_ascii_dump: " ;;
-(* print_string_if_noisy (ppl_PIP_Problem_ascii_dump pip2);; *)
-print_string_if_noisy "\n";;
-let ptree2 = ppl_PIP_Problem_solution pip2;;
-let _r = ppl_PIP_Problem_OK pip2;;
-print_string_if_noisy "\n";;
-let out = if (ppl_PIP_Tree_Node_is_bottom ptree2)
- then "ppl_PIP_Tree_Node_is_bottom test succeeded"
- else "ppl_PIP_Tree_Node_is_bottom test failed"
- in (print_string_if_noisy out);;
-print_string_if_noisy "\n";;
+
+begin
+try
+ let out = if (ppl_PIP_Problem_is_satisfiable pip2)
+ then "ppl_PIP_Problem_is_satisfiable test succeeded"
+ else "ppl_PIP_Problem_is_satisfiable test failed"
+ in (print_string_if_noisy out);
+ print_string_if_noisy "\n";
+ print_string_if_noisy "testing ppl_PIP_Problem_ascii_dump: ";
+ print_string_if_noisy (ppl_PIP_Problem_ascii_dump pip2);
+ print_string_if_noisy "\n";
+ let ptree2 = ppl_PIP_Problem_solution pip2
+ in let out2 = if (ppl_PIP_Tree_Node_is_bottom ptree2)
+ then "ppl_PIP_Tree_Node_is_bottom test succeeded"
+ else "ppl_PIP_Tree_Node_is_bottom test failed"
+ in (print_string_if_noisy out2);
+ print_string_if_noisy "\n"
+with PPL_arithmetic_overflow what ->
+ let unexpected = (ppl_Coefficient_bits() != 8)
+ in if (unexpected)
+ then raise (PPL_arithmetic_overflow(what));
+ print_string_if_noisy "Expected overflow exception caught: ";
+ print_string_if_noisy what;
+ print_string_if_noisy "\n"
+end;;
print_string_if_noisy "\nPIP_Problem 3 \n";;
let i = Variable 0
@@ -583,45 +601,67 @@ let pip_cs = [pip_c1; pip_c2; pip_c3; pip_c4] ;;
let ps = [2; 3];;
let pip3 = ppl_new_PIP_Problem 4 pip_cs ps;;
-let result = ppl_PIP_Problem_solve pip3;;
-let out = if (result == Optimized_Pip_Problem)
- then "PIP Problem_solve pip3 test succeeded"
- else "PIP Problem_solve pip3 test failed"
- in (print_string_if_noisy out);;
-print_string_if_noisy "\n";;
-let node = ppl_PIP_Problem_solution pip3;;
-let out = if (ppl_PIP_Tree_Node_OK node)
- then "ppl_PIP_Tree_Node_OK node test succeeded"
- else "ppl_PIP_Tree_Node_OK node test failed"
- in (print_string_if_noisy out);;
-print_string_if_noisy "\n";;
-let out = if (ppl_PIP_Tree_Node_is_decision node)
- then "ppl_PIP_Tree_Node_is_decision node test succeeded"
- else "ppl_PIP_Tree_Node_is_decision node test failed"
- in (print_string_if_noisy out);;
-print_string_if_noisy "\n";;
-let out = if (ppl_PIP_Tree_Node_artificials node = [])
- then "ppl_PIP_Tree_Node_artificials node test succeeded"
- else "ppl_PIP_Tree_Node_artificials node test failed"
- in (print_string_if_noisy out);;
-print_string_if_noisy "\n";;
-let _node_cs = ppl_PIP_Tree_Node_constraints node;;
-let tchild = ppl_PIP_Tree_Node_true_child node;;
-let _fchild = ppl_PIP_Tree_Node_false_child node;;
-let out = if (ppl_PIP_Tree_Node_is_decision tchild)
- then "ppl_PIP_Tree_Node_is_decision tchild test succeeded"
- else "ppl_PIP_Tree_Node_is_decision tchild test failed"
- in (print_string_if_noisy out);;
-print_string_if_noisy "\n";;
-let ttchild = ppl_PIP_Tree_Node_true_child tchild;;
-let ftchild = ppl_PIP_Tree_Node_false_child tchild;;
-let out = if (ppl_PIP_Tree_Node_is_solution ttchild)
- then "ppl_PIP_Tree_Node_is_decision ttchild test succeeded"
- else "ppl_PIP_Tree_Node_is_decision ttchild test failed"
- in (print_string_if_noisy out);;
-print_string_if_noisy "\n";;
-let _par_vals = ppl_PIP_Tree_Node_parametric_values ttchild 0;;
-let _ftchild_arts = ppl_PIP_Tree_Node_artificials ftchild;;
+
+begin
+try
+ let result = ppl_PIP_Problem_solve pip3 in
+ let out = if (result == Optimized_Pip_Problem)
+ then "PIP Problem_solve pip3 test succeeded"
+ else "PIP Problem_solve pip3 test failed"
+ in (print_string_if_noisy out);
+ print_string_if_noisy "\n";
+ let node = ppl_PIP_Problem_solution pip3 in
+ begin
+ let out = if (ppl_PIP_Tree_Node_OK node)
+ then "ppl_PIP_Tree_Node_OK node test succeeded"
+ else "ppl_PIP_Tree_Node_OK node test failed"
+ in (print_string_if_noisy out);
+ print_string_if_noisy "\n";
+ let out = if (ppl_PIP_Tree_Node_is_decision node)
+ then "ppl_PIP_Tree_Node_is_decision node test succeeded"
+ else "ppl_PIP_Tree_Node_is_decision node test failed"
+ in (print_string_if_noisy out);
+ print_string_if_noisy "\n";
+ let out = if (ppl_PIP_Tree_Node_artificials node = [])
+ then "ppl_PIP_Tree_Node_artificials node test succeeded"
+ else "ppl_PIP_Tree_Node_artificials node test failed"
+ in (print_string_if_noisy out);
+ print_string_if_noisy "\n";
+ let _node_cs = ppl_PIP_Tree_Node_constraints node in ();
+ let
+ _fchild = ppl_PIP_Tree_Node_false_child node
+ and
+ tchild = (ppl_PIP_Tree_Node_true_child node)
+ in (
+ let out = if (ppl_PIP_Tree_Node_is_decision tchild)
+ then "ppl_PIP_Tree_Node_is_decision tchild test succeeded"
+ else "ppl_PIP_Tree_Node_is_decision tchild test failed"
+ in (print_string_if_noisy out);
+ print_string_if_noisy "\n";
+ let
+ ttchild = (ppl_PIP_Tree_Node_true_child tchild)
+ and
+ ftchild = (ppl_PIP_Tree_Node_false_child tchild)
+ in (
+ let out = if (ppl_PIP_Tree_Node_is_solution ttchild)
+ then "ppl_PIP_Tree_Node_is_decision ttchild test succeeded"
+ else "ppl_PIP_Tree_Node_is_decision ttchild test failed"
+ in (print_string_if_noisy out);
+ print_string_if_noisy "\n";
+ let _par_vals = ppl_PIP_Tree_Node_parametric_values ttchild 0 in ();
+ let _ftchild_arts = ppl_PIP_Tree_Node_artificials ftchild in ()
+ )
+ );
+ print_string_if_noisy "\n"
+ end
+with PPL_arithmetic_overflow what ->
+ let unexpected = (ppl_Coefficient_bits() != 8)
+ in if (unexpected)
+ then raise (PPL_arithmetic_overflow(what));
+ print_string_if_noisy "Expected overflow exception caught: ";
+ print_string_if_noisy what;
+ print_string_if_noisy "\n"
+end;;
(* Pointset_Powerset_Grid is not enabled by default, the following code is *)
(* commented *)
More information about the PPL-devel
mailing list