Improved test.
[ocaml-bitstring.git] / tests / 40_endianexpr.ml
1 (* Endianness expressions
2  * $Id$
3  *)
4
5 open Printf
6 open Bitmatch
7
8 let () =
9   let rec loop = function
10     | (e, expected) :: rest ->
11         let bits = BITSTRING {
12           expected : 32 : endian (e);
13           expected : 32 : endian (e);
14           expected : 32 : endian (e)
15         } in
16         (bitmatch bits with
17          | { actual : 32 : endian (e);
18              actual : 32 : endian (e);
19              actual : 32 : endian (e) } ->
20              if actual <> expected then
21                failwith (sprintf "actual %ld <> expected %ld" actual expected)
22          | { _ } as bits ->
23              hexdump_bitstring stderr bits; exit 1
24         );
25         loop rest
26     | [] -> ()
27   in
28   loop [
29     BigEndian, 0xa1b2c3d4_l;
30     BigEndian, 0xa1d4c3b2_l;
31     LittleEndian, 0xa1b2c3d4_l;
32     LittleEndian, 0xa1d4c3b2_l;
33     NativeEndian, 0xa1b2c3d4_l;
34     NativeEndian, 0xa1d4c3b2_l;
35   ]