]> matita.cs.unibo.it Git - helm.git/commitdiff
added 'test' dir with a serialization/deserialization test for messages
authorStefano Zacchiroli <zack@upsilon.cc>
Mon, 6 Jan 2003 18:34:57 +0000 (18:34 +0000)
committerStefano Zacchiroli <zack@upsilon.cc>
Mon, 6 Jan 2003 18:34:57 +0000 (18:34 +0000)
helm/hbugs/test/.cvsignore [new file with mode: 0644]
helm/hbugs/test/HBUGS_MESSAGES.xml [new file with mode: 0644]
helm/hbugs/test/Makefile [new file with mode: 0644]
helm/hbugs/test/messages_raw.xml [new file with mode: 0644]
helm/hbugs/test/test_serialization.ml [new file with mode: 0644]

diff --git a/helm/hbugs/test/.cvsignore b/helm/hbugs/test/.cvsignore
new file mode 100644 (file)
index 0000000..d9ed070
--- /dev/null
@@ -0,0 +1,7 @@
+*.cmi
+*.cmo
+*.cma
+*.cmx
+*.o
+*.a
+test_serialization
diff --git a/helm/hbugs/test/HBUGS_MESSAGES.xml b/helm/hbugs/test/HBUGS_MESSAGES.xml
new file mode 100644 (file)
index 0000000..f6ee836
--- /dev/null
@@ -0,0 +1,102 @@
+
+  <!-- general purpose -->
+
+<help />
+
+<usage>usage string</usage>
+
+<exception name='eccezione1'>corpo dell'exc</exception>
+
+  <!-- client -> broker -->
+
+<register_client id='client_id' url='client_url' />
+
+<unregister_client id='client_id' />
+
+<list_tutors id='client_id' />
+
+<subscribe id='client_id'>
+  <tutor id='tutor_id1' />
+  <tutor id='tutor_id2' />
+  <!-- .... -->
+  <tutor id='tutor_idN' />
+</subscribe>
+
+<state_change id='client_id'>
+  <!-- STATO -->
+</state_change>
+
+  <!-- tutor -> broker -->
+
+<register_tutor id='tutor_id' url='tutor_url'>
+  <hint_type>
+    <!-- HINT TYPE -->
+  </hint_type>
+  <description>
+    descrizione del tutor
+  </description>
+</register_tutor>
+
+<unregister_tutor id='tutor_id' />
+
+<musing_started id='tutor_id' musing_id='musing_id' />
+
+<musing_completed id='tutor_id' musing_id='musing_id'>
+  <!-- either -->
+  <sorry />
+
+  <!-- or -->
+  <eureka> extras </eureka>
+</musing_completed>
+
+  <!-- broker -> client -->
+
+<client_registered id='broker_id' />
+
+<client_unregistered id='broker_id' />
+
+<tutor_list id='broker_id'>
+  <tutor_dsc id='tutor_id1'> description 1 </tutor_dsc>
+  <tutor_dsc id='tutor_id2'> description 2 </tutor_dsc>
+  <!-- ... -->
+  <tutor_dsc id='tutor_idN'> description N </tutor_dsc>
+</tutor_list>
+
+<subscribed id='broker_id'>
+  <tutor_dsc id='tutor_id1'> description 1 </tutor_dsc>
+  <tutor_dsc id='tutor_id2'> description 2 </tutor_dsc>
+  <!-- ... -->
+  <tutor_dsc id='tutor_idN'> description N </tutor_dsc>
+</subscribed>
+
+<state_accepted id='broker_id'>
+  <stopped>
+    <musing id='musing_id1' />
+    <!-- ... -->
+    <musing id='musing_idN' />
+  </stopped>
+  <started>
+    <musing id='musing_id1' />
+    <!-- ... -->
+    <musing id='musing_idM' />
+  </started>
+</state_accepted>
+
+<hint id='broker_id'>
+  <!-- HINT parsata a seconda dell'hint type del tutor -->
+</hint>
+
+  <!-- broker -> tutor -->
+
+<tutor_registered id='broker_id' />
+
+<tutor_unregistered id='broker_id' />
+
+<start_musing id='broker_id'>
+  <!-- STATE -->
+</start_musing>
+
+<thanks id='broker_id' musing_id='musing_id' />
+
+<abort_musing id='broker_id' musing_id='musing_id' />
+
diff --git a/helm/hbugs/test/Makefile b/helm/hbugs/test/Makefile
new file mode 100644 (file)
index 0000000..9bd02bf
--- /dev/null
@@ -0,0 +1,4 @@
+all:
+       OCAMLPATH="../meta" ocamlfind ocamlc -linkpkg -package hbugs-common -o test_serialization test_serialization.ml
+clean:
+       rm -f *.cm[io] test_serialization
diff --git a/helm/hbugs/test/messages_raw.xml b/helm/hbugs/test/messages_raw.xml
new file mode 100644 (file)
index 0000000..98a956c
--- /dev/null
@@ -0,0 +1,25 @@
+<help />
+<usage>usage string</usage>
+<exception name='eccezione1'>corpo dell'exc</exception>
+<register_client id='client_id' url='client_url' />
+<unregister_client id='client_id' />
+<list_tutors id='client_id' />
+<subscribe id='client_id'> <tutor id='tutor_id1' /> <tutor id='tutor_id2' /> <!-- .... --> <tutor id='tutor_idN' /> </subscribe>
+<state_change id='client_id'> <!-- STATO --> </state_change>
+<register_tutor id='tutor_id' url='tutor_url'> <hint_type> <!-- HINT TYPE --> </hint_type> <description> descrizione del tutor </description> </register_tutor>
+<unregister_tutor id='tutor_id' />
+<musing_started id='tutor_id' musing_id='musing_id' />
+<musing_aborted id='tutor_id' musing_id='musing_id' />
+<musing_completed id='tutor_id' musing_id='musing_id'> <sorry /> </musing_completed>
+<musing_completed id='tutor_id' musing_id='musing_id'> <eureka> extras </eureka> </musing_completed>
+<client_registered id='broker_id' />
+<client_unregistered id='broker_id' />
+<tutor_list id='broker_id'> <tutor_dsc id='tutor_id1'> description 1 </tutor_dsc> <tutor_dsc id='tutor_id2'> description 2 </tutor_dsc> <!-- ... --> <tutor_dsc id='tutor_idN'> description N </tutor_dsc> </tutor_list>
+<subscribed id='broker_id'> <tutor_dsc id='tutor_id1'> description 1 </tutor_dsc> <tutor_dsc id='tutor_id2'> description 2 </tutor_dsc> <!-- ... --> <tutor_dsc id='tutor_idN'> description N </tutor_dsc> </subscribed>
+<state_accepted id='broker_id'> <stopped> <musing id='musing_id1' /> <!-- ... --> <musing id='musing_idN' /> </stopped> <started> <musing id='musing_id1' /> <!-- ... --> <musing id='musing_idM' /> </started> </state_accepted>
+<hint id='broker_id'> <!-- HINT parsata a seconda dell'hint type del tutor --> </hint>
+<tutor_registered id='broker_id' />
+<tutor_unregistered id='broker_id' />
+<start_musing id='broker_id'> <!-- STATE --> </start_musing>
+<thanks id='broker_id' musing_id='musing_id' />
+<abort_musing id='broker_id' musing_id='musing_id' />
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))