Hegel_janeJane 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.generatordates ?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.generatorofdays ?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].
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.generatortimes ?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.generatortime_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.generatorhash_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.
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 ... endAuxiliary submodule for @@deriving hegel_generator for Core generators.