49 lines
1.4 KiB
Go
49 lines
1.4 KiB
Go
package parser
|
|
|
|
import "testing"
|
|
|
|
func TestColumns_GeoJSON(t *testing.T) {
|
|
data := []byte(`{
|
|
"type": "FeatureCollection",
|
|
"features": [
|
|
{"type":"Feature","properties":{"ObjectID":1,"F_2023":100,"D_2025":200,"като":"751010000"},"geometry":null},
|
|
{"type":"Feature","properties":{"ObjectID":2,"F_2023":150,"D_2025":250,"като":"751020000"},"geometry":null}
|
|
]
|
|
}`)
|
|
|
|
cols, err := Columns("regions.geojson", data)
|
|
if err != nil {
|
|
t.Fatalf("unexpected error: %v", err)
|
|
}
|
|
|
|
// Order must follow the first feature's properties.
|
|
wantNames := []string{"ObjectID", "F_2023", "D_2025", "като"}
|
|
if len(cols) != len(wantNames) {
|
|
t.Fatalf("want %d columns, got %d (%+v)", len(wantNames), len(cols), cols)
|
|
}
|
|
for i, want := range wantNames {
|
|
if cols[i].Name != want {
|
|
t.Errorf("column %d = %q, want %q", i, cols[i].Name, want)
|
|
}
|
|
}
|
|
|
|
// KATO column should carry sample values from both features.
|
|
kato := cols[3]
|
|
if len(kato.Samples) != 2 || kato.Samples[0] != "751010000" {
|
|
t.Errorf("unexpected kato samples: %v", kato.Samples)
|
|
}
|
|
}
|
|
|
|
func TestColumns_UnsupportedFormat(t *testing.T) {
|
|
if _, err := Columns("data.txt", []byte("x")); err == nil {
|
|
t.Fatal("expected error for unsupported format")
|
|
}
|
|
}
|
|
|
|
func TestColumns_GeoJSONNoFeatures(t *testing.T) {
|
|
_, err := Columns("empty.geojson", []byte(`{"type":"FeatureCollection","features":[]}`))
|
|
if err == nil {
|
|
t.Fatal("expected error for empty feature collection")
|
|
}
|
|
}
|