diff --git a/tests/core/t_cbor.ml b/tests/core/t_cbor.ml index 17527159..bf45f6c3 100644 --- a/tests/core/t_cbor.ml +++ b/tests/core/t_cbor.ml @@ -101,10 +101,25 @@ let rec shrink (c : Cbor.t) : Cbor.t Q.Iter.t = let arb = Q.make ~shrink ~print:Cbor.to_string_diagnostic gen_c;; +let rec eq_c c c' = match c,c' with + | `Null, `Null + | `Undefined, `Undefined -> true + | `Simple i, `Simple i' -> Int.equal i i' + | `Bool b, `Bool b' -> Bool.equal b b' + | `Int i, `Int i' -> Int64.equal i i' + | `Float f, `Float f' -> Float.equal f f' + | `Bytes s, `Bytes s' -> String.equal s s' + | `Text t, `Text t' -> String.equal t t' + | `Array a, `Array a' -> List.equal eq_c a a' + | `Map m, `Map m' -> + List.equal (fun (t0,t1) (t0',t1') -> eq_c t0 t0' && eq_c t1 t1') m m' + | `Tag (i,t), `Tag (i',t') -> Int.equal i i' && eq_c t t' + | _ -> false;; + q ~count:1_000 ~long_factor:10 arb @@ fun c -> let s = Cbor.encode c in let c' = Cbor.decode_exn s in -if not (c = c') then +if not (eq_c c c') then Q.Test.fail_reportf "@[roundtrip failed:@ from %a@ to %a@]" Cbor.pp_diagnostic c Cbor.pp_diagnostic c'; true