--- /dev/null
+(* 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