mirror of
https://github.com/omniscale/magnacarto.git
synced 2025-02-23 07:54:10 +01:00
120 lines
2.2 KiB
Go
120 lines
2.2 KiB
Go
package builder
|
|
|
|
import (
|
|
"io/ioutil"
|
|
"os"
|
|
"path/filepath"
|
|
"testing"
|
|
|
|
"github.com/omniscale/magnacarto/mml"
|
|
"github.com/omniscale/magnacarto/mss"
|
|
)
|
|
|
|
type mockLayer struct {
|
|
layer mml.Layer
|
|
rules []mss.Rule
|
|
}
|
|
|
|
type mockMap struct {
|
|
layers []mockLayer
|
|
}
|
|
|
|
func (m *mockMap) AddLayer(layer mml.Layer, rules []mss.Rule) {
|
|
m.layers = append(m.layers, mockLayer{layer, rules})
|
|
}
|
|
|
|
func TestBuildEmpty(t *testing.T) {
|
|
m := mockMap{}
|
|
b := New(&m)
|
|
if err := b.Build(); err != nil {
|
|
t.Error(err)
|
|
}
|
|
}
|
|
|
|
func TestBuildMissingMSSFile(t *testing.T) {
|
|
m := mockMap{}
|
|
b := New(&m)
|
|
b.AddMSS("invalid file")
|
|
if err := b.Build(); err == nil {
|
|
t.Error("no error returned for missing file")
|
|
}
|
|
}
|
|
|
|
func TestBuildSimpleMSS(t *testing.T) {
|
|
m := mockMap{}
|
|
b := New(&m)
|
|
b.AddMSS(filepath.Join("tests", "001-single-layer.mss"))
|
|
if err := b.Build(); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if len(m.layers) != 1 {
|
|
t.Fatal(m.layers)
|
|
}
|
|
if len(m.layers[0].rules) != 1 || m.layers[0].rules[0].Layer != "foo" {
|
|
t.Error(m.layers[0].rules)
|
|
}
|
|
}
|
|
|
|
func TestBuilEmptyMSS(t *testing.T) {
|
|
m := mockMap{}
|
|
b := New(&m)
|
|
b.SetMML(filepath.Join("tests", "002-empty-mss.mml"))
|
|
if err := b.Build(); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if len(m.layers) != 0 {
|
|
t.Fatal(m.layers)
|
|
}
|
|
}
|
|
|
|
func TestBuilActiveInactiveMSS(t *testing.T) {
|
|
m := mockMap{}
|
|
b := New(&m)
|
|
b.SetMML(filepath.Join("tests", "003-two-layers.mml"))
|
|
if err := b.Build(); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if len(m.layers) != 2 {
|
|
t.Fatal(m.layers)
|
|
}
|
|
|
|
m = mockMap{}
|
|
b = New(&m)
|
|
b.SetIncludeInactive(false)
|
|
b.SetMML(filepath.Join("tests", "003-two-layers.mml"))
|
|
if err := b.Build(); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if len(m.layers) != 1 {
|
|
t.Fatal(m.layers)
|
|
}
|
|
if len(m.layers[0].rules) != 1 || m.layers[0].rules[0].Layer != "foo" {
|
|
t.Error(m.layers[0].rules)
|
|
}
|
|
}
|
|
|
|
func TestBuilMapFromString(t *testing.T) {
|
|
m := mockMap{}
|
|
f, err := os.Open(filepath.Join("tests", "003-two-layers.mml"))
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
defer f.Close()
|
|
|
|
mml, err := mml.Parse(f)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
mss, err := ioutil.ReadFile(filepath.Join("tests", "003-two-layers.mss"))
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
if err := BuildMapFromString(&m, mml, string(mss)); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if len(m.layers) != 2 {
|
|
t.Fatal(m.layers)
|
|
}
|
|
}
|