Test the hexdump function.
[ocaml-bitstring.git] / tests / 35_load_from_file.ml
1 (* Test the various functions to load bitstrings from files.
2  * $Id$
3  *)
4
5 open Printf
6 open Bitstring
7
8 let () =
9   let bits1 =
10     let b1 = make_bitstring 800 '\x5a' in
11     let b2 = make_bitstring 400 '\x88' in (
12       BITSTRING {
13         b1 : 800 : bitstring;
14         b2 : 400 : bitstring
15       }
16     ) in
17   let bits2 = (
18     let b = make_bitstring 800 '\xaa' in
19     BITSTRING {
20       b : 800 : bitstring
21     }
22   ) in
23   let bits = concat [bits1; bits2] in
24   let filename, chan =
25     Filename.open_temp_file ~mode:[Open_binary] "bitstring_test" ".tmp" in
26   bitstring_to_chan bits chan;
27   close_out chan;
28
29   let bits' = bitstring_of_file filename in
30   assert (equals bits bits');
31
32   let chan = open_in filename in
33   let bits' = bitstring_of_chan chan in
34   close_in chan;
35   assert (equals bits bits');
36
37   let chan = open_in filename in
38   let bits' = bitstring_of_chan_max chan 150 in
39   assert (equals bits1 bits');
40   let bits' = bitstring_of_chan_max chan 100 in
41   assert (equals bits2 bits');
42   close_in chan;
43
44   let fd = Unix.openfile filename [Unix.O_RDONLY] 0 in
45   let bits' = bitstring_of_file_descr fd in
46   Unix.close fd;
47   assert (equals bits bits');
48
49   let fd = Unix.openfile filename [Unix.O_RDONLY] 0 in
50   let bits' = bitstring_of_file_descr_max fd 150 in
51   assert (equals bits1 bits');
52   let bits' = bitstring_of_file_descr_max fd 100 in
53   assert (equals bits2 bits');
54   Unix.close fd;
55
56   Unix.unlink filename