mirror of https://github.com/tidwall/tile38.git
81 lines
3.0 KiB
Go
81 lines
3.0 KiB
Go
package geojson
|
|
|
|
import "testing"
|
|
|
|
func TestLineString(t *testing.T) {
|
|
testJSON(t, `{"type":"LineString","coordinates":[[100.1,5.1],[101.1,51.1]]}`)
|
|
testJSON(t, `{"type":"LineString","coordinates":[[100.1,5.1],[101.1,51.1]],"bbox":[10,20,30,40]}`)
|
|
testJSON(t, `{"type":"LineString","coordinates":[[100.1,5.1,15.5],[101.1,51.1,20],[10001.1,71.1,10]],"bbox":[10,20,12,30,40,15]}`)
|
|
testJSON(t, `{
|
|
"type": "LineString",
|
|
"coordinates": [
|
|
[-101.744384765625,39.32155002466662],
|
|
[-101.5521240234375,39.330048552942415],
|
|
[-101.40380859375,39.330048552942415],
|
|
[-101.33239746093749,39.364032338047984],
|
|
[-101.041259765625,39.36827914916011],
|
|
[-100.975341796875,39.30454987014581],
|
|
[-100.9149169921875,39.24501680713314],
|
|
[-100.843505859375,39.16414104768742],
|
|
[-100.8050537109375,39.104488809440475],
|
|
[-100.491943359375,39.10022600175347],
|
|
[-100.43701171875,39.095962936305476],
|
|
[-100.338134765625,39.095962936305476],
|
|
[-100.1953125,39.027718840211605],
|
|
[-100.008544921875,39.01064750994083],
|
|
[-99.86572265625,39.00211029922512],
|
|
[-99.6844482421875,38.97222194853654],
|
|
[-99.51416015625,38.929502416386605],
|
|
[-99.38232421875,38.92095542046727],
|
|
[-99.3218994140625,38.89530825492018],
|
|
[-99.1131591796875,38.86965182408357],
|
|
[-99.0802001953125,38.85682013474361],
|
|
[-98.82202148437499,38.85682013474361],
|
|
[-98.44848632812499,38.84826438869913],
|
|
[-98.20678710937499,38.84826438869913],
|
|
[-98.02001953125,38.8782049970615],
|
|
[-97.635498046875,38.87392853923629]
|
|
]
|
|
}`)
|
|
}
|
|
|
|
func TestLineStringWithinBBox(t *testing.T) {
|
|
bbox := BBox{Min: Position{0, 0, 0}, Max: Position{100, 100, 0}}
|
|
p := testJSON(t, `{"type":"LineString","coordinates":[[10,10],[20,20]],"bbox":[0,0,100,100]}`).(LineString)
|
|
if !p.WithinBBox(bbox) {
|
|
t.Fatal("!")
|
|
}
|
|
p = testJSON(t, `{"type":"LineString","coordinates":[[10,10],[20,20]]}`).(LineString)
|
|
if !p.WithinBBox(bbox) {
|
|
t.Fatal("!")
|
|
}
|
|
p = testJSON(t, `{"type":"LineString","coordinates":[[10,10],[20,20]],"bbox":[-10,-10,100,100]}`).(LineString)
|
|
if p.WithinBBox(bbox) {
|
|
t.Fatal("!")
|
|
}
|
|
p = testJSON(t, `{"type":"LineString","coordinates":[[-10,-10],[-20,-20]]}`).(LineString)
|
|
if p.WithinBBox(bbox) {
|
|
t.Fatal("!")
|
|
}
|
|
}
|
|
|
|
func TestLineStringIntersectsBBox(t *testing.T) {
|
|
bbox := BBox{Min: Position{0, 0, 0}, Max: Position{100, 100, 0}}
|
|
p := testJSON(t, `{"type":"LineString","coordinates":[[10,10],[20,20]],"bbox":[0,0,100,100]}`).(LineString)
|
|
if !p.IntersectsBBox(bbox) {
|
|
t.Fatal("!")
|
|
}
|
|
p = testJSON(t, `{"type":"LineString","coordinates":[[-1,3],[3,-1]]}`).(LineString)
|
|
if !p.IntersectsBBox(bbox) {
|
|
t.Fatal("!")
|
|
}
|
|
p = testJSON(t, `{"type":"LineString","coordinates":[[-1,1],[1,-1]]}`).(LineString)
|
|
if !p.IntersectsBBox(bbox) {
|
|
t.Fatal("!")
|
|
}
|
|
p = testJSON(t, `{"type":"LineString","coordinates":[[-2,1],[1,-1]]}`).(LineString)
|
|
if p.IntersectsBBox(bbox) {
|
|
t.Fatal("!")
|
|
}
|
|
}
|