diff options
Diffstat (limited to 'internal/calendar/precedence_ef_test.go')
| -rw-r--r-- | internal/calendar/precedence_ef_test.go | 29 |
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) + } +} |
