mirror of https://github.com/tidwall/tile38.git
81 lines
2.8 KiB
Go
81 lines
2.8 KiB
Go
package geojson
|
|
|
|
import (
|
|
"testing"
|
|
)
|
|
|
|
func TestMultiLineString(t *testing.T) {
|
|
testJSON(t, `{"type":"MultiLineString","coordinates":[[[100.1,5.1],[101.1,6.1]],[[102.1,7.1],[103.1,8.1]]]}`)
|
|
testJSON(t, `{
|
|
"type": "MultiLineString",
|
|
"coordinates": [
|
|
[
|
|
[-105.0214433670044,39.57805759162015],
|
|
[-105.02150774002075,39.57780951131517],
|
|
[-105.02157211303711,39.57749527498758],
|
|
[-105.02157211303711,39.57716449836683],
|
|
[-105.02157211303711,39.57703218727656],
|
|
[-105.02152919769287,39.57678410330158]
|
|
],
|
|
[
|
|
[-105.01989841461182,39.574997872470774],
|
|
[-105.01959800720215,39.57489863607502],
|
|
[-105.01906156539916,39.57478286010041]
|
|
],
|
|
[
|
|
[-105.01717329025269,39.5744024519653],
|
|
[-105.01698017120361,39.574385912433804],
|
|
[-105.0166368484497,39.574385912433804],
|
|
[-105.01650810241699,39.5744024519653],
|
|
[-105.0159502029419,39.574270135602866]
|
|
],
|
|
[
|
|
[-105.0142765045166,39.57397242286402],
|
|
[-105.01412630081175,39.57403858136094],
|
|
[-105.0138258934021,39.57417089816531],
|
|
[-105.01331090927124,39.57445207053608]
|
|
]
|
|
]
|
|
}`)
|
|
}
|
|
|
|
func TestMultiLineStringWithinBBox(t *testing.T) {
|
|
bbox := BBox{Min: Position{0, 0, 0}, Max: Position{100, 100, 0}}
|
|
p := testJSON(t, `{"type":"MultiLineString","coordinates":[[[10,10],[20,20]]],"bbox":[0,0,100,100]}`).(MultiLineString)
|
|
if !p.WithinBBox(bbox) {
|
|
t.Fatal("!")
|
|
}
|
|
p = testJSON(t, `{"type":"MultiLineString","coordinates":[[[10,10],[20,20]],[[30,30],[40,40]]]}`).(MultiLineString)
|
|
if !p.WithinBBox(bbox) {
|
|
t.Fatal("!")
|
|
}
|
|
p = testJSON(t, `{"type":"MultiLineString","coordinates":[[[10,10],[20,20]]],"bbox":[-10,-10,100,100]}`).(MultiLineString)
|
|
if p.WithinBBox(bbox) {
|
|
t.Fatal("!")
|
|
}
|
|
p = testJSON(t, `{"type":"MultiLineString","coordinates":[[[-10,-10],[-20,-20]]]}`).(MultiLineString)
|
|
if p.WithinBBox(bbox) {
|
|
t.Fatal("!")
|
|
}
|
|
}
|
|
|
|
func TestMultiLineStringIntersectsBBox(t *testing.T) {
|
|
bbox := BBox{Min: Position{0, 0, 0}, Max: Position{100, 100, 0}}
|
|
p := testJSON(t, `{"type":"MultiLineString","coordinates":[[[10,10],[20,20]]],"bbox":[0,0,100,100]}`).(MultiLineString)
|
|
if !p.IntersectsBBox(bbox) {
|
|
t.Fatal("!")
|
|
}
|
|
p = testJSON(t, `{"type":"MultiLineString","coordinates":[[[-1,3],[3,-1]],[[-1000,-1000],[-1020,-1020]]]}`).(MultiLineString)
|
|
if !p.IntersectsBBox(bbox) {
|
|
t.Fatal("!")
|
|
}
|
|
p = testJSON(t, `{"type":"MultiLineString","coordinates":[[[-1,1],[1,-1]]]}`).(MultiLineString)
|
|
if !p.IntersectsBBox(bbox) {
|
|
t.Fatal("!")
|
|
}
|
|
p = testJSON(t, `{"type":"MultiLineString","coordinates":[[[-2,1],[1,-1]]]}`).(MultiLineString)
|
|
if p.IntersectsBBox(bbox) {
|
|
t.Fatal("!")
|
|
}
|
|
}
|