package natal import ( "testing" "time" ) func TestComputeDeterministic(t *testing.T) { birth := time.Date(1990, 5, 12, 0, 0, 0, 0, time.UTC) bt := "10:30" place := "上海" a, err := Compute(birth, &bt, &place) if err != nil { t.Fatal(err) } b, err := Compute(birth, &bt, &place) if err != nil { t.Fatal(err) } if a.Sun.Sign != b.Sun.Sign || a.Moon.Lon != b.Moon.Lon || a.Rise.Sign != b.Rise.Sign { t.Fatal("not deterministic") } if len(a.Planets) < 8 || len(a.Houses) != 12 { t.Fatalf("planets=%d houses=%d", len(a.Planets), len(a.Houses)) } if a.Sun.Sign == "" { t.Fatal("empty sun") } } func TestResolvePlaceBeijing(t *testing.T) { lat, lng, name, ok := ResolvePlace("北京") if !ok || name != "北京" || lat < 39 || lng < 116 { t.Fatalf("got %v %v %s %v", lat, lng, name, ok) } _, _, name2, ok2 := ResolvePlace("北京市 市辖区 朝阳区") if !ok2 || name2 != "北京" { t.Fatalf("pca resolve got %s %v", name2, ok2) } _, _, name3, ok3 := ResolvePlace("浙江省 杭州市 西湖区") if !ok3 || name3 != "杭州" { t.Fatalf("hangzhou resolve got %s %v", name3, ok3) } } func TestSunSignMay(t *testing.T) { c, err := Compute(time.Date(1990, 5, 12, 0, 0, 0, 0, time.UTC), nil, nil) if err != nil { t.Fatal(err) } // mid-May → Taurus if c.Sun.SignKey != "taurus" { t.Fatalf("want taurus got %s", c.Sun.SignKey) } }