imposm3/geom/geos/geos_test.go

90 lines
1.6 KiB
Go

package geos
import (
"fmt"
"testing"
)
func TestFoo(t *testing.T) {
_ = NewGeos()
}
func BenchmarkWKB(b *testing.B) {
g := NewGeos()
defer g.Finish()
for i := 0; i < b.N; i++ {
cs, _ := g.CreateCoordSeq(10, 2)
for i := 0; i < 10; i++ {
cs.SetXY(g, uint32(i), float64(i*10), 0)
}
geom, _ := cs.AsLineString(g)
if g.IsValid(geom) == false {
b.Fail()
}
g.AsWkb(geom)
g.Destroy(geom)
}
}
func TestIndexQuery(t *testing.T) {
g := NewGeos()
defer g.Finish()
idx := g.CreateIndex()
for i := 0; i < 10; i++ {
p := g.FromWkt(fmt.Sprintf("POLYGON((%d 0, 10 0, 10 10, %d 10, %d 0))", i, i, i))
if p == nil {
t.Fatal()
}
g.IndexAdd(idx, p)
}
if geoms := g.IndexQuery(idx, g.Point(0, 10.000001)); len(geoms) != 0 {
t.Fatal(geoms)
}
if geoms := g.IndexQuery(idx, g.Point(9.5, 5)); len(geoms) != 10 {
t.Fatal(geoms)
}
if geoms := g.IndexQuery(idx, g.Point(0.5, 5)); len(geoms) != 1 {
t.Fatal(geoms)
}
if geoms := g.IndexQuery(idx, g.Point(4.5, 5)); len(geoms) != 5 {
t.Fatal(geoms)
}
}
func BenchmarkIndexQuery(b *testing.B) {
g := NewGeos()
defer g.Finish()
idx := g.CreateIndex()
for i := 0; i < 10; i++ {
p := g.FromWkt(fmt.Sprintf("POLYGON((%d 0, 10 0, 10 10, %d 10, %d 0))", i, i, i))
if p == nil {
b.Fatal()
}
g.IndexAdd(idx, p)
}
for i := 0; i < b.N; i++ {
if geoms := g.IndexQuery(idx, g.Point(8.5, 5)); len(geoms) != 9 {
b.Fatal(geoms)
}
}
// if geoms := g.IndexQuery(idx, g.Point(0, 0)); len(geoms) != 10 {
// b.Fatal(geoms)
// }
// if geoms := g.IndexQuery(idx, g.Point(5, 5)); len(geoms) != 10 {
// b.Fatal(geoms)
// }
}