summaryrefslogtreecommitdiff
path: root/lib/name.ml
diff options
context:
space:
mode:
authorยท๐‘‘๐‘ด๐‘•๐‘‘๐‘ฉ๐‘ค2025-12-10 19:13:33 +0000
committerยท๐‘‘๐‘ด๐‘•๐‘‘๐‘ฉ๐‘ค2025-12-10 19:13:33 +0000
commitdac55b99fb5aa7008e2f7f1c981096912b0441aa (patch)
tree0b1895980f71d8cfd351660e22ef25d106a98057 /lib/name.ml
parentaad71a2f2d3fd12e2388bed64ba5284147202f73 (diff)
downloadnixtaml-dac55b99fb5aa7008e2f7f1c981096912b0441aa.tar
nixtaml-dac55b99fb5aa7008e2f7f1c981096912b0441aa.tar.gz
nixtaml-dac55b99fb5aa7008e2f7f1c981096912b0441aa.tar.bz2
nixtaml-dac55b99fb5aa7008e2f7f1c981096912b0441aa.tar.lz
nixtaml-dac55b99fb5aa7008e2f7f1c981096912b0441aa.tar.xz
nixtaml-dac55b99fb5aa7008e2f7f1c981096912b0441aa.tar.zst
nixtaml-dac55b99fb5aa7008e2f7f1c981096912b0441aa.zip
set up QCheck
Diffstat (limited to 'lib/name.ml')
-rw-r--r--lib/name.ml18
1 files changed, 17 insertions, 1 deletions
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