Files
astro/star/star_name_test.go
T

67 lines
2.0 KiB
Go
Raw Normal View History

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)
}
}