--- /dev/null
+(* Test functions which construct and extract fixed-length ints
+ * of various sizes.
+ * $Id$
+ *)
+
+open Printf
+
+open Bitstring
+
+let () =
+ for i = 0 to 129 do
+ let zeroes = zeroes_bitstring i in
+ let bits = (
+ BITSTRING {
+ zeroes : i : bitstring;
+ true : 1;
+ 2 : 2 : littleendian;
+ 2 : 2 : bigendian;
+ 2 : 2 : nativeendian;
+ 3 : 3 : littleendian;
+ 3 : 3 : bigendian;
+ 3 : 3 : nativeendian;
+ 0x5a : 8 : littleendian;
+ 0x5a : 8 : bigendian;
+ 0x5a : 8 : nativeendian;
+ 0xa5a5 : 16 : littleendian;
+ 0xa5a5 : 16 : bigendian;
+ 0xa5a5 : 16 : nativeendian;
+ 0xeeddcc : 24 : littleendian;
+ 0xeeddcc : 24 : bigendian;
+ 0xeeddcc : 24 : nativeendian;
+ 0x48888888 : 31 : littleendian;
+ 0x48888888 : 31 : bigendian;
+ 0x48888888 : 31 : nativeendian;
+ 0xaabbccdd_l : 32 : littleendian;
+ 0xaabbccdd_l : 32 : bigendian;
+ 0xaabbccdd_l : 32 : nativeendian;
+ 0xaabbccddeeff_L : 48 : littleendian;
+ 0xaabbccddeeff_L : 48 : bigendian;
+ 0xaabbccddeeff_L : 48 : nativeendian;
+ 0x0011aabbccddeeff_L : 64 : littleendian;
+ 0x0011aabbccddeeff_L : 64 : bigendian;
+ 0x0011aabbccddeeff_L : 64 : nativeendian
+ }
+ ) in
+ bitmatch bits with
+ | { _ : i : bitstring;
+ a : 1;
+ b0 : 2 : littleendian;
+ b1 : 2 : bigendian;
+ b2 : 2 : nativeendian;
+ c0 : 3 : littleendian;
+ c1 : 3 : bigendian;
+ c2 : 3 : nativeendian;
+ d0 : 8 : littleendian;
+ d1 : 8 : bigendian;
+ d2 : 8 : nativeendian;
+ e0 : 16 : littleendian;
+ e1 : 16 : bigendian;
+ e2 : 16 : nativeendian;
+ f0 : 24 : littleendian;
+ f1 : 24 : bigendian;
+ f2 : 24 : nativeendian;
+ g0 : 31 : littleendian;
+ g1 : 31 : bigendian;
+ g2 : 31 : nativeendian;
+ h0 : 32 : littleendian;
+ h1 : 32 : bigendian;
+ h2 : 32 : nativeendian;
+ j0 : 48 : littleendian;
+ j1 : 48 : bigendian;
+ j2 : 48 : nativeendian;
+ k0 : 64 : littleendian;
+ k1 : 64 : bigendian;
+ k2 : 64 : nativeendian
+ } ->
+ if a <> true
+ || b0 <> 2
+ || b1 <> 2
+ || b2 <> 2
+ || c0 <> 3
+ || c1 <> 3
+ || c2 <> 3
+ || d0 <> 0x5a
+ || d1 <> 0x5a
+ || d2 <> 0x5a
+ || e0 <> 0xa5a5
+ || e1 <> 0xa5a5
+ || e2 <> 0xa5a5
+ || f0 <> 0xeeddcc
+ || f1 <> 0xeeddcc
+ || f2 <> 0xeeddcc
+ || g0 <> 0x48888888
+ || g1 <> 0x48888888
+ || g2 <> 0x48888888
+ || h0 <> 0xaabbccdd_l
+ || h1 <> 0xaabbccdd_l
+ || h2 <> 0xaabbccdd_l
+ || j0 <> 0xaabbccddeeff_L
+ || j1 <> 0xaabbccddeeff_L
+ || j2 <> 0xaabbccddeeff_L
+ || k0 <> 0x0011aabbccddeeff_L
+ || k1 <> 0x0011aabbccddeeff_L
+ || k2 <> 0x0011aabbccddeeff_L
+ then (
+ eprintf "15_extract_int: match failed %b %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %ld %ld %ld %Ld %Ld %Ld %Ld %Ld %Ld\n"
+ a b0 b1 b2 c0 c1 c2 d0 d1 d2 e0 e1 e2 f0 f1 f2 g0 g1 g2 h0 h1 h2 j0 j1 j2 k0 k1 k2;
+ exit 1
+ )
+ | { _ } ->
+ failwith "15_extract_int"
+ done