package main import ( "bytes" "strings" "testing" ) func TestIPLast(t *testing.T) { got := ipLast([]string{"1.2.3.4", "--app", "a"}) if strings.Join(got, " ") != "--app a 1.2.3.4" { t.Fatalf("ipLast = %v", got) } got = ipLast([]string{"--app", "a", "1.2.3.4"}) if strings.Join(got, " ") != "--app a 1.2.3.4" { t.Fatalf("ipLast = %v", got) } } func TestPrintGeo(t *testing.T) { lat, lon := 51.51, -0.09 var out bytes.Buffer printGeo(&out, "81.2.69.142", apiGeoResponse{Found: true, Country: "GB", Subdivision: "GB-ENG", Lat: &lat, Lon: &lon, Source: "DBIP-City-Lite", Attribution: "IP Geolocation by DB-IP", AttributionURL: "https://db-ip.com"}) for _, want := range []string{"country GB", "subdivision GB-ENG", "51.51, -0.09", "IP Geolocation by DB-IP"} { if !strings.Contains(out.String(), want) { t.Errorf("output lacks %q:\n%s", want, out.String()) } } out.Reset() printGeo(&out, "10.0.0.1", apiGeoResponse{}) if !strings.Contains(out.String(), "no location") { t.Fatalf("miss = %q", out.String()) } }