Add signed int extract and construction functions, and test.
[ocaml-bitstring.git] / t14_signed_byte_match.ml
1 let a n =
2   let n' = 1 lsl (pred n) in
3     Array.to_list (Array.init (n' lsl 1) (fun i -> i-n'))
4
5 let t s i =
6     List.fold_left 
7       (fun ok n -> s n = n && ok )
8       true
9       (a i);;
10
11 let ok = fst (List.fold_left (fun (ok,i) s ->
12                     t s i && ok, succ i) (true, 2)
13 [
14   (fun n -> bitmatch BITSTRING { n : 2 : signed } with { i : 2 : signed } -> i | { _ } -> assert false); 
15   (fun n -> bitmatch BITSTRING { n : 3 : signed } with { i : 3 : signed } -> i | { _ } -> assert false);
16   (fun n -> bitmatch BITSTRING { n : 4 : signed } with { i : 4 : signed } -> i | { _ } -> assert false);
17   (fun n -> bitmatch BITSTRING { n : 5 : signed } with { i : 5 : signed } -> i | { _ } -> assert false);
18   (fun n -> bitmatch BITSTRING { n : 6 : signed } with { i : 6 : signed } -> i | { _ } -> assert false);
19   (fun n -> bitmatch BITSTRING { n : 7 : signed } with { i : 7 : signed } -> i | { _ } -> assert false); 
20   (fun n -> bitmatch BITSTRING { n : 8 : signed } with { i : 8 : signed } -> i | { _ } -> assert false);
21 ])
22
23 in
24 if not ok then
25   failwith("t13_signed_byte_create: failed")
26
27