summaryrefslogtreecommitdiff
path: root/lib/uTF8.ml
blob: 867046ff44567ca79a32e7b7d742af64b30ad354 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
(*─────────────────────────────────────────────────────────────────────────────┐
│ SPDX-FileCopyrightText: 2025 toastal <https://toast.al/contact/>             │
│ SPDX-License-Identifier: LGPL-2.1-or-later WITH OCaml-LGPL-linking-exception │
└─────────────────────────────────────────────────────────────────────────────*)
(* Extending Camomile *)
include Camomile.UTF8

let equal a b = compare a b = 0

let pp ppf str = Fmt.pf ppf "%s" str

let gen_uchar : Camomile.UChar.t QCheck.Gen.t =
	let open QCheck.Gen in
	let* i =
		oneof [
			int_range 0 0xD7FF;
			int_range 0xE000 0x10FFFF;
		];
	in
	return (Camomile.UChar.of_int i)

let gen : t QCheck.Gen.t =
	let open QCheck.Gen in
	let* size = int_bound 40 in
	let* chars = list_size (return size) gen_uchar in
	let buf = Buf.create size in
	List.iter (fun u -> Buf.add_char buf u) chars;
	return (Buf.contents buf)