Module Hegel_jane

Jane Street Core companion library for Hegel (hegel.jane).

It requires the core and sexp_diff opam packages. Each typed generator draws through the corresponding hegel generator and converts the result.

To use hegel.jane, add hegel.jane and core to your dune libraries:

test
  (name my_tests)
  (libraries hegel hegel.jane core alcotest)
  (preprocess (pps ppx_hegel_test))

Then draw Core values directly:

open Hegel

(* Optional: show a structural [sexp_diff] on [require_equal] failures. *)
let () = Hegel_jane.set_sexp_diff ()

let%hegel_test dates_are_in_range tc =
  let d = draw tc (Hegel_jane.dates ()) in
  assert (Core.Date.year d >= 1 && Core.Date.year d <= 9999)
;;
val dates : ?min_date:Core.Date.t -> ?max_date:Core.Date.t -> unit -> (Core.Date.t, Hegel.printable) Hegel.generator

dates ?min_date ?max_date () creates a generator for Core.Date.t values in [min_date, max_date]. The default range is [0001-01-01, 9999-12-31].

val ofdays : ?min_ofday:Core.Time_ns.Ofday.t -> ?max_ofday:Core.Time_ns.Ofday.t -> unit -> (Core.Time_ns.Ofday.t, Hegel.printable) Hegel.generator

ofdays ?min_ofday ?max_ofday () creates a generator for Core.Time_ns.Ofday.t values in [min_ofday, max_ofday]. The default range is [00:00:00.000000000, 24:00:00.000000000].

val chars : unit -> (Core.Char.t, Hegel.printable) Hegel.generator

chars () creates a generator for single characters (codepoints 0-255, i.e. Latin-1) as Core.Char.t values.

val times : ?min_time:Core.Time_ns.t -> ?max_time:Core.Time_ns.t -> unit -> (Core.Time_ns.t, Hegel.printable) Hegel.generator

times ?min_time ?max_time () creates a generator for Core.Time_ns.t values in [min_time, max_time]. The default range is the full representable range: [1823-11-12T00:06:21.572612096Z, 2116-02-20T23:53:38.427387903Z].

val time_spans : ?min_span:Core.Time_ns.Span.t -> ?max_span:Core.Time_ns.Span.t -> unit -> (Core.Time_ns.Span.t, Hegel.printable) Hegel.generator

time_spans ?min_span ?max_span () creates a generator for Core.Time_ns.Span.t values in [min_span, max_span]. The default range is the full representable range: [-53375d23h53m38.427387904s, 53375d23h53m38.427387903s].

val hash_tables : ('a, Hegel.printable) Hegel.generator -> ('b, Hegel.printable) Hegel.generator -> ?min_size:int -> ?max_size:int -> unit -> (('a, 'b) Core.Hashtbl.Poly.t, Hegel.printable) Hegel.generator

hash_tables keys values ?min_size ?max_size () creates a generator for polymorphic Core.Hashtbl.t tables over printable keys and values. Hegel.make_hash_tables closed over Core.Hashtbl.

val set_sexp_diff : unit -> unit

set_sexp_diff () makes Hegel.require_equal failures print a structural sexp_diff diff instead of the default both-values rendering. Call it once. It stays installed for the rest of the process.

module Derive : sig ... end

Auxiliary submodule for @@deriving hegel_generator for Core generators.