Files
astro/star/star_name_test.go
T
b612 72460fa228 feat: 完善星表查询与跨版本回归验证
- 将星表名称数据收敛为 TSV/GZIP 单一数据源,补充中文名、别名、英文常用名及宿/垣区域字段
- 增加星表名称表加载校验、旧详情字段一致性校验和 GZIP 漂移检查
- 新增 StarDataByName、StarDataByNameAll、StarDataByNameIn ,统一中英文查询与重名消歧
- 优化日月食半影带、升落曲线和可见性回归测试,补充极区、拓扑及低精度场景覆盖
- 增加 Go 1.16/386 兼容门禁和测试案例,处理旧工具链的分配、拓扑、SVG字节及 ULP 差异
- 补充星表、坐标、日月食和低精度回归用例,完善测试文件与缓存忽略规则
2026-10-18 16:13:14 +08:00

67 lines
2.0 KiB
Go

package star
import (
"errors"
"testing"
)
func TestStarDataByNameAmbiguity(t *testing.T) {
if err := InitStarDatabase(); err != nil {
t.Fatal(err)
}
if _, err := StarDataByName("杵增一"); !errors.Is(err, ErrStarNameAmbiguous) {
t.Fatalf("StarDataByName(杵增一) error = %v, want ErrStarNameAmbiguous", err)
}
if _, err := StarDataByName("不存在的星名"); !errors.Is(err, ErrStarNotFound) {
t.Fatalf("StarDataByName(不存在的星名) error = %v, want ErrStarNotFound", err)
}
if _, err := StarDataByNameIn("杵增一", ""); !errors.Is(err, ErrStarNameAmbiguous) {
t.Fatalf("StarDataByNameIn(杵增一, \"\") error = %v, want ErrStarNameAmbiguous", err)
}
matches, err := StarDataByNameAll("杵增一")
if err != nil {
t.Fatal(err)
}
if len(matches) != 2 || matches[0].HR != 6743 || matches[1].HR != 8449 {
t.Fatalf("StarDataByNameAll(杵增一) = %v, want HR 6743 and 8449", matches)
}
tests := []struct {
name string
region string
hr uint16
}{
{"杵增一", "箕宿", 6743},
{"杵增一", "危宿", 8449},
{"杵一", "箕宿", 6537},
{"杵一", "危宿", 8498},
}
for _, tc := range tests {
got, err := StarDataByNameIn(tc.name, tc.region)
if err != nil {
t.Fatalf("StarDataByNameIn(%q, %q): %v", tc.name, tc.region, err)
}
if got.HR != tc.hr || got.ChineseRegion != tc.region {
t.Fatalf("StarDataByNameIn(%q, %q) = HR %d region %q, want HR %d region %q",
tc.name, tc.region, got.HR, got.ChineseRegion, tc.hr, tc.region)
}
}
english, err := StarDataByName("sirius")
if err != nil {
t.Fatal(err)
}
if english.HR != 2491 {
t.Fatalf("StarDataByName(sirius) = HR %d, want 2491", english.HR)
}
if _, err := StarDataByName("Gienah"); !errors.Is(err, ErrStarNameAmbiguous) {
t.Fatalf("StarDataByName(Gienah) error = %v, want ErrStarNameAmbiguous", err)
}
got, err := StarDataByName("杵增一[危宿]")
if err != nil {
t.Fatal(err)
}
if got.HR != 8449 {
t.Fatalf("StarDataByName(杵增一[危宿]) = HR %d, want 8449", got.HR)
}
}