2016-03-20 19:00:02 +00:00
|
|
|
package models
|
|
|
|
|
|
|
|
import (
|
2016-06-16 18:59:58 +00:00
|
|
|
"encoding/json"
|
|
|
|
"io/ioutil"
|
2016-03-20 19:00:02 +00:00
|
|
|
"testing"
|
|
|
|
|
|
|
|
"github.com/stretchr/testify/assert"
|
2017-03-03 15:19:35 +00:00
|
|
|
|
|
|
|
"github.com/FreifunkBremen/yanic/data"
|
2016-03-20 19:00:02 +00:00
|
|
|
)
|
|
|
|
|
2016-06-16 18:59:58 +00:00
|
|
|
type TestNode struct {
|
|
|
|
Nodeinfo *data.NodeInfo `json:"nodeinfo"`
|
|
|
|
Neighbours *data.Neighbours `json:"neighbours"`
|
|
|
|
}
|
|
|
|
|
2016-03-20 19:00:02 +00:00
|
|
|
func TestGenerateGraph(t *testing.T) {
|
|
|
|
assert := assert.New(t)
|
2017-03-06 08:52:39 +00:00
|
|
|
nodes := testGetNodesByFile("node1.json", "node2.json", "node3.json", "node4.json")
|
2016-06-16 18:59:58 +00:00
|
|
|
|
|
|
|
graph := nodes.BuildGraph()
|
|
|
|
assert.NotNil(graph)
|
|
|
|
assert.Equal(1, graph.Version, "Wrong Version")
|
|
|
|
assert.NotNil(graph.Batadv, "no Batadv")
|
|
|
|
assert.Equal(false, graph.Batadv.Directed, "directed batadv")
|
2017-03-06 08:52:39 +00:00
|
|
|
assert.Len(graph.Batadv.Links, 3, "wrong Links count")
|
|
|
|
assert.Equal(4, testNodesCountWithLinks(graph.Batadv.Links), "wrong unneed nodes in graph")
|
|
|
|
assert.Len(graph.Batadv.Nodes, 4, "wrong Nodes count")
|
2016-06-16 18:59:58 +00:00
|
|
|
// TODO more tests required
|
|
|
|
}
|
|
|
|
|
|
|
|
func testGetNodesByFile(files ...string) *Nodes {
|
2016-03-20 19:00:02 +00:00
|
|
|
|
|
|
|
nodes := &Nodes{
|
|
|
|
List: make(map[string]*Node),
|
|
|
|
}
|
|
|
|
|
2016-06-16 18:59:58 +00:00
|
|
|
for _, file := range files {
|
2016-10-08 09:41:08 +00:00
|
|
|
node := testGetNodeByFile(file)
|
|
|
|
nodes.Update(file, &data.ResponseData{
|
|
|
|
NodeInfo: node.Nodeinfo,
|
|
|
|
Neighbours: node.Neighbours,
|
|
|
|
})
|
2016-06-16 18:59:58 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
return nodes
|
|
|
|
}
|
|
|
|
|
|
|
|
func testGetNodeByFile(filename string) *Node {
|
|
|
|
testnode := &TestNode{}
|
|
|
|
testfile(filename, testnode)
|
|
|
|
return &Node{
|
|
|
|
Nodeinfo: testnode.Nodeinfo,
|
|
|
|
Neighbours: testnode.Neighbours,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func testfile(name string, obj interface{}) {
|
|
|
|
file, err := ioutil.ReadFile("testdata/" + name)
|
|
|
|
if err != nil {
|
|
|
|
panic(err)
|
|
|
|
}
|
|
|
|
|
|
|
|
if err := json.Unmarshal(file, obj); err != nil {
|
|
|
|
panic(err)
|
|
|
|
}
|
2016-03-20 19:00:02 +00:00
|
|
|
}
|
2017-03-06 08:52:39 +00:00
|
|
|
|
|
|
|
func testNodesCountWithLinks(links []*GraphLink) int {
|
|
|
|
indexMap := make(map[int]bool)
|
|
|
|
for _, l := range links {
|
|
|
|
indexMap[l.Source] = true
|
|
|
|
indexMap[l.Target] = true
|
|
|
|
}
|
|
|
|
return len(indexMap)
|
|
|
|
}
|