34 lines
1 KiB
Go
34 lines
1 KiB
Go
package main
|
|
|
|
import (
|
|
"testing"
|
|
"time"
|
|
)
|
|
|
|
type testDatum struct {
|
|
year int
|
|
date time.Time
|
|
}
|
|
|
|
func TestMotheringSunday(t *testing.T) {
|
|
testData := []testDatum{
|
|
{1931, time.Date(1931, 03, 15, 0, 0, 0, 0, time.UTC)},
|
|
{1950, time.Date(1950, 03, 19, 0, 0, 0, 0, time.UTC)},
|
|
{1977, time.Date(1977, 03, 20, 0, 0, 0, 0, time.UTC)},
|
|
{2000, time.Date(2000, 04, 02, 0, 0, 0, 0, time.UTC)},
|
|
{2005, time.Date(2005, 03, 06, 0, 0, 0, 0, time.UTC)},
|
|
{2020, time.Date(2020, 03, 22, 0, 0, 0, 0, time.UTC)},
|
|
{2021, time.Date(2021, 03, 14, 0, 0, 0, 0, time.UTC)},
|
|
{2022, time.Date(2022, 03, 27, 0, 0, 0, 0, time.UTC)},
|
|
{2023, time.Date(2023, 03, 19, 0, 0, 0, 0, time.UTC)},
|
|
{2032, time.Date(2032, 03, 07, 0, 0, 0, 0, time.UTC)},
|
|
{2034, time.Date(2034, 03, 19, 0, 0, 0, 0, time.UTC)},
|
|
}
|
|
|
|
for _, datum := range testData {
|
|
md, err := motheringSunday(datum.year)
|
|
if err != nil || !md.Equal(datum.date) {
|
|
t.Errorf(`motheringSunday(%d) = (%q, %v) should be (%q, <nil>)`, datum.year, md, err, &datum.date)
|
|
}
|
|
}
|
|
}
|