Add tests for compare, load, etc.
[ocaml-bitstring.git] / tests / 35_load_from_file.ml
diff --git a/tests/35_load_from_file.ml b/tests/35_load_from_file.ml
new file mode 100644 (file)
index 0000000..849d2f1
--- /dev/null
@@ -0,0 +1,56 @@
+(* Test the various functions to load bitstrings from files.
+ * $Id$
+ *)
+
+open Printf
+open Bitstring
+
+let () =
+  let bits1 =
+    let b1 = make_bitstring 800 '\x5a' in
+    let b2 = make_bitstring 400 '\x88' in (
+      BITSTRING {
+       b1 : 800 : bitstring;
+       b2 : 400 : bitstring
+      }
+    ) in
+  let bits2 = (
+    let b = make_bitstring 800 '\xaa' in
+    BITSTRING {
+      b : 800 : bitstring
+    }
+  ) in
+  let bits = concat [bits1; bits2] in
+  let filename, chan =
+    Filename.open_temp_file ~mode:[Open_binary] "bitstring_test" ".tmp" in
+  bitstring_to_chan bits chan;
+  close_out chan;
+
+  let bits' = bitstring_of_file filename in
+  assert (equals bits bits');
+
+  let chan = open_in filename in
+  let bits' = bitstring_of_chan chan in
+  close_in chan;
+  assert (equals bits bits');
+
+  let chan = open_in filename in
+  let bits' = bitstring_of_chan_max chan 150 in
+  assert (equals bits1 bits');
+  let bits' = bitstring_of_chan_max chan 100 in
+  assert (equals bits2 bits');
+  close_in chan;
+
+  let fd = Unix.openfile filename [Unix.O_RDONLY] 0 in
+  let bits' = bitstring_of_file_descr fd in
+  Unix.close fd;
+  assert (equals bits bits');
+
+  let fd = Unix.openfile filename [Unix.O_RDONLY] 0 in
+  let bits' = bitstring_of_file_descr_max fd 150 in
+  assert (equals bits1 bits');
+  let bits' = bitstring_of_file_descr_max fd 100 in
+  assert (equals bits2 bits');
+  Unix.close fd;
+
+  Unix.unlink filename