mapserver/mapobjectdb/sqlite/mapobjects_test.go

215 lines
3.2 KiB
Go
Raw Normal View History

2019-02-05 15:25:01 +03:00
package sqlite
2019-01-14 14:38:26 +03:00
import (
2019-01-25 13:18:35 +03:00
"fmt"
2019-01-14 14:38:26 +03:00
"io/ioutil"
2019-02-07 10:02:13 +03:00
"mapserver/mapobjectdb"
2023-12-29 18:00:11 +03:00
"mapserver/types"
2019-01-14 14:38:26 +03:00
"os"
"testing"
)
func TestMigrate(t *testing.T) {
2019-01-17 10:01:48 +03:00
tmpfile, err := ioutil.TempFile("", "TileDBTest.*.sqlite")
2019-01-14 14:38:26 +03:00
if err != nil {
panic(err)
}
defer os.Remove(tmpfile.Name())
2019-02-05 15:25:01 +03:00
db, err := New(tmpfile.Name())
2019-01-14 14:38:26 +03:00
if err != nil {
panic(err)
}
err = db.Migrate()
if err != nil {
panic(err)
}
2019-01-14 14:48:46 +03:00
2019-01-14 14:38:26 +03:00
}
2019-01-23 16:23:24 +03:00
func TestMapObjects(t *testing.T) {
tmpfile, err := ioutil.TempFile("", "TestMapObjects.*.sqlite")
if err != nil {
panic(err)
}
2019-01-24 16:04:52 +03:00
//defer os.Remove(tmpfile.Name())
2019-01-23 16:23:24 +03:00
2019-02-05 15:25:01 +03:00
db, err := New(tmpfile.Name())
2019-01-23 16:23:24 +03:00
if err != nil {
panic(err)
}
err = db.Migrate()
if err != nil {
panic(err)
}
attrs := make(map[string]string)
attrs["X"] = "y"
2023-12-29 18:00:11 +03:00
pos := types.NewMapBlockCoords(0, 0, 0)
2019-01-23 16:23:24 +03:00
2019-02-05 15:25:01 +03:00
o := mapobjectdb.MapObject{
2019-02-06 10:38:08 +03:00
MBPos: pos,
2019-02-06 10:09:21 +03:00
X: 15,
Y: 15,
Z: 15,
2019-01-23 18:06:56 +03:00
Type: "xy",
Mtime: 1234,
2019-01-23 16:23:24 +03:00
Attributes: attrs,
}
2019-01-24 10:26:28 +03:00
err = db.AddMapData(&o)
2019-01-23 16:23:24 +03:00
if err != nil {
panic(err)
}
2022-01-17 11:11:24 +03:00
limit := 1000
2019-02-05 15:25:01 +03:00
q := mapobjectdb.SearchQuery{
2022-01-17 11:11:24 +03:00
Pos1: pos,
Pos2: pos,
Type: "xy",
Limit: &limit,
2019-01-25 12:39:17 +03:00
}
2019-02-22 20:30:38 +03:00
objs, err := db.GetMapData(&q)
2019-01-25 12:39:17 +03:00
if err != nil {
panic(err)
}
2019-01-25 13:02:36 +03:00
for _, mo := range objs {
fmt.Println(mo)
}
2019-01-25 12:39:17 +03:00
2019-01-23 16:23:24 +03:00
}
func TestMapObjectsQueryWithAttribute(t *testing.T) {
tmpfile, err := ioutil.TempFile("", "TestMapObjects.*.sqlite")
if err != nil {
panic(err)
}
//defer os.Remove(tmpfile.Name())
db, err := New(tmpfile.Name())
if err != nil {
panic(err)
}
err = db.Migrate()
if err != nil {
panic(err)
}
attrs := make(map[string]string)
attrs["X"] = "y"
2023-12-29 18:00:11 +03:00
pos := types.NewMapBlockCoords(0, 0, 0)
o := mapobjectdb.MapObject{
MBPos: pos,
X: 15,
Y: 15,
Z: 15,
Type: "xy",
Mtime: 1234,
Attributes: attrs,
}
err = db.AddMapData(&o)
if err != nil {
panic(err)
}
2022-01-17 11:11:24 +03:00
limit := 1000
q := mapobjectdb.SearchQuery{
Pos1: pos,
Pos2: pos,
Type: "xy",
AttributeLike: &mapobjectdb.SearchAttributeLike{
Key: "X",
Value: "%y",
},
2022-01-17 11:11:24 +03:00
Limit: &limit,
}
objs, err := db.GetMapData(&q)
if err != nil {
panic(err)
}
for _, mo := range objs {
fmt.Println(mo)
}
if len(objs) != 1 {
panic("length mismatch")
}
}
2019-06-11 14:26:19 +03:00
func TestMapObjectsQueryWithAttributeIgnoreCase(t *testing.T) {
tmpfile, err := ioutil.TempFile("", "TestMapObjects.*.sqlite")
if err != nil {
panic(err)
}
//defer os.Remove(tmpfile.Name())
db, err := New(tmpfile.Name())
if err != nil {
panic(err)
}
err = db.Migrate()
if err != nil {
panic(err)
}
attrs := make(map[string]string)
attrs["X"] = "ABC"
2023-12-29 18:00:11 +03:00
pos := types.NewMapBlockCoords(0, 0, 0)
2019-06-11 14:26:19 +03:00
o := mapobjectdb.MapObject{
MBPos: pos,
X: 15,
Y: 15,
Z: 15,
Type: "xy",
Mtime: 1234,
Attributes: attrs,
}
err = db.AddMapData(&o)
if err != nil {
panic(err)
}
2022-01-17 11:11:24 +03:00
limit := 1000
2019-06-11 14:26:19 +03:00
q := mapobjectdb.SearchQuery{
Pos1: pos,
Pos2: pos,
Type: "xy",
AttributeLike: &mapobjectdb.SearchAttributeLike{
Key: "X",
Value: "%bc",
},
2022-01-17 11:11:24 +03:00
Limit: &limit,
2019-06-11 14:26:19 +03:00
}
objs, err := db.GetMapData(&q)
if err != nil {
panic(err)
}
for _, mo := range objs {
fmt.Println(mo)
}
if len(objs) != 1 {
panic("length mismatch")
}
}