Endianness expressions.
[ocaml-bitstring.git] / tests / 40_endianexpr.ml
diff --git a/tests/40_endianexpr.ml b/tests/40_endianexpr.ml
new file mode 100644 (file)
index 0000000..2ebc55b
--- /dev/null
@@ -0,0 +1,35 @@
+(* Endianness expressions
+ * $Id$
+ *)
+
+open Printf
+open Bitmatch
+
+let () =
+  let rec loop = function
+    | (e, expected) :: rest ->
+       let bits = BITSTRING {
+         expected : 32 : endian (e);
+         expected : 32 : endian (e);
+         expected : 32 : endian (e)
+       } in
+       (bitmatch bits with
+        | { actual : 32 : endian (e);
+            actual : 32 : endian (e);
+            actual : 32 : endian (e) } ->
+            if actual <> expected then
+              failwith (sprintf "actual %ld <> expected %ld" actual expected)
+        | { _ } as bits ->
+            hexdump_bitstring stderr bits; exit 1
+       );
+       loop rest
+    | [] -> ()
+  in
+  loop [
+    BigEndian, 0xa1b2c3d4_l;
+    BigEndian, 0xa1d4c3b2_l;
+    LittleEndian, 0xa1b2c3d4_l;
+    LittleEndian, 0xa1d4c3b2_l;
+    NativeEndian, 0xa1b2c3d4_l;
+    NativeEndian, 0xa1d4c3b2_l;
+  ]