aboutsummaryrefslogtreecommitdiff
path: root/test/test_golden.ml
diff options
context:
space:
mode:
Diffstat (limited to 'test/test_golden.ml')
-rw-r--r--test/test_golden.ml105
1 files changed, 103 insertions, 2 deletions
diff --git a/test/test_golden.ml b/test/test_golden.ml
index 594ea6b..fdfc01d 100644
--- a/test/test_golden.ml
+++ b/test/test_golden.ml
@@ -851,8 +851,22 @@ let test_iii_class_feast_wins_class4_feria () =
"2008-04-05 saturday season=paschaltide week=2 slug=vincent-ferrer rank=class-3 colour=white subject=saint name_la=- comms=[] in=- \
out=[]";
let d4 = fetch 2038 3 6 in
+ (* ef-bvm-saturday task: 6 March 2038 is a SATURDAY, so the displaced
+ temporal candidate is now RG 78's own BVM Saturday office
+ ({!Rite_ef.Temporal_ef}'s own [bvm_saturday_names] citation) rather than
+ a bare ferial -- but per that citation's own "Slug" paragraph the SLUG
+ is deliberately left unchanged (reused, not replaced), precisely so
+ this test's own [omitted_has] probe still needs no update: the displaced
+ candidate is still named "ef-septuagesima-2-saturday", only its
+ colour/subject/name would have differed had it won. RG 91 entry 24
+ (Sts Perpetua and Felicity) still outranks it either way -- entry 24 <
+ entry 27, both above entry 28 -- so the disposition/win outcome this
+ test proves is genuinely unchanged by this task, now more precisely
+ entry 24 > entry 27 rather than > 28 for this one date (a Saturday), not
+ that the test itself needed touching. *)
Alcotest.(check bool)
- "2038-03-06: the displaced class-4 Septuagesima feria is in [omitted] (RG26), proving RG91 entry24>28 fired"
+ "2038-03-06: the displaced class-4 feria (RG78's own BVM-Saturday office, \
+ for this Saturday) is in [omitted] (RG26), proving RG91 entry24>27 fired"
true
(omitted_has d4 "ef-septuagesima-2-saturday");
Alcotest.(check string)
@@ -869,6 +883,81 @@ let test_iii_class_feast_wins_class4_feria () =
"2038-03-09 tuesday season=septuagesima week=3 slug=frances-rome rank=class-3 colour=white subject=saint name_la=- comms=[] in=- \
out=[]"
+(* ------------------------------------------------------------------ *)
+(* RG 91 entry 27 / RG 78-79 (Caput IX, "De sancta Maria in sabbato") --
+ ef-bvm-saturday task, Rite_ef.Temporal_ef's own [bvm_saturday_names]
+ citation has the full primary-source argument. Two real-data pins, the
+ task brief's own worked example and its mirror-image negative case,
+ matching this file's own header rule: EVERY literal below was checked by
+ hand against `colitur day 2026` before being typed in here (this task's
+ own report has the full session log), never copied from a run and
+ rationalised after. *)
+
+(* The task brief's own worked example, checked against the oracle
+ (missalemeum) directly: "2026-08-01|4|w|V Mass of the B. V. M. -- Salve,
+ Sancta Parens|Saturday_after_IX_Sunday_after_Pentecost|Holy Machabees".
+ colitur's own rank (4) and colour (white) now match; the oracle's own
+ numbered-Mass title (RG 309(a)'s own "iuxta temporum diversitatem", not
+ modelled here -- {!bvm_saturday_names}'s own "Slug" paragraph) and the
+ observed day's own English identity remain outside what this comparator
+ can see (M18's own limit) -- this pin instead proves what colitur DOES
+ compute: white/class-4/subject Bvm/the Latin title, and Holy Machabees
+ (real data/ef/sanctoral.sexp entry, Commemoration_only, Class3, 1 August)
+ still admitted as an ORDINARY commemoration alongside it, matching the
+ oracle's own commemoration list exactly. *)
+let test_bvm_saturday_2026 () =
+ check ~msg:"2026-08-01: the BVM Saturday office observed, white overriding Time after Pentecost's green, \
+ Holy Machabees commemorated -- matches the task brief's own oracle example"
+ 2026 8 1
+ "2026-08-01 saturday season=time-after-pentecost week=9 slug=ef-time-after-pentecost-9-saturday \
+ rank=class-4 colour=white subject=bvm name_la=Officium sanctae Mariae in sabbato \
+ comms=[holy-machabees:ordinary] in=- out=[]"
+
+(* The mirror-image case: RG 78's own protasis is FALSE here (a real feast
+ wins the Saturday outright), so the BVM-Saturday-shaped temporal
+ candidate must lose and be omitted under RG 26, exactly like the plain
+ ferial candidate it replaces always was -- no commemoration at all,
+ proving [band]/[disposition] need no special case for this office (the
+ design claim the task report makes explicitly). ALSO the one live data
+ witness where the winning candidate itself carries [subject = Bvm]
+ (data/ef/adjustments.sexp's own `Edit most-holy-name-of-mary
+ ((Set_subject Bvm))`) -- proving no Bvm-vs-Bvm confusion with a
+ RG112(a)-style subject rule: [omitted_has] below confirms the loser is
+ genuinely reported omitted (RG26 fires on [rank = Class4] alone, checked
+ ahead of any subject-based branch in {!Rite_ef.Precedence_ef.disposition}),
+ not silently swallowed by a same-subject exclusion that does not exist
+ for [Bvm] anywhere in this codebase. *)
+let test_bvm_saturday_loses_to_most_holy_name_of_mary_2026 () =
+ let d = fetch 2026 9 12 in
+ Alcotest.(check bool)
+ "2026-09-12: the displaced BVM-Saturday-shaped candidate is in [omitted] (RG26), not silently absent"
+ true
+ (omitted_has d "ef-time-after-pentecost-15-saturday");
+ Alcotest.(check string)
+ "2026-09-12: Most Holy Name of Mary (III class, subject Bvm, data/ef/adjustments.sexp) outranks the \
+ class-4 BVM-Saturday candidate; no commemoration at all"
+ "2026-09-12 saturday season=time-after-pentecost week=15 slug=most-holy-name-of-mary rank=class-3 \
+ colour=white subject=bvm name_la=- comms=[] in=- out=[]"
+ (describe d)
+
+(* RG112(d), fix round 1 (coordinator finding F1): PE.marian_slugs's own
+ citation (precedence_ef.ml) has the full RG112(d) argument, including
+ the 16 July "Missa dici potest aut ... aut ..." rubric found on both
+ photographic scans. 16 July 2033 is a real otherwise-unoccupied
+ Saturday; before this fix, [comms] here read
+ "[our-lady-of-mt-carmel:ordinary]" (confirmed against real pre-fix
+ `colitur day 2033` output). *)
+let test_bvm_saturday_excludes_mt_carmel_2033 () =
+ let d = fetch 2033 7 16 in
+ Alcotest.(check bool)
+ "2033-07-16: Mt Carmel is in [omitted] (RG112(d)), not silently dropped from the record" true
+ (omitted_has d "our-lady-of-mt-carmel");
+ Alcotest.(check string)
+ "2033-07-16: the BVM Saturday office observed, white; NO commemoration of Mt Carmel (RG112(d))"
+ "2033-07-16 saturday season=time-after-pentecost week=5 slug=ef-time-after-pentecost-5-saturday \
+ rank=class-4 colour=white subject=bvm name_la=Officium sanctae Mariae in sabbato comms=[] in=- out=[]"
+ (describe d)
+
let suite =
( "golden pins (known-tricky years)",
[ Alcotest.test_case "Easter extreme: 1598 earliest (22 Mar, Gauss-verified)" `Quick
@@ -925,5 +1014,17 @@ let suite =
Alcotest.test_case
"ef-rebootstrap: RG91 entry24 (III-class feast) outranks entry28 (class-4 feria) -- the six dates \
deferred since 2038's own Easter-extreme pin (2008-04-02/04/05, 2038-03-06/08/09)"
- `Quick test_iii_class_feast_wins_class4_feria
+ `Quick test_iii_class_feast_wins_class4_feria;
+ Alcotest.test_case
+ "RG91 e27/RG78: the BVM Saturday office wins, Holy Machabees commemorated -- matches the task \
+ brief's own oracle example (2026-08-01)"
+ `Quick test_bvm_saturday_2026;
+ Alcotest.test_case
+ "RG91 e27/RG78/RG26: the BVM Saturday office loses to Most Holy Name of Mary (subject Bvm too) \
+ and is omitted, no confusion (2026-09-12)"
+ `Quick test_bvm_saturday_loses_to_most_holy_name_of_mary_2026;
+ Alcotest.test_case
+ "RG112(d), fix round 1 (F1): the BVM Saturday office excludes Mt Carmel's own commemoration \
+ (2033-07-16)"
+ `Quick test_bvm_saturday_excludes_mt_carmel_2033
] )