tile38/pkg/geojson/featurecollection_test.go

115 lines
3.9 KiB
Go

package geojson
import (
"testing"
)
func TestFeatureCollection(t *testing.T) {
testJSON(t, `{
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"geometry": {
"type": "Point","coordinates": [-80.87088507656375,35.21515162500578]
},
"properties": {
"name": "ABBOTT NEIGHBORHOOD PARK","address": "1300 SPRUCE ST"
}
},
{
"type": "Feature",
"geometry": {
"type": "Point","coordinates": [-80.83775386582222,35.24980190252168]
},
"properties": {
"name": "DOUBLE OAKS CENTER","address": "1326 WOODWARD AV"
}
},
{
"type": "Feature",
"geometry": {
"type": "Point","coordinates": [-80.83827000459532,35.25674709224663]
},
"properties": {
"name": "DOUBLE OAKS NEIGHBORHOOD PARK","address": "2605 DOUBLE OAKS RD"
}
},
{
"type": "Feature",
"geometry": {
"type": "Point","coordinates": [-80.83697759172735,35.25751734669229]
},
"properties": {
"name": "DOUBLE OAKS POOL","address": "1200 NEWLAND RD"
}
},
{
"type": "Feature",
"geometry": {
"type": "Point","coordinates": [-80.81647652154736,35.40148708491418]
},
"properties": {
"name": "DAVID B. WAYMER FLYING REGIONAL PARK","address": "15401 HOLBROOKS RD"
}
},
{
"type": "Feature",
"geometry": {
"type": "Point","coordinates": [-80.83556459443902,35.39917224760999]
},
"properties": {
"name": "DAVID B. WAYMER COMMUNITY PARK","address": "302 HOLBROOKS RD"
}
},
{
"type": "Feature",
"geometry": {
"type": "Polygon","coordinates": [
[
[-80.72487831115721,35.26545403190955],
[-80.72135925292969,35.26727607954368],
[-80.71517944335938,35.26769654625573],
[-80.7125186920166,35.27035945142482],
[-80.70857048034668,35.268257165144064],
[-80.70479393005371,35.268397319259996],
[-80.70324897766113,35.26503355355979],
[-80.71088790893555,35.2553619492954],
[-80.71681022644043,35.2553619492954],
[-80.7150936126709,35.26054831539319],
[-80.71869850158691,35.26026797976481],
[-80.72032928466797,35.26061839914875],
[-80.72264671325684,35.26033806376283],
[-80.72487831115721,35.26545403190955]
]
]
},
"properties": {
"name": "Plaza Road Park"
}
}
]
}`)
}
func TestPointBounding(t *testing.T) {
featureCollectionJSON := `{"type":"FeatureCollection","features":[{"type":"Feature","geometry":{"type":"Point","coordinates":[-75.1,56.283333]}}]}`
polyFeatureJSON := `{"type": "FeatureCollection","features": [{"type": "Feature","properties": {},"geometry": {"type": "Polygon","coordinates": [[
[-112.8515625,-29.535229562948444],
[85.4296875,-2.535229562948444],
[85.4296875,65.36683689226321],
[-112.8515625,65.36683689226321],
[-112.8515625,-29.535229562948444]
]]}}]}`
featureCollection := testJSON(t, featureCollectionJSON).(FeatureCollection)
poly := testJSON(t, polyFeatureJSON).(FeatureCollection)
r1 := featureCollection.Within(poly)
r2 := featureCollection.Intersects(poly)
if r1 != r2 || !r1 {
t.Fatalf("expected %v/%v, got %v/%v", true, true, r1, r2)
}
}