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
|
|
|
}
|
2019-04-14 22:13:59 +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)
|
2019-04-14 22:13:59 +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-04-14 22:13:59 +03:00
|
|
|
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,
|
2019-04-14 22:13:59 +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")
|
|
|
|
}
|
|
|
|
}
|
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")
|
|
|
|
}
|
|
|
|
}
|