feat: 完善星表查询与跨版本回归验证

- 将星表名称数据收敛为 TSV/GZIP 单一数据源,补充中文名、别名、英文常用名及宿/垣区域字段
- 增加星表名称表加载校验、旧详情字段一致性校验和 GZIP 漂移检查
- 新增 StarDataByName、StarDataByNameAll、StarDataByNameIn ,统一中英文查询与重名消歧
- 优化日月食半影带、升落曲线和可见性回归测试,补充极区、拓扑及低精度场景覆盖
- 增加 Go 1.16/386 兼容门禁和测试案例,处理旧工具链的分配、拓扑、SVG字节及 ULP 差异
- 补充星表、坐标、日月食和低精度回归用例,完善测试文件与缓存忽略规则
This commit is contained in:
2026-10-18 16:13:14 +08:00
parent 0e3825d5ba
commit 72460fa228
30 changed files with 3932 additions and 127 deletions
+21
View File
@@ -200,7 +200,28 @@ func TestSolarEclipseRiseSetCurveEndpointsAcrossEclipseTypes(t *testing.T) {
}
}
func TestSolarEclipseNonCentralGreatestHorizonGo116386Smoke(t *testing.T) {
if !go116386() {
t.Skip("Go 1.16/386 only")
}
seed := JDCalc(1957, 10, 23)
for _, stepSeconds := range []float64{120, 5} {
result := SolarEclipsePartialFootprints(seed, SolarEclipsePartialFootprintOptions{
StepDays: 2.0 / 1440, BoundaryPoints: 24, RiseSetStepDays: stepSeconds / 86400,
})
if result.Eclipse.Type != SolarEclipseTotal || result.Eclipse.Centrality != SolarEclipseNonCentral {
t.Fatalf("type=%s centrality=%s, want non-central total", result.Eclipse.Type, result.Eclipse.Centrality)
}
if len(result.RiseSetCurves) == 0 || !solarEclipseRiseSetCurveTopologyComplete(result.RiseSetCurves) {
t.Fatalf("step %gs: rise/set curves are empty or not time-ordered", stepSeconds)
}
}
}
func TestSolarEclipseNonCentralGreatestHorizonWithoutTimeFold(t *testing.T) {
if go116386() {
t.Skip("Go 1.16/386 的浮点分支在掠射边界多分出段;精确拓扑由 Go 1.17+ 门禁覆盖")
}
seed := JDCalc(1957, 10, 23)
solver := newSolarEclipseSolver(CalcMoonSHByJDE(seed, 0), SolarEclipseModelNASABulletinSplitK)
for _, stepSeconds := range []float64{120, 5} {