From dcb82f007fc2ddc33852be50aba3890146a5203f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Thorsten=20Wi=C3=9Fmann?= <edu@thorsten-wissmann.de>
Date: Fri, 16 May 2014 21:04:53 +0200
Subject: [PATCH] Add statistics to testsuite output

---
 src/testsuite/Testsuite.ml      |  6 +++---
 src/testsuite/Testsuite.mli     |  2 +-
 src/testsuite/cool-testsuite.ml | 21 +++++++++++++++++----
 3 files changed, 21 insertions(+), 8 deletions(-)

diff --git a/src/testsuite/Testsuite.ml b/src/testsuite/Testsuite.ml
index 2b1dc92..0204bd9 100644
--- a/src/testsuite/Testsuite.ml
+++ b/src/testsuite/Testsuite.ml
@@ -50,11 +50,11 @@ let runSatCheckVerbose (sc:satCheck) =
     PF.printf "Is %-50s " (cs "1" title);
     PF.printf "%s?… " (sotr expectation);
     let res = runSatCheck sc in
-    if (res = expectation)
+    (if (res = expectation)
     then PF.printf "%s\n" (cs "1;32" "Yes")
     else PF.printf "%s, it is %s\n"
                     (cs "1;31" "No")
-                    (sotr res)
-
+                    (sotr res));
+    res
 
 
diff --git a/src/testsuite/Testsuite.mli b/src/testsuite/Testsuite.mli
index 2276f95..3b645f3 100644
--- a/src/testsuite/Testsuite.mli
+++ b/src/testsuite/Testsuite.mli
@@ -12,5 +12,5 @@ type testResult = | Sat
 type satCheck = testResult * (CoAlgMisc.sortTable) * string (* expected * functors * formula *)
 
 val runSatCheck : satCheck -> testResult
-val runSatCheckVerbose : satCheck -> unit
+val runSatCheckVerbose : satCheck -> testResult
 
diff --git a/src/testsuite/cool-testsuite.ml b/src/testsuite/cool-testsuite.ml
index 649a26b..a093b05 100644
--- a/src/testsuite/cool-testsuite.ml
+++ b/src/testsuite/cool-testsuite.ml
@@ -10,7 +10,6 @@ let kd  = [| (CM.MultiModalKD, [0]) |]
 let cl  = [| (CM.CoalitionLogic, [0]) |]
 let gml = [| (CM.GML, [0]) |]
 
-(* ============ multi modal K ============ *)
 let k_testcases: satCheck list =
     let c a b = (a,k,b) in
     [ c Sat   "True"
@@ -50,10 +49,24 @@ let testcases =
     ]
 
 let main =
+    let success = ref 0 in
+    let failed = ref 0 in
     foreach_l testcases (fun (name,table) ->
-        Printf.printf "\n==== Testing %s ====\n" name;
-        foreach_l table runSatCheckVerbose
-    )
+        Printf.printf "==== Testing %s ====\n" name;
+        foreach_l table (fun sc ->
+            let (expected,_,_) = sc in
+            let actual = runSatCheckVerbose sc in
+            (* compare the expected and the actual result *)
+            if actual = expected
+            then success := !success + 1
+            else failed := !failed + 1
+        );
+        Printf.printf "\n"
+    );
+    let s n = if n = 1 then "testcase" else "testcases" in
+    Printf.printf "=> %d %s succeeded, %d %s failed.\n"
+        !success (s !success)
+        !failed (s !failed)
 
 let _ = main
 
-- 
GitLab