aboutsummaryrefslogtreecommitdiff
path: root/test/test_precedence_ef.ml
diff options
context:
space:
mode:
Diffstat (limited to 'test/test_precedence_ef.ml')
-rw-r--r--test/test_precedence_ef.ml76
1 files changed, 76 insertions, 0 deletions
diff --git a/test/test_precedence_ef.ml b/test/test_precedence_ef.ml
index 475ae6e..6f8b5b5 100644
--- a/test/test_precedence_ef.ml
+++ b/test/test_precedence_ef.ml
@@ -805,6 +805,52 @@ let disposition_cases =
"conversion-of-st-paul",
cand ~origin:P.Sanctoral ~rank:V.Class2 ~subject:Sub.Lord ~layer:PE.universal_layer
"commemoration-of-the-baptism-of-the-lord",
+ "Commemorate(Ordinary)" );
+ (* RG112(d), fix round 1 (coordinator finding F1) -- PE.marian_slugs's
+ own citation has the full argument (both scans, including the 16
+ July "Missa dici potest aut ... aut ..." rubric). [of_temporal] on a
+ REAL 16-July-Saturday (2033) sources the winner from
+ Temporal_ef.temporal's own real output, the same review-finding-3
+ discipline this file's Ember/vigil rows already use -- not a
+ hand-typed slug/subject pair that could silently drift from what the
+ office actually builds. The loser is the real data/ef/sanctoral.sexp
+ entry, [Commemoration_only], the exact shape that made this branch
+ need to be checked BEFORE the Commemoration_only catch-all. *)
+ ( "RG112(d): the BVM Saturday Office excludes a commemoration invoking \
+ the SAME BVM's intercession -- Omit, not Commemorate (Mt Carmel, \
+ 16 July 2033, a real otherwise-unoccupied Saturday)",
+ of_temporal (mk 2033 7 16),
+ cand ~origin:P.Sanctoral ~rank:V.Class3 ~status:Cel.Commemoration_only ~subject:Sub.Saint
+ ~layer:PE.universal_layer "our-lady-of-mt-carmel",
+ "Omit" );
+ (* Conjunct 1/2, LOSER identity: an ORDINARY Commemoration_only saint
+ NOT on PE.marian_slugs must still reach the ordinary commemorate
+ flow even when the winner is the BVM Saturday Office -- proves
+ RG112(d) excludes a specific same-BVM collision, not every
+ commemoration the office happens to outrank (the real live shape,
+ 1 August, Holy Machabees, PE.marian_slugs's own comment). *)
+ ( "RG112(d) does NOT fire when the LOSER is not a Marian commemoration \
+ -- an ordinary saint stays Commemorate(Ordinary) even under the BVM \
+ Saturday Office (1 August 2026, Holy Machabees)",
+ of_temporal (mk 2026 8 1),
+ cand ~origin:P.Sanctoral ~rank:V.Class3 ~status:Cel.Commemoration_only ~subject:Sub.Saint
+ ~layer:PE.universal_layer "holy-machabees",
+ "Commemorate(Ordinary)" );
+ (* Conjunct 2/2, WINNER identity: an ordinary (non-Bvm, non-Marian-
+ titled) winner must not exclude Mt Carmel either -- RG112(d) is
+ keyed on the WINNER also being "de B. Maria Virg.", not merely on
+ the loser's own identity. SYNTHETIC: no live date has an ordinary
+ Class3 saint winning outright while Mt Carmel also loses that same
+ day (Mt Carmel's own fixed date, 16 July, has no other real
+ sanctoral entry to construct this from) -- proves the conjunct is
+ real, not merely untested, the same "SYNTHETIC" discipline the
+ RG112(a) rows above already use for their own second conjunct. *)
+ ( "SYNTHETIC: RG112(d) does NOT fire when only the LOSER is Marian -- \
+ an ordinary winner leaves Mt Carmel Commemorate(Ordinary)",
+ cand ~origin:P.Sanctoral ~rank:V.Class3 ~subject:Sub.Saint ~layer:PE.universal_layer
+ "ef-synthetic-ordinary-winner",
+ cand ~origin:P.Sanctoral ~rank:V.Class3 ~status:Cel.Commemoration_only ~subject:Sub.Saint
+ ~layer:PE.universal_layer "our-lady-of-mt-carmel",
"Commemorate(Ordinary)" )
]
@@ -1507,6 +1553,32 @@ let test_bvm_saturday_loses_to_a_real_feast_end_to_end () =
[ ("ef-time-after-pentecost-15-saturday", "omitted: yielded to a higher day") ]
(List.map (fun (c, reason) -> (S.to_string c.P.cel.Cel.slug, reason)) resolution.P.omitted)
+(* RG112(d), fix round 1 (coordinator finding F1) -- PE.marian_slugs's own
+ citation has the full argument. End-to-end through the REAL pipeline
+ (PE.band, PE.disposition AND PE.admit together): 16 July 2033, a real
+ otherwise-unoccupied Saturday, with the real data/ef/sanctoral.sexp
+ [our-lady-of-mt-carmel] entry as the day's only competing candidate.
+ Before this fix, [resolution.P.commemorations] held
+ [our-lady-of-mt-carmel:Ordinary] (confirmed live against real 2005/2033
+ `colitur day` output before this fix existed); after, it is empty and
+ Mt Carmel is reported omitted, not silently dropped. *)
+let test_bvm_saturday_excludes_mt_carmel_end_to_end () =
+ let date = mk 2033 7 16 in
+ let day_ctx = ctx date in
+ let bvm_saturday = of_temporal date in
+ let mt_carmel =
+ cand ~origin:P.Sanctoral ~rank:V.Class3 ~status:Cel.Commemoration_only ~subject:Sub.Saint
+ ~layer:PE.universal_layer "our-lady-of-mt-carmel"
+ in
+ let resolution = P.resolve real_rules day_ctx ~temporal:bvm_saturday ~sanctoral:[ mt_carmel ] in
+ Alcotest.(check string) "the BVM Saturday office is observed"
+ "ef-time-after-pentecost-5-saturday" (S.to_string resolution.P.observed.P.cel.Cel.slug);
+ Alcotest.(check (list string)) "Mt Carmel is NOT commemorated (RG112(d))" []
+ (List.map (fun (c, _) -> S.to_string c.P.cel.Cel.slug) resolution.P.commemorations);
+ Alcotest.(check (list (pair string string))) "Mt Carmel is reported omitted, not silently dropped"
+ [ ("our-lady-of-mt-carmel", "omitted: yielded to a higher day") ]
+ (List.map (fun (c, reason) -> (S.to_string c.P.cel.Cel.slug, reason)) resolution.P.omitted)
+
(* RG 16(a) (register ยง6.0) reached end-to-end through the REAL pipeline
([PE.band], [PE.disposition] AND [PE.admit] together, not any one of
them in isolation as this file's own hand-tagged rows test them
@@ -1989,6 +2061,10 @@ let suite =
(2026-09-12)"
`Quick test_bvm_saturday_loses_to_a_real_feast_end_to_end;
Alcotest.test_case
+ "RG112(d), fix round 1 (F1): the BVM Saturday office excludes Mt Carmel, end-to-end \
+ (2033-07-16)"
+ `Quick test_bvm_saturday_excludes_mt_carmel_end_to_end;
+ Alcotest.test_case
"RG16(a): a Feast of the Lord suppresses the Sunday's own commemoration entirely, \
end-to-end (2028-08-06)"
`Quick test_rg16a_lord_feast_suppresses_sunday_end_to_end;