Files
2026-06-05 17:26:44 +08:00

42 lines
1.1 KiB
Go

package geo
import (
"context"
"testing"
ipdata "speedtest/data"
)
func TestClientInfoFromIP2RegionParsesRegionFields(t *testing.T) {
info := clientInfoFromIP2Region("39.181.21.1", "中国|浙江省|杭州市|移动|CN")
if info.Country != "中国" || info.Region != "浙江省" || info.City != "杭州市" {
t.Fatalf("location info = %#v, want parsed country/region/city", info)
}
if info.ISP != "移动" {
t.Fatalf("ISP = %q, want 移动", info.ISP)
}
if info.ASN != "" {
t.Fatalf("ASN = %q, want empty because ip2region field 5 is country code", info.ASN)
}
}
func TestEmbeddedXDBResolverReturnsISP(t *testing.T) {
db, err := ipdata.FileSystem().ReadFile("ip2region_v4.xdb")
if err != nil {
t.Fatalf("read embedded xdb: %v", err)
}
resolver, err := NewXDBResolver(db)
if err != nil {
t.Fatalf("NewXDBResolver: %v", err)
}
info, err := resolver.Resolve(context.Background(), "39.181.21.1")
if err != nil {
t.Fatalf("Resolve returned error: %v", err)
}
if info.IP != "39.181.21.1" || info.ISP == "" {
t.Fatalf("info = %#v, want ip and ISP from embedded xdb", info)
}
}