summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/test_precedence_of.ml88
1 files changed, 87 insertions, 1 deletions
diff --git a/test/test_precedence_of.ml b/test/test_precedence_of.ml
index bf514ff..a06fb25 100644
--- a/test/test_precedence_of.ml
+++ b/test/test_precedence_of.ml
@@ -68,5 +68,91 @@ let test_part1 () =
Alcotest.(check int) label expected (Rite_of.Precedence_of.band c cand))
part1_cases
+let part2_cases =
+ [ ( "entry 5: a universal feast of the Lord",
+ ctx ~iso:"2026-08-06" ~season:Vocab_of.Ordinary_time,
+ mk ~subject:Subject.Lord ~slug:"of-transfiguration" ~rank:Vocab_of.Festum
+ ~origin:Precedence.Sanctoral (),
+ 50 );
+ ( "entry 6: a Sunday per annum",
+ ctx ~iso:"2026-07-12" ~season:Vocab_of.Ordinary_time,
+ (* rank is Festum, not the brief's original Sollemnitas: a real Sunday
+ per annum is never Sollemnitas (temporal_of.ml only grades Advent,
+ Lent and Easter Sundays that way, and those are entry 2, tested
+ before this one), and a Sollemnitas candidate here would hit entry 3
+ first regardless of layer -- the brief's own adjacent "Sunday of
+ Christmas time" row already uses Festum for the identical reason. *)
+ mk ~slug:"of-ordinary-time-sunday-15" ~rank:Vocab_of.Festum
+ ~origin:Precedence.Temporal (),
+ 60 );
+ ( "entry 6: a Sunday of Christmas time",
+ ctx ~iso:"2027-01-03" ~season:Vocab_of.Christmas,
+ mk ~slug:"of-christmas-sunday-2" ~rank:Vocab_of.Festum
+ ~origin:Precedence.Temporal (),
+ 60 );
+ ( "entry 7: a universal feast of a saint",
+ ctx ~iso:"2026-04-25" ~season:Vocab_of.Easter,
+ mk ~subject:Subject.Saint ~slug:"of-mark" ~rank:Vocab_of.Festum
+ ~origin:Precedence.Sanctoral (),
+ 70 );
+ ( "entry 7: a universal feast of the BVM",
+ ctx ~iso:"2026-05-31" ~season:Vocab_of.Ordinary_time,
+ mk ~subject:Subject.Bvm ~slug:"of-visitation" ~rank:Vocab_of.Festum
+ ~origin:Precedence.Sanctoral (),
+ 70 );
+ ( "entry 8: a proper feast",
+ ctx ~iso:"2026-04-25" ~season:Vocab_of.Easter,
+ mk ~layer:"proper:diocese-of-poznan" ~slug:"of-cathedral-dedication"
+ ~rank:Vocab_of.Festum ~origin:Precedence.Sanctoral (),
+ 80 );
+ ( "entry 9: an Advent feria on 17 December",
+ ctx ~iso:"2026-12-17" ~season:Vocab_of.Advent,
+ mk ~slug:"of-advent-3-thursday" ~rank:Vocab_of.Feria
+ ~origin:Precedence.Temporal (),
+ 90 );
+ ( "entry 9: a day within the Octave of the Nativity",
+ ctx ~iso:"2026-12-29" ~season:Vocab_of.Christmas,
+ mk ~slug:"of-christmas-0-tuesday" ~rank:Vocab_of.Feria
+ ~origin:Precedence.Temporal (),
+ 90 );
+ ( "entry 9: a Lenten feria",
+ ctx ~iso:"2026-03-03" ~season:Vocab_of.Lent,
+ mk ~slug:"of-lent-2-tuesday" ~rank:Vocab_of.Feria
+ ~origin:Precedence.Temporal (),
+ 90 );
+ (* MY RULING (2026-08-25, task-2-brief correction): every temporal-origin
+ celebration Temporal_of.temporal constructs carries [layer = "temporal"],
+ never [Precedence_of.universal_layer] -- so entries 3, 5 and 7 must test
+ [not (is_proper layer)], not [is_universal layer]. These four rows pin
+ exactly what that correction fixes: without it, Corpus Christi comes out
+ unclassified (a hole) and Trinity/Christ the King land at entry 6 instead
+ of entry 3. *)
+ ( "entry 3: Trinity Sunday is a solemnity of the general calendar",
+ ctx ~iso:"2026-05-31" ~season:Vocab_of.Ordinary_time,
+ mk ~slug:"of-trinity" ~rank:Vocab_of.Sollemnitas ~origin:Precedence.Temporal (),
+ 30 );
+ ( "entry 3: Corpus Christi, a Thursday, is not unclassified",
+ ctx ~iso:"2026-06-04" ~season:Vocab_of.Ordinary_time,
+ mk ~slug:"of-corpus-christi" ~rank:Vocab_of.Sollemnitas ~origin:Precedence.Temporal (),
+ 30 );
+ ( "entry 5: the Baptism of the Lord is a feast OF THE LORD",
+ ctx ~iso:"2026-01-11" ~season:Vocab_of.Christmas,
+ mk ~subject:Subject.Lord ~slug:"of-baptism-of-the-lord" ~rank:Vocab_of.Festum
+ ~origin:Precedence.Temporal (),
+ 50 );
+ ( "entry 6, not 5: an ordinary Christmas Sunday has no Lord subject",
+ ctx ~iso:"2027-01-03" ~season:Vocab_of.Christmas,
+ mk ~subject:Subject.Temporal ~slug:"of-christmas-sunday-2" ~rank:Vocab_of.Festum
+ ~origin:Precedence.Temporal (),
+ 60 ) ]
+
+let test_part2 () =
+ List.iter
+ (fun (label, c, cand, expected) ->
+ Alcotest.(check int) label expected (Rite_of.Precedence_of.band c cand))
+ part2_cases
+
let suite =
- ("precedence-of", [ Alcotest.test_case "Tabula part I (entries 1-4)" `Quick test_part1 ])
+ ( "precedence-of",
+ [ Alcotest.test_case "Tabula part I (entries 1-4)" `Quick test_part1;
+ Alcotest.test_case "Tabula part II (entries 5-9)" `Quick test_part2 ] )