43 lines
1023 B
Go
43 lines
1023 B
Go
package uls
|
|
|
|
import (
|
|
"os"
|
|
"testing"
|
|
)
|
|
|
|
func TestGrid6(t *testing.T) {
|
|
cases := []struct {
|
|
lat, lon float64
|
|
want string
|
|
}{
|
|
{38.90, -77.03, "FM18lw"}, // Washington DC
|
|
{40.71, -74.00, "FN30xr"}, // New York
|
|
{34.05, -118.24, "DM04vd"},// Los Angeles
|
|
}
|
|
for _, c := range cases {
|
|
if got := grid6(c.lat, c.lon); got[:4] != c.want[:4] {
|
|
t.Errorf("grid6(%v,%v)=%q want field/square %q", c.lat, c.lon, got, c.want[:4])
|
|
}
|
|
}
|
|
}
|
|
|
|
// TestParseGeoNames runs against the real GeoNames US.zip if present in the
|
|
// scratchpad (downloaded during development); skipped otherwise.
|
|
func TestParseGeoNames(t *testing.T) {
|
|
path := os.Getenv("GEONAMES_ZIP")
|
|
if path == "" {
|
|
t.Skip("set GEONAMES_ZIP to the US.zip path to run")
|
|
}
|
|
m, err := parseGeoNames(path)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if len(m) < 30000 {
|
|
t.Fatalf("expected >30k ZIPs, got %d", len(m))
|
|
}
|
|
// A known ZIP: 20500 = The White House, DC.
|
|
if r, ok := m["20500"]; !ok || r.state != "DC" {
|
|
t.Errorf("ZIP 20500 = %+v (ok=%v)", r, ok)
|
|
}
|
|
}
|