aboutsummaryrefslogtreecommitdiff
path: root/test/test_mass_formulary.ml
blob: 824e0c71bebb494cce70830c863280ed7895892f (plain) (blame)
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
29
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 ] )