add first test for mergeRing

master
Oliver Tonnhofer 2013-04-30 14:01:28 +02:00
parent 5c99317010
commit 3d1c847a6d
2 changed files with 42 additions and 1 deletions

View File

@ -85,7 +85,7 @@ func mergeRings(rings []*Ring) []*Ring {
for _, ring := range endpoints {
uniqueRings[ring] = true
}
result := make([]*Ring, len(uniqueRings))
result := make([]*Ring, 0, len(uniqueRings))
for ring, _ := range uniqueRings {
result = append(result, ring)
}

41
geom/ring_test.go Normal file
View File

@ -0,0 +1,41 @@
package geom
import (
"goposm/element"
"testing"
)
func TestRingMerge(t *testing.T) {
w1 := element.Way{}
w1.Id = 1
w1.Refs = []int64{1, 2, 3}
nodes := []*element.Node{
&element.Node{},
&element.Node{},
&element.Node{},
}
r1 := Ring{[]*element.Way{&w1}, w1.Refs, nodes}
w2 := element.Way{}
w2.Id = 2
w2.Refs = []int64{3, 4, 1}
nodes = []*element.Node{
&element.Node{},
&element.Node{},
&element.Node{},
}
r2 := Ring{[]*element.Way{&w2}, w2.Refs, nodes}
rings := []*Ring{&r1, &r2}
result := mergeRings(rings)
if len(result) != 1 {
t.Fatal(result)
}
r := result[0]
expected := []int64{1, 2, 3, 4, 1}
for i, ref := range r.refs {
if ref != expected[i] {
t.Fatalf("%v != %v", r.refs, expected)
}
}
}