summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--test/test_golden.ml108
1 files changed, 62 insertions, 46 deletions
diff --git a/test/test_golden.ml b/test/test_golden.ml
index 259b81a..1724375 100644
--- a/test/test_golden.ml
+++ b/test/test_golden.ml
@@ -93,9 +93,19 @@ let fetch y m d = Cal.day Rite_ef.context real_ef_layer (mk y m d)
let slug_s (c : V.rank Cel.t) = Slug.to_string c.Cel.slug
let rank_s (c : V.rank Cel.t) = V.rank_to_string c.Cel.rank
let colour_s (c : V.rank Cel.t) = Colour.to_string c.Cel.colour
+let subject_s (c : V.rank Cel.t) = Colitur_kernel.Subject.to_string c.Cel.subject
let privilege_s = function Prec.Privileged -> "privileged" | Prec.Ordinary -> "ordinary"
-(* The five fields {!Colitur_kernel.Liturgical_day.t} promises are never
+(* fix round 1 (coordinator finding 4): [subject] added. Two of the three
+ original Holy Family pins (2026-01-11, 2024-01-07) were byte-identical
+ before and after temporal_ef.ml's own fix -- reverting the feature failed
+ only the 2030-01-13 collision pin, because [describe] omitted the ONE
+ field the change touches on an ordinary (non-collision) year. Vacuity
+ flavour #1 ("an assertion already true before the code under test ran"),
+ not #8 ("promoted from actual output") -- the OTHER nine fields' values
+ were independently sourced and remain so; only this tenth was missing.
+
+ The five fields {!Colitur_kernel.Liturgical_day.t} promises are never
silently lost, folded into one comparable line -- see the file header for
why one string, not five checks. *)
let describe (day : (V.season, V.rank) LD.t) =
@@ -110,11 +120,12 @@ let describe (day : (V.season, V.rank) LD.t) =
List.map (fun (c, d) -> Printf.sprintf "%s->%s" (slug_s c) (Date.to_iso8601 d)) day.LD.transferred_out
|> List.sort compare |> String.concat ","
in
- Printf.sprintf "%s %s season=%s week=%s slug=%s rank=%s colour=%s comms=[%s] in=%s out=[%s]"
+ Printf.sprintf "%s %s season=%s week=%s slug=%s rank=%s colour=%s subject=%s comms=[%s] in=%s out=[%s]"
(Date.to_iso8601 day.LD.date)
(Date.weekday_to_string t.Temporal.weekday)
(V.season_to_string t.Temporal.season)
- week (slug_s day.LD.observed) (rank_s day.LD.observed) (colour_s day.LD.observed) comms tin tout
+ week (slug_s day.LD.observed) (rank_s day.LD.observed) (colour_s day.LD.observed)
+ (subject_s day.LD.observed) comms tin tout
let check ~msg y m d expected = Alcotest.(check string) msg expected (describe (fetch y m d))
@@ -139,11 +150,11 @@ let omitted_has (day : (V.season, V.rank) LD.t) slug =
place, not merely that 22 March is white. *)
let test_easter_extreme_1598 () =
check ~msg:"1598-03-21 Holy Saturday: still Passiontide, violet (RG 128)" 1598 3 21
- "1598-03-21 saturday season=passiontide week=2 slug=ef-passiontide-2-saturday rank=class-1 colour=violet \
+ "1598-03-21 saturday season=passiontide week=2 slug=ef-passiontide-2-saturday rank=class-1 colour=violet subject=temporal \
comms=[] in=- out=[]";
check ~msg:"1598-03-22 earliest possible Easter (Gauss-verified): Paschaltide begins, white, class-1" 1598 3
22
- "1598-03-22 sunday season=paschaltide week=1 slug=ef-easter-sunday rank=class-1 colour=white comms=[] in=- \
+ "1598-03-22 sunday season=paschaltide week=1 slug=ef-easter-sunday rank=class-1 colour=white subject=temporal comms=[] in=- \
out=[]"
(* 1666: latest Gregorian Easter possible, 25 April -- hand-verified via
@@ -151,11 +162,11 @@ let test_easter_extreme_1598 () =
25 April). Same citations as 1598 above. *)
let test_easter_extreme_1666 () =
check ~msg:"1666-04-24 Holy Saturday: still Passiontide, violet (RG 128)" 1666 4 24
- "1666-04-24 saturday season=passiontide week=2 slug=ef-passiontide-2-saturday rank=class-1 colour=violet \
+ "1666-04-24 saturday season=passiontide week=2 slug=ef-passiontide-2-saturday rank=class-1 colour=violet subject=temporal \
comms=[] in=- out=[]";
check ~msg:"1666-04-25 latest possible Easter (Gauss-verified): Paschaltide begins, white, class-1" 1666 4
25
- "1666-04-25 sunday season=paschaltide week=1 slug=ef-easter-sunday rank=class-1 colour=white comms=[] in=- \
+ "1666-04-25 sunday season=paschaltide week=1 slug=ef-easter-sunday rank=class-1 colour=white subject=temporal comms=[] in=- \
out=[]"
(* 2038: the brief's "late modern case" -- Easter also 25 April (Gauss-
@@ -180,10 +191,10 @@ let test_easter_extreme_1666 () =
though nothing forces that any more). *)
let test_easter_extreme_2038_late_modern () =
check ~msg:"2038-04-24 Holy Saturday: still Passiontide, violet (RG 128)" 2038 4 24
- "2038-04-24 saturday season=passiontide week=2 slug=ef-passiontide-2-saturday rank=class-1 colour=violet \
+ "2038-04-24 saturday season=passiontide week=2 slug=ef-passiontide-2-saturday rank=class-1 colour=violet subject=temporal \
comms=[] in=- out=[]";
check ~msg:"2038-04-25 late-modern instance of the latest possible Easter (Gauss-verified)" 2038 4 25
- "2038-04-25 sunday season=paschaltide week=1 slug=ef-easter-sunday rank=class-1 colour=white comms=[] in=- \
+ "2038-04-25 sunday season=paschaltide week=1 slug=ef-easter-sunday rank=class-1 colour=white subject=temporal comms=[] in=- \
out=[]"
(* ------------------------------------------------------------------ *)
@@ -204,7 +215,7 @@ let test_annunciation_transfer_inside_holy_week_2016 () =
actually reaches a live case" for exactly this reason. *)
check ~msg:"2016-03-25 Good Friday: Triduum outranks the Annunciation (RG91 entry 2 > 11), no commemoration"
2016 3 25
- "2016-03-25 friday season=passiontide week=2 slug=ef-passiontide-2-friday rank=class-1 colour=violet \
+ "2016-03-25 friday season=passiontide week=2 slug=ef-passiontide-2-friday rank=class-1 colour=violet subject=temporal \
comms=[] in=- out=[annunciation-of-the-blessed-virgin-mary->2016-04-04]";
(* The general RG 96 walk from 26 March would still be inside the Triduum,
the Easter octave (all I class, entry 2/10) -- carrying the feast PAST
@@ -212,7 +223,7 @@ let test_annunciation_transfer_inside_holy_week_2016 () =
after Low Sunday = Easter + 8 = 27 Mar + 8 = 4 April. *)
check ~msg:"2016-04-04 Easter+8 (Monday after Low Sunday): RG96 Attamen(a) sedes propria fires" 2016 4 4
"2016-04-04 monday season=paschaltide week=2 slug=annunciation-of-the-blessed-virgin-mary rank=class-1 \
- colour=white comms=[] in=annunciation-of-the-blessed-virgin-mary out=[]"
+ colour=white subject=saint comms=[] in=annunciation-of-the-blessed-virgin-mary out=[]"
(* ------------------------------------------------------------------ *)
(* 2008: the double transfer (register §4, "cases worth adding"). Easter =
@@ -227,7 +238,7 @@ let test_annunciation_joseph_double_transfer_2008 () =
I-class feria, band 7, above 11) -- impeded, Transfer-disposed. *)
check ~msg:"2008-03-19 Wednesday of Holy Week outranks Joseph (RG91 entry 7 > 11), no commemoration" 2008 3
19
- "2008-03-19 wednesday season=passiontide week=2 slug=ef-passiontide-2-wednesday rank=class-1 colour=violet \
+ "2008-03-19 wednesday season=passiontide week=2 slug=ef-passiontide-2-wednesday rank=class-1 colour=violet subject=temporal \
comms=[] in=- out=[joseph-spouse-of-the-bl-virgin-mary->2008-04-01]";
(* Both Joseph and the Annunciation are band 11 (register: neither is
Immaculate Conception/Assumption, band 4; both are ordinary universal
@@ -255,7 +266,7 @@ let test_annunciation_joseph_double_transfer_2008 () =
check ~msg:"2008-03-31 Easter+8: Annunciation's named sedes propria (RG96 Attamen a) claims the day first"
2008 3 31
"2008-03-31 monday season=paschaltide week=2 slug=annunciation-of-the-blessed-virgin-mary rank=class-1 \
- colour=white comms=[] in=annunciation-of-the-blessed-virgin-mary out=[]";
+ colour=white subject=saint comms=[] in=annunciation-of-the-blessed-virgin-mary out=[]";
(* Joseph's own general RG96 walk, finding 31 March already claimed
(occupant reports Class1 there, still blocking per [is_blocking]),
continues one more day to 1 April -- RG 97-98's "in order": the second
@@ -264,7 +275,7 @@ let test_annunciation_joseph_double_transfer_2008 () =
check ~msg:"2008-04-01: Joseph's RG96 walk continues past the now-claimed 31 March (RG97-98 'in order')" 2008
4 1
"2008-04-01 tuesday season=paschaltide week=2 slug=joseph-spouse-of-the-bl-virgin-mary rank=class-1 \
- colour=white comms=[] in=joseph-spouse-of-the-bl-virgin-mary out=[]"
+ colour=white subject=saint comms=[] in=joseph-spouse-of-the-bl-virgin-mary out=[]"
(* ------------------------------------------------------------------ *)
(* RG 96 Attamen (a) is CONDITIONAL ("quando est transferendum post
@@ -288,15 +299,15 @@ let test_annunciation_exception_not_triggered_general_walk_suffices () =
check ~msg:"2057-03-26: general RG96 walk suffices (target before Easter, 22 Apr) -- no Attamen(a) exception"
2057 3 26
"2057-03-26 monday season=lent week=3 slug=annunciation-of-the-blessed-virgin-mary rank=class-1 \
- colour=white comms=[ef-lent-3-monday:privileged] in=annunciation-of-the-blessed-virgin-mary out=[]";
+ colour=white subject=saint comms=[ef-lent-3-monday:privileged] in=annunciation-of-the-blessed-virgin-mary out=[]";
check ~msg:"2007-03-26: general RG96 walk suffices (target before Easter, 8 Apr) -- no Attamen(a) exception"
2007 3 26
"2007-03-26 monday season=passiontide week=1 slug=annunciation-of-the-blessed-virgin-mary rank=class-1 \
- colour=white comms=[ef-passiontide-1-monday:privileged] in=annunciation-of-the-blessed-virgin-mary out=[]";
+ colour=white subject=saint comms=[ef-passiontide-1-monday:privileged] in=annunciation-of-the-blessed-virgin-mary out=[]";
check ~msg:"2012-03-26: general RG96 walk suffices (target before Easter, 8 Apr) -- no Attamen(a) exception"
2012 3 26
"2012-03-26 monday season=passiontide week=1 slug=annunciation-of-the-blessed-virgin-mary rank=class-1 \
- colour=white comms=[ef-passiontide-1-monday:privileged] in=annunciation-of-the-blessed-virgin-mary out=[]"
+ colour=white subject=saint comms=[ef-passiontide-1-monday:privileged] in=annunciation-of-the-blessed-virgin-mary out=[]"
(* After Easter: 2016 (already pinned above, Easter+8 = 4 April) and 2024
(Easter 31 March, Easter+8 = 8 April). In both, the general walk would
@@ -312,7 +323,7 @@ let test_annunciation_exception_triggered_when_walk_would_cross_easter () =
(RG26)"
2024 4 8
"2024-04-08 monday season=paschaltide week=2 slug=annunciation-of-the-blessed-virgin-mary rank=class-1 \
- colour=white comms=[] in=annunciation-of-the-blessed-virgin-mary out=[]"
+ colour=white subject=saint comms=[] in=annunciation-of-the-blessed-virgin-mary out=[]"
(* 2016's own pin (test_annunciation_transfer_inside_holy_week_2016) is the
other half of this pair -- not repeated here to avoid asserting the same
date twice. *)
@@ -330,19 +341,19 @@ let test_annunciation_exception_triggered_when_walk_would_cross_easter () =
let test_precious_blood_transfer_2011 () =
check ~msg:"2011-07-01: Sacred Heart (RG91 entry 3) outranks the fixed Precious Blood (entry 11) outright"
2011 7 1
- "2011-07-01 friday season=time-after-pentecost week=2 slug=ef-sacred-heart rank=class-1 colour=white \
+ "2011-07-01 friday season=time-after-pentecost week=2 slug=ef-sacred-heart rank=class-1 colour=white subject=temporal \
comms=[] in=- out=[precious-blood-of-our-lord-jesus-christ->2011-07-04]";
check ~msg:"2011-07-02: the RG96 walk's first blocked day (Visitation, II class) -- Precious Blood not here"
2011 7 2
"2011-07-02 saturday season=time-after-pentecost week=2 slug=visitation-of-the-blessed-virgin-mary \
- rank=class-2 colour=white comms=[processus-and-martinian:ordinary] in=- out=[]";
+ rank=class-2 colour=white subject=saint comms=[processus-and-martinian:ordinary] in=- out=[]";
check ~msg:"2011-07-03: the RG96 walk's second blocked day (an ordinary Sunday, II class) -- still not here"
2011 7 3
"2011-07-03 sunday season=time-after-pentecost week=3 slug=ef-time-after-pentecost-sunday-3 rank=class-2 \
- colour=green comms=[] in=- out=[]";
+ colour=green subject=temporal comms=[] in=- out=[]";
check ~msg:"2011-07-04: the first non-I/II-class day (RG96) -- the Precious Blood lands here" 2011 7 4
"2011-07-04 monday season=time-after-pentecost week=3 slug=precious-blood-of-our-lord-jesus-christ \
- rank=class-1 colour=red comms=[] in=precious-blood-of-our-lord-jesus-christ out=[]"
+ rank=class-1 colour=red subject=lord comms=[] in=precious-blood-of-our-lord-jesus-christ out=[]"
(* ------------------------------------------------------------------ *)
(* All Souls falling on a Sunday (register §4, RG96 Attamen (b), primary-
@@ -357,11 +368,11 @@ let test_all_souls_on_a_sunday_2025 () =
check ~msg:"2025-11-02: All Souls yields to the occurring Sunday (RG91 entry 8), no commemoration (RG94)" 2025
11 2
"2025-11-02 sunday season=time-after-pentecost week=21 slug=ef-time-after-pentecost-sunday-21 rank=class-2 \
- colour=green comms=[] in=- out=[commemoration-of-all-souls->2025-11-03]";
+ colour=green subject=temporal comms=[] in=- out=[commemoration-of-all-souls->2025-11-03]";
check ~msg:"2025-11-03: All Souls transfers to the following Monday, its sedes propria (RG96 Attamen b)" 2025
11 3
"2025-11-03 monday season=time-after-pentecost week=21 slug=commemoration-of-all-souls rank=class-1 \
- colour=black comms=[] in=commemoration-of-all-souls out=[]"
+ colour=black subject=saint comms=[] in=commemoration-of-all-souls out=[]"
(* ------------------------------------------------------------------ *)
(* Christmas falling on a Sunday (RG91 entry 1: Nativity, Easter, Pentecost
@@ -375,7 +386,7 @@ let test_all_souls_on_a_sunday_2025 () =
let test_christmas_on_a_sunday_2022 () =
check ~msg:"2022-12-25 falling on a Sunday: the Nativity (RG91 entry 1) takes the day outright, no contest"
2022 12 25
- "2022-12-25 sunday season=christmastide week=- slug=ef-nativity rank=class-1 colour=white comms=[] in=- \
+ "2022-12-25 sunday season=christmastide week=- slug=ef-nativity rank=class-1 colour=white subject=temporal comms=[] in=- \
out=[]"
(* ------------------------------------------------------------------ *)
@@ -388,18 +399,18 @@ let test_christmas_on_a_sunday_2022 () =
confirmed via `date -d`. *)
let test_holy_thursday_is_white_2026 () =
check ~msg:"2026-04-01 (Wednesday of Holy Week): ordinary Passiontide violet (RG128)" 2026 4 1
- "2026-04-01 wednesday season=passiontide week=2 slug=ef-passiontide-2-wednesday rank=class-1 colour=violet \
+ "2026-04-01 wednesday season=passiontide week=2 slug=ef-passiontide-2-wednesday rank=class-1 colour=violet subject=temporal \
comms=[] in=- out=[]";
check
~msg:
"2026-04-02 Holy Thursday: white (RG128(b)'s named exception + RG122's affirmative statement), not \
Passiontide's violet"
2026 4 2
- "2026-04-02 thursday season=passiontide week=2 slug=ef-passiontide-2-thursday rank=class-1 colour=white \
+ "2026-04-02 thursday season=passiontide week=2 slug=ef-passiontide-2-thursday rank=class-1 colour=white subject=temporal \
comms=[] in=- out=[]";
check ~msg:"2026-04-03 Good Friday: back to violet (RG128) -- Thursday's white is a one-day exception" 2026 4
3
- "2026-04-03 friday season=passiontide week=2 slug=ef-passiontide-2-friday rank=class-1 colour=violet \
+ "2026-04-03 friday season=passiontide week=2 slug=ef-passiontide-2-friday rank=class-1 colour=violet subject=temporal \
comms=[] in=- out=[]"
(* ------------------------------------------------------------------ *)
@@ -419,14 +430,14 @@ let test_ember_ferias_commemorated_when_impeded () =
makes it PRIVILEGED, not merely eligible. *)
check ~msg:"1900-12-21: Advent Ember Friday, impeded, MUST be commemorated (RG24) and is privileged (RG109e)"
1900 12 21
- "1900-12-21 friday season=advent week=3 slug=thomas rank=class-2 colour=red \
+ "1900-12-21 friday season=advent week=3 slug=thomas rank=class-2 colour=red subject=saint \
comms=[ef-advent-ember-fri:privileged] in=- out=[]";
(* 1902-02-22: Lent Ember Saturday (RG91 entry 18, II class) impeded by
the Chair of St Peter (II class, universal, entry 16). Same RG24/
RG109(e) mandate. *)
check ~msg:"1902-02-22: Lent Ember Saturday, impeded, MUST be commemorated (RG24) and is privileged (RG109e)"
1902 2 22
- "1902-02-22 saturday season=lent week=1 slug=chair-of-st-peter rank=class-2 colour=white \
+ "1902-02-22 saturday season=lent week=1 slug=chair-of-st-peter rank=class-2 colour=white subject=saint \
comms=[ef-lent-ember-sat:privileged] in=- out=[]"
let test_iv_class_ferias_never_commemorated () =
@@ -443,7 +454,7 @@ let test_iv_class_ferias_never_commemorated () =
true
(omitted_has d1 "ef-time-after-pentecost-8-wednesday");
Alcotest.(check string) "2026-07-22: Mary Magdalene observed, no commemoration (RG26)"
- "2026-07-22 wednesday season=time-after-pentecost week=8 slug=mary-magdalene rank=class-3 colour=white \
+ "2026-07-22 wednesday season=time-after-pentecost week=8 slug=mary-magdalene rank=class-3 colour=white subject=saint \
comms=[] in=- out=[]"
(describe d1);
let d2 = fetch 2026 8 10 in
@@ -451,7 +462,7 @@ let test_iv_class_ferias_never_commemorated () =
true
(omitted_has d2 "ef-time-after-pentecost-11-monday");
Alcotest.(check string) "2026-08-10: St Lawrence observed, no commemoration (RG26)"
- "2026-08-10 monday season=time-after-pentecost week=11 slug=lawrence rank=class-2 colour=red comms=[] in=- \
+ "2026-08-10 monday season=time-after-pentecost week=11 slug=lawrence rank=class-2 colour=red subject=saint comms=[] in=- \
out=[]"
(describe d2)
@@ -476,7 +487,7 @@ let test_ii_class_sunday_admits_only_ii_class_commemoration () =
(omitted_has d2009 "romanus");
Alcotest.(check string) "2009-08-09: the Sunday observed, no commemoration at all (RG111(b) rank floor)"
"2009-08-09 sunday season=time-after-pentecost week=10 slug=ef-time-after-pentecost-sunday-10 rank=class-2 \
- colour=green comms=[] in=- out=[]"
+ colour=green subject=temporal comms=[] in=- out=[]"
(describe d2009);
let d2026 = fetch 2026 8 9 in
Alcotest.(check bool) "2026-08-09: romanus (Class3) is offered and excluded, proving RG111(b) actually fired"
@@ -484,7 +495,7 @@ let test_ii_class_sunday_admits_only_ii_class_commemoration () =
(omitted_has d2026 "romanus");
Alcotest.(check string) "2026-08-09: the Sunday observed, no commemoration at all (RG111(b) rank floor)"
"2026-08-09 sunday season=time-after-pentecost week=11 slug=ef-time-after-pentecost-sunday-11 rank=class-2 \
- colour=green comms=[] in=- out=[]"
+ colour=green subject=temporal comms=[] in=- out=[]"
(describe d2026)
(* ------------------------------------------------------------------ *)
@@ -549,7 +560,7 @@ let test_rg16a_lord_feast_no_sunday_commemoration_2028 () =
et privilegiis\" keeps the day a dominica II classis for RG111(b), so Sixtus (Class3) has no standing \
either, oracle-confirmed"
"2028-08-06 sunday season=time-after-pentecost week=9 slug=transfiguration-of-our-lord rank=class-2 \
- colour=white comms=[] in=- out=[]"
+ colour=white subject=lord comms=[] in=- out=[]"
(describe d)
(* Holy Family (RG 17(b), scan-verified, docs/research/rules-register.md
@@ -597,26 +608,31 @@ let test_rg16a_lord_feast_no_sunday_commemoration_2028 () =
Sunday of it this is), slug=ef-time-after-epiphany-sunday-1 (unchanged
from the plain Sunday key this date always carried -- temporal_ef.ml's
own comment on why RG 17(b) does not need a new lectionary key), rank
- =class-2, colour=white. *)
+ =class-2, colour=white -- AND, fix round 1 (coordinator finding 4),
+ subject=lord: the ONE field that actually distinguishes Holy Family from
+ an ordinary, unnamed Sunday (every other field above was already
+ identical before temporal_ef.ml's own fix -- [describe] originally
+ omitted [subject], so two of these three pins would have stayed green
+ even with the feature fully reverted; see [describe]'s own comment). *)
let test_holy_family_ordinary_year_2026 () =
check ~msg:"2026-01-11: Holy Family, ordinary year -- Hyginus (Class3, Commemoration_only) has no \
standing for the day's II-class-only Sunday slot"
2026 1 11
"2026-01-11 sunday season=christmastide week=- slug=ef-time-after-epiphany-sunday-1 rank=class-2 \
- colour=white comms=[] in=- out=[]"
+ colour=white subject=lord comms=[] in=- out=[]"
let test_holy_family_excludes_baptism_2030 () =
check ~msg:"2030-01-13: Holy Family on the latest possible date -- RG91 e14 \"primum mobilia\" keeps it \
observed over the fixed Baptism, RG112(a) excludes the Baptism entirely, not merely demotes it"
2030 1 13
"2030-01-13 sunday season=christmastide week=- slug=ef-time-after-epiphany-sunday-1 rank=class-2 \
- colour=white comms=[] in=- out=[]"
+ colour=white subject=lord comms=[] in=- out=[]"
let test_holy_family_earliest_possible_date_2024 () =
check ~msg:"2024-01-07: Holy Family on the earliest possible date (Epiphany a Saturday)"
2024 1 7
"2024-01-07 sunday season=christmastide week=- slug=ef-time-after-epiphany-sunday-1 rank=class-2 \
- colour=white comms=[] in=- out=[]"
+ colour=white subject=lord comms=[] in=- out=[]"
(* 2025-02-02, the other real instance of the SAME pattern -- not a
contrasting second direction, per this task's fix round 1 (CRITICAL
@@ -649,7 +665,7 @@ let test_purification_on_a_sunday_2025 () =
commemoration of the Sunday, oracle-confirmed"
2025 2 2
"2025-02-02 sunday season=time-after-epiphany week=4 slug=purification-of-the-blessed-virgin-mary \
- rank=class-2 colour=white comms=[] in=- out=[]"
+ rank=class-2 colour=white subject=lord comms=[] in=- out=[]"
(* ------------------------------------------------------------------ *)
(* RG 91 entry 24 ("Festa III classis, in calendario Ecclesiae universae
@@ -708,15 +724,15 @@ let test_iii_class_feast_wins_class4_feria () =
true
(omitted_has d1 "ef-easter-2-wednesday");
Alcotest.(check string) "2008-04-02: Francis of Paola (III class, RG91 entry 24) outranks the class-4 feria"
- "2008-04-02 wednesday season=paschaltide week=2 slug=francis-of-paola rank=class-3 colour=white comms=[] \
+ "2008-04-02 wednesday season=paschaltide week=2 slug=francis-of-paola rank=class-3 colour=white subject=saint comms=[] \
in=- out=[]"
(describe d1);
check ~msg:"2008-04-04: Isidore of Seville (III class) outranks the class-4 Paschaltide feria, same shape" 2008
4 4
- "2008-04-04 friday season=paschaltide week=2 slug=isidore-of-seville rank=class-3 colour=white comms=[] in=- \
+ "2008-04-04 friday season=paschaltide week=2 slug=isidore-of-seville rank=class-3 colour=white subject=saint comms=[] in=- \
out=[]";
check ~msg:"2008-04-05: Vincent Ferrer (III class) outranks the class-4 Paschaltide feria, same shape" 2008 4 5
- "2008-04-05 saturday season=paschaltide week=2 slug=vincent-ferrer rank=class-3 colour=white comms=[] in=- \
+ "2008-04-05 saturday season=paschaltide week=2 slug=vincent-ferrer rank=class-3 colour=white subject=saint comms=[] in=- \
out=[]";
let d4 = fetch 2038 3 6 in
Alcotest.(check bool)
@@ -726,15 +742,15 @@ let test_iii_class_feast_wins_class4_feria () =
Alcotest.(check string)
"2038-03-06: Sts Perpetua and Felicity (III class, RG91 entry 24) outrank the class-4 feria; RED per their \
own martyrs' colour, not the season's violet"
- "2038-03-06 saturday season=septuagesima week=2 slug=sts-felicitas-perpetua rank=class-3 colour=red comms=[] \
+ "2038-03-06 saturday season=septuagesima week=2 slug=sts-felicitas-perpetua rank=class-3 colour=red subject=saint comms=[] \
in=- out=[]"
(describe d4);
check ~msg:"2038-03-08: John of God (III class) outranks the class-4 Septuagesima feria, same shape" 2038 3 8
- "2038-03-08 monday season=septuagesima week=3 slug=john-of-god rank=class-3 colour=white comms=[] in=- \
+ "2038-03-08 monday season=septuagesima week=3 slug=john-of-god rank=class-3 colour=white subject=saint comms=[] in=- \
out=[]";
check ~msg:"2038-03-09: Frances of Rome (III class) outranks the class-4 Septuagesima feria, same shape" 2038 3
9
- "2038-03-09 tuesday season=septuagesima week=3 slug=frances-rome rank=class-3 colour=white comms=[] in=- \
+ "2038-03-09 tuesday season=septuagesima week=3 slug=frances-rome rank=class-3 colour=white subject=saint comms=[] in=- \
out=[]"
let suite =