]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/hbugs/test/test_serialization.ml
added 'test' dir with a serialization/deserialization test for messages
[helm.git] / helm / hbugs / test / test_serialization.ml
diff --git a/helm/hbugs/test/test_serialization.ml b/helm/hbugs/test/test_serialization.ml
new file mode 100644 (file)
index 0000000..bc78e1c
--- /dev/null
@@ -0,0 +1,48 @@
+(*
+ *  Copyright (C) 2003, HELM Team.
+ *
+ *  This file is part of HELM, an Hypertextual, Electronic
+ *  Library of Mathematics, developed at the Computer Science
+ *  Department, University of Bologna, Italy.
+ *
+ *  HELM 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 2
+ *  of the License, or (at your option) any later version.
+ *
+ *  HELM 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 HELM; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place - Suite 330, Boston,
+ *  MA  02111-1307, USA.
+ *
+ *  For details, see the HELM World-Wide-Web page,
+ *  http://cs.unibo.it/helm/.
+ *)
+
+(* test serialization/deserialization of Hbugs_messages module. File given as
+cmd line argument is read line by line, each line is expected to contain a
+Hbugs_types.message that is parsed, pretty printed and parsed again to check for
+serialization consistency *)
+open Printf;;
+let fname = Sys.argv.(1) in
+let ic = open_in fname in
+let lineno = ref 1 in
+try
+  while true do
+    let line = input_line ic in
+    let msg = Hbugs_messages.msg_of_string line in
+    let pp = Hbugs_messages.string_of_msg msg in
+    let msg' = Hbugs_messages.msg_of_string pp in
+    assert (msg = msg');
+    incr lineno
+  done
+with
+| End_of_file -> prerr_endline "All done!"
+| exc ->
+    prerr_endline
+      (sprintf "Failure at line %d: %s" !lineno (Printexc.to_string exc))