package wire

  1. Overview
  2. Docs
Binary wire format DSL with EverParse 3D output

Install

dune-project
 Dependency

Authors

Maintainers

Sources

wire-0.9.0.tbz
sha256=dfd1fd578e84bd652ddb0064b3ee87d47780cc62e24180f3e5a92413bafad87a
sha512=125ada27127533b6130885d7b62f31c7ad4fc355a236258326b85c12792031c95d84fe68751264402f2efa7e09d70dd8bb5d06660e9a416e71a9a140f9658ed1

doc/wire.diff/Wire_diff/index.html

Module Wire_diffSource

Differential testing: one Wire.Codec.t against external C behaviour.

A diff test keeps the codec as the single OCaml authority and compares it against C read/write functions, typically backed by EverParse-generated code.

Sourcetype result =
  1. | Match
  2. | Both_failed
  3. | Value_mismatch of string
  4. | Only_c_ok of string
  5. | Only_ocaml_ok of string
Sourcetype t = {
  1. name : string;
  2. wire_size : int;
  3. test_read : string -> result;
  4. test_write : string -> result;
  5. test_roundtrip : string -> result;
}

A type-erased diff test.

Sourceval harness : name:string -> codec:'r Wire.Codec.t -> read:(string -> 'a option) -> write:('a -> string option) -> project:('r -> 'a) -> equal:('a -> 'a -> bool) -> ?ocaml_read:(string -> 'a option) -> unit -> t

harness ~name ~codec ~read ~write ~project ~equal ?ocaml_read () creates a diff test comparing an OCaml codec against external read/write functions.

The test compares both implementations in a single semantic domain 'a: project maps OCaml-decoded values into that domain, read extracts an external value from wire bytes, and write serializes a value in that same domain back to wire bytes. ocaml_read, when provided, overrides the default OCaml byte-reading path derived from codec and project.