aboutsummaryrefslogtreecommitdiff
path: root/internal/calendar/precedence_ef_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/calendar/precedence_ef_test.go')
-rw-r--r--internal/calendar/precedence_ef_test.go29
1 files changed, 29 insertions, 0 deletions
diff --git a/internal/calendar/precedence_ef_test.go b/internal/calendar/precedence_ef_test.go
new file mode 100644
index 0000000..818b452
--- /dev/null
+++ b/internal/calendar/precedence_ef_test.go
@@ -0,0 +1,29 @@
+package calendar
+
+import "testing"
+
+func efCand(rank Rank, temporal bool) candidate {
+ return candidate{Cel: Celebration{Rank: rank}, Temporal: temporal}
+}
+
+func TestPrecedenceEF(t *testing.T) {
+ c1 := efCand(RankClass1, false)
+ c3 := efCand(RankClass3, false)
+ c4 := efCand(RankClass4, false)
+ comm := efCand(RankCommemoration, false)
+ if !(precedenceEF(c1) < precedenceEF(c3) && precedenceEF(c3) < precedenceEF(c4) && precedenceEF(c4) < precedenceEF(comm)) {
+ t.Error("EF class ordering broken (class-1 > class-3 > class-4 > commemoration)")
+ }
+ // at equal class, the temporal office wins.
+ temp := efCand(RankClass2, true)
+ saint := efCand(RankClass2, false)
+ obs, _ := pickEF([]candidate{saint, temp})
+ if !obs.Temporal {
+ t.Error("equal-class: temporal office should be observed")
+ }
+ // a I-class feast beats a II-class Sunday.
+ obs2, others := pickEF([]candidate{efCand(RankClass2, true), efCand(RankClass1, false)})
+ if obs2.Cel.Rank != RankClass1 || len(others) != 1 {
+ t.Errorf("I-class feast should win over II-class Sunday, got %+v", obs2.Cel)
+ }
+}