Make great documentation goal 1.2, and plan the README's reorganisation and the nested-template gaps #33
+31
-6
@@ -376,18 +376,21 @@ func TestShippedAddressIsOneNamedPick(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// TestShippedPlacesSpreadAddresses pins that a big city ships 100 streets or more, and that
|
// TestShippedPlacesSpreadAddresses pins that Göteborg ships every street, Los Angeles a
|
||||||
// some US place holds under 2,500 people.
|
// quarter of its streets, and that some US place holds under 2,500 people.
|
||||||
func TestShippedPlacesSpreadAddresses(t *testing.T) {
|
func TestShippedPlacesSpreadAddresses(t *testing.T) {
|
||||||
for country, city := range map[string]string{"SE": "Göteborg", "US": "3651000"} {
|
for country, city := range map[string]struct {
|
||||||
|
key string
|
||||||
|
least int
|
||||||
|
}{"SE": {"Göteborg", 1500}, "US": {"0644000", 2500}} {
|
||||||
streets := 0
|
streets := 0
|
||||||
for _, r := range geoRows(t, country, "street") {
|
for _, r := range geoRows(t, country, "street") {
|
||||||
if r[1] == city {
|
if r[1] == city.key {
|
||||||
streets++
|
streets++
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if streets < 100 {
|
if streets < city.least {
|
||||||
t.Errorf("geo.%s: %s ships %d streets, want at least 100", country, city, streets)
|
t.Errorf("geo.%s: %s ships %d streets, want at least %d", country, city.key, streets, city.least)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
header, _, _ := strings.Cut(geoTSV(t, "US", "locality"), "\n")
|
header, _, _ := strings.Cut(geoTSV(t, "US", "locality"), "\n")
|
||||||
@@ -407,6 +410,28 @@ func TestShippedPlacesSpreadAddresses(t *testing.T) {
|
|||||||
t.Error("geo.US: every locality holds 2500 people or more, want places drawn down to villages")
|
t.Error("geo.US: every locality holds 2500 people or more, want places drawn down to villages")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TestShippedCapitalsAndBigPlaces pins state capitals and places of 100,000 or more that a
|
||||||
|
// draw by population leaves out.
|
||||||
|
func TestShippedCapitalsAndBigPlaces(t *testing.T) {
|
||||||
|
state := map[string]string{}
|
||||||
|
for _, r := range geoRows(t, "US", "municipality") {
|
||||||
|
state[r[0]] = r[2]
|
||||||
|
}
|
||||||
|
shipped := map[string]bool{}
|
||||||
|
for _, r := range geoRows(t, "US", "locality") {
|
||||||
|
shipped[r[1]+", "+state[r[2]]] = true
|
||||||
|
}
|
||||||
|
for _, place := range []string{
|
||||||
|
"Albany, NY", "Augusta, ME", "Baton Rouge, LA", "Bismarck, ND", "Boise, ID", "Charleston, WV",
|
||||||
|
"Frankfort, KY", "Harrisburg, PA", "Helena, MT", "Juneau, AK", "Kansas City, KS", "Lafayette, LA",
|
||||||
|
"Montpelier, VT", "New Orleans, LA", "Pierre, SD", "St. Paul, MN", "Stockton, CA",
|
||||||
|
} {
|
||||||
|
if !shipped[place] {
|
||||||
|
t.Errorf("geo.US: no locality %s, want every state capital and place of 100,000 or more", place)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func geoTSV(t *testing.T, country, table string) string {
|
func geoTSV(t *testing.T, country, table string) string {
|
||||||
b, err := os.ReadFile("data/geo/" + country + "/" + table + ".tsv")
|
b, err := os.ReadFile("data/geo/" + country + "/" + table + ".tsv")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
Reference in New Issue
Block a user