X-Git-Url: http://git.annexia.org/?a=blobdiff_plain;ds=sidebyside;f=tests%2F35_load_from_file.ml;fp=tests%2F35_load_from_file.ml;h=849d2f1644065f189340d368f2d1ff89833be9c6;hb=1166b927019e6332610d64fd5ab6a561438fea27;hp=0000000000000000000000000000000000000000;hpb=15990b118da35f54e5536b9d10bb7d4bac33a29b;p=ocaml-bitstring.git diff --git a/tests/35_load_from_file.ml b/tests/35_load_from_file.ml new file mode 100644 index 0000000..849d2f1 --- /dev/null +++ b/tests/35_load_from_file.ml @@ -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