feat(moon): 新增行星合月查询并修正月球地心赤经赤纬接口
- 修正月球地心真/视赤经赤纬接口口径 - 新增月球与七大行星合月时刻查询
This commit is contained in:
@@ -9,6 +9,7 @@ import (
|
||||
"b612.me/astro/jupiter"
|
||||
"b612.me/astro/mars"
|
||||
"b612.me/astro/mercury"
|
||||
"b612.me/astro/moon"
|
||||
"b612.me/astro/neptune"
|
||||
"b612.me/astro/saturn"
|
||||
"b612.me/astro/uranus"
|
||||
@@ -88,6 +89,56 @@ func TestPublicPlanetEventBoundaryIncludesCurrent(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestPublicMoonPlanetConjunctionBoundaryIncludesCurrent(t *testing.T) {
|
||||
type eventFuncs struct {
|
||||
last func(time.Time) time.Time
|
||||
next func(time.Time) time.Time
|
||||
}
|
||||
|
||||
cases := []struct {
|
||||
name string
|
||||
eventUT float64
|
||||
funcs eventFuncs
|
||||
}{
|
||||
{name: "MoonMercuryConjunction", eventUT: basic.NextMoonPlanetConjunction(eventBoundaryTT(2026), basic.MoonPlanetConjunctionMercury), funcs: eventFuncs{
|
||||
last: func(date time.Time) time.Time { return moon.LastConjunctionWithPlanet(date, moon.ConjunctionMercury) },
|
||||
next: func(date time.Time) time.Time { return moon.NextConjunctionWithPlanet(date, moon.ConjunctionMercury) },
|
||||
}},
|
||||
{name: "MoonVenusConjunction", eventUT: basic.NextMoonPlanetConjunction(eventBoundaryTT(2026), basic.MoonPlanetConjunctionVenus), funcs: eventFuncs{
|
||||
last: func(date time.Time) time.Time { return moon.LastConjunctionWithPlanet(date, moon.ConjunctionVenus) },
|
||||
next: func(date time.Time) time.Time { return moon.NextConjunctionWithPlanet(date, moon.ConjunctionVenus) },
|
||||
}},
|
||||
{name: "MoonMarsConjunction", eventUT: basic.NextMoonPlanetConjunction(eventBoundaryTT(2026), basic.MoonPlanetConjunctionMars), funcs: eventFuncs{
|
||||
last: func(date time.Time) time.Time { return moon.LastConjunctionWithPlanet(date, moon.ConjunctionMars) },
|
||||
next: func(date time.Time) time.Time { return moon.NextConjunctionWithPlanet(date, moon.ConjunctionMars) },
|
||||
}},
|
||||
{name: "MoonJupiterConjunction", eventUT: basic.NextMoonPlanetConjunction(eventBoundaryTT(2026), basic.MoonPlanetConjunctionJupiter), funcs: eventFuncs{
|
||||
last: func(date time.Time) time.Time { return moon.LastConjunctionWithPlanet(date, moon.ConjunctionJupiter) },
|
||||
next: func(date time.Time) time.Time { return moon.NextConjunctionWithPlanet(date, moon.ConjunctionJupiter) },
|
||||
}},
|
||||
{name: "MoonSaturnConjunction", eventUT: basic.NextMoonPlanetConjunction(eventBoundaryTT(2026), basic.MoonPlanetConjunctionSaturn), funcs: eventFuncs{
|
||||
last: func(date time.Time) time.Time { return moon.LastConjunctionWithPlanet(date, moon.ConjunctionSaturn) },
|
||||
next: func(date time.Time) time.Time { return moon.NextConjunctionWithPlanet(date, moon.ConjunctionSaturn) },
|
||||
}},
|
||||
{name: "MoonUranusConjunction", eventUT: basic.NextMoonPlanetConjunction(eventBoundaryTT(2026), basic.MoonPlanetConjunctionUranus), funcs: eventFuncs{
|
||||
last: func(date time.Time) time.Time { return moon.LastConjunctionWithPlanet(date, moon.ConjunctionUranus) },
|
||||
next: func(date time.Time) time.Time { return moon.NextConjunctionWithPlanet(date, moon.ConjunctionUranus) },
|
||||
}},
|
||||
{name: "MoonNeptuneConjunction", eventUT: basic.NextMoonPlanetConjunction(eventBoundaryTT(2026), basic.MoonPlanetConjunctionNeptune), funcs: eventFuncs{
|
||||
last: func(date time.Time) time.Time { return moon.LastConjunctionWithPlanet(date, moon.ConjunctionNeptune) },
|
||||
next: func(date time.Time) time.Time { return moon.NextConjunctionWithPlanet(date, moon.ConjunctionNeptune) },
|
||||
}},
|
||||
}
|
||||
|
||||
for _, tc := range cases {
|
||||
t.Run(tc.name, func(t *testing.T) {
|
||||
eventTime := basic.JDE2DateByZone(tc.eventUT, time.UTC, false)
|
||||
assertSameEventTime(t, "last", tc.funcs.last(eventTime), eventTime)
|
||||
assertSameEventTime(t, "next", tc.funcs.next(eventTime), eventTime)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func eventBoundaryTT(year int) float64 {
|
||||
return basic.TD2UT(basic.Date2JDE(time.Date(year, 1, 1, 0, 0, 0, 0, time.UTC)), true)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user