let gen_sexp = let open! Crowbar in let ( >|= ) = map in fix (fun self -> choose [ (([ bytes ] : _ gens) >|= fun s -> `Atom s); ([ list self ] >|= fun l -> `List l); ]) let () = Crowbar.add_test ~name:"ccsexp_csexp_reparse" [ gen_sexp ] (fun s -> let str = CCCanonical_sexp.to_string s in match CCCanonical_sexp.parse_string_list str with | Ok [ s2 ] -> assert (s = s2) | Ok _ -> failwith "wrong number of sexps" | Error e -> failwith e)