module MF = Colitur_kernel.Mass_formulary module Slug = Colitur_kernel.Slug let slug s = Slug.of_string_exn s let test_round_trips_through_sexp () = let f = { MF.said = slug "ef-time-after-pentecost-sunday-9"; via = MF.Preceding_sunday } in let f' = MF.t_of_sexp (MF.sexp_of_t f) in Alcotest.(check string) "slug survives" (Slug.to_string f.MF.said) (Slug.to_string f'.MF.said); Alcotest.(check bool) "source survives" true (f.MF.via = f'.MF.via) (* [to_string] is what an ordo line shows. It names the SOURCE, not the slug, because the slug is a key and the reader wants "of the preceding Sunday". *) let test_to_string_names_the_source () = let cases = [ (MF.Proper, "proper"); (MF.Own_slug, "own"); (MF.Preceding_sunday, "preceding-sunday"); (MF.Common, "common"); (MF.Votive, "votive") ] in List.iter (fun (via, expected) -> Alcotest.(check string) expected expected (MF.source_to_string via)) cases let suite = ( "Mass_formulary", [ Alcotest.test_case "sexp round-trips" `Quick test_round_trips_through_sexp; Alcotest.test_case "source_to_string names each source" `Quick test_to_string_names_the_source ] )