From fffae3b3cb50b1cf7d5b65eb592bfa1de2ed0e1c Mon Sep 17 00:00:00 2001 From: Lukasz Kasprzak Date: Tue, 11 Aug 2026 13:09:22 +0200 Subject: rite(ef): season and rank vocabulary per RG 71-77 and RG 8 Eight seasons in canonical liturgical-year order, each carrying its RG citation, and the four classes. season_slug_word is deliberately distinct from season_to_string: slugs are lectionary keys adopted verbatim from lectio, which calls Paschaltide 'easter' and Christmastide 'christmas'. --- test/dune | 2 +- test/test_colitur.ml | 2 +- test/test_temporal_ef.ml | 28 ++++++++++++++++++++++++++++ 3 files changed, 30 insertions(+), 2 deletions(-) create mode 100644 test/test_temporal_ef.ml (limited to 'test') diff --git a/test/dune b/test/dune index 34f5888..07a4aae 100644 --- a/test/dune +++ b/test/dune @@ -1,6 +1,6 @@ (test (name test_colitur) - (libraries colitur_kernel alcotest qcheck qcheck-alcotest sexplib) + (libraries colitur_kernel rite_ef alcotest qcheck qcheck-alcotest sexplib) (preprocess (pps ppx_sexp_conv))) diff --git a/test/test_colitur.ml b/test/test_colitur.ml index 2f5e87a..293e439 100644 --- a/test/test_colitur.ml +++ b/test/test_colitur.ml @@ -2,4 +2,4 @@ let () = Alcotest.run "colitur" [ Test_date.suite; Test_computus.suite; Test_colour.suite; Test_slug.suite; Test_names.suite; - Test_overlay.suite ] + Test_overlay.suite; Test_temporal_ef.suite ] diff --git a/test/test_temporal_ef.ml b/test/test_temporal_ef.ml new file mode 100644 index 0000000..f7851c1 --- /dev/null +++ b/test/test_temporal_ef.ml @@ -0,0 +1,28 @@ +module V = Rite_ef.Vocab_ef + +let test_vocab_roundtrips () = + List.iter + (fun s -> + Alcotest.(check bool) "season string roundtrip" true + (V.season_of_string (V.season_to_string s) = Some s)) + V.seasons; + List.iter + (fun r -> + Alcotest.(check bool) "rank string roundtrip" true + (V.rank_of_string (V.rank_to_string r) = Some r)) + V.ranks; + Alcotest.(check int) "eight seasons" 8 (List.length V.seasons); + Alcotest.(check int) "four ranks" 4 (List.length V.ranks) + +(* Slug words are lectio's lectionary-key vocabulary, deliberately distinct from + the season names (spec ยง4.4, plan correction 2). *) +let test_slug_words () = + Alcotest.(check string) "paschaltide slugs as easter" "easter" (V.season_slug_word V.Paschaltide); + Alcotest.(check string) "christmastide slugs as christmas" "christmas" + (V.season_slug_word V.Christmastide); + Alcotest.(check string) "season name differs" "paschaltide" (V.season_to_string V.Paschaltide) + +let suite = + ( "Rite_ef", + [ Alcotest.test_case "vocab roundtrips" `Quick test_vocab_roundtrips; + Alcotest.test_case "slug words" `Quick test_slug_words ] ) -- cgit v1.3