72460fa228
- 将星表名称数据收敛为 TSV/GZIP 单一数据源,补充中文名、别名、英文常用名及宿/垣区域字段 - 增加星表名称表加载校验、旧详情字段一致性校验和 GZIP 漂移检查 - 新增 StarDataByName、StarDataByNameAll、StarDataByNameIn ,统一中英文查询与重名消歧 - 优化日月食半影带、升落曲线和可见性回归测试,补充极区、拓扑及低精度场景覆盖 - 增加 Go 1.16/386 兼容门禁和测试案例,处理旧工具链的分配、拓扑、SVG字节及 ULP 差异 - 补充星表、坐标、日月食和低精度回归用例,完善测试文件与缓存忽略规则
67 lines
2.0 KiB
Go
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)
|
|
}
|
|
}
|