From dac55b99fb5aa7008e2f7f1c981096912b0441aa Mon Sep 17 00:00:00 2001 From: ยท๐‘‘๐‘ด๐‘•๐‘‘๐‘ฉ๐‘ค Date: Wed, 10 Dec 2025 19:13:33 +0000 Subject: set up QCheck --- lib/name.ml | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) (limited to 'lib/name.ml') diff --git a/lib/name.ml b/lib/name.ml index 4abebfe..dfc338c 100644 --- a/lib/name.ml +++ b/lib/name.ml @@ -6,7 +6,7 @@ module Name = struct type t = Name of string [@@unboxed] - [@@deriving eq] + [@@deriving eq, qcheck] let [@inline]make n = Name n let [@inline]take (Name n) = n @@ -36,8 +36,18 @@ module NameHashtbl : sig end = Hashtbl.Make(struct type t = Name.t + let equal = Name.equal + let hash n = Hashtbl.hash (Name.take n) + + let gen gen_val = + let open QCheck.Gen in + let* n = int_bound 32 in + let* vals = list_size (return n) (pair Name.gen gen_val) in + let htbl = Hashtbl.create n in + List.iter (fun (k, v) -> Hashtbl.add htbl k v) vals; + return htbl end) module NameMap = struct @@ -57,6 +67,12 @@ module NameMap = struct fmt (bindings map) + let gen gen_val = + let open QCheck.Gen in + let* n = int_bound 32 in + let* vals = list_size (return n) (pair Name.gen gen_val) in + return (List.fold_left (fun m (k, v) -> Impl.add k v m) Impl.empty vals) + let jsont ?kind ?doc (type' : 'a Jsont.t) : 'a t Jsont.t = let name_map = let dec_empty () = empty -- cgit v1.2.3