-
Notifications
You must be signed in to change notification settings - Fork 20
/
Copy pathgraph_test.go
92 lines (85 loc) · 2.11 KB
/
graph_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
package graph
import (
"github.com/stretchr/testify/assert"
"testing"
)
func TestNewUndirected(t *testing.T) {
g := NewUndirected()
//增加顶点
for i := 0; i < 10; i++ {
g.AddVertex(VertexId(i))
}
assert.Equal(t, 10, g.VerticesCount())
//增加边
for i := 0; i < 10; i++ {
g.AddEdge(VertexId(i), VertexId(i%2), 1)
}
//
assert.Equal(t, true, g.CheckEdge(2, 0))
assert.Equal(t, false, g.CheckEdge(2, 1))
assert.Equal(t, 1, g.GetEdgeWeight(2, 0))
//删除顶点
assert.NoError(t, g.RemoveVertex(VertexId(2)))
assert.Equal(t, false, g.CheckVertex(VertexId(2)))
assert.Equal(t, false, g.CheckEdge(2, 0))
//增加边,存在修改
assert.NoError(t, g.AddEdge(3, 0, 1))
assert.Equal(t, true, g.CheckEdge(3, 0))
//删除边
assert.NoError(t, g.RemoveEdge(3, 0))
assert.Equal(t, false, g.CheckEdge(3, 0))
//统计边
c := g.EdgesIter()
countEdge := 0
for _ = range c {
countEdge++
}
assert.Equal(t, countEdge, g.EdgesCount())
}
func TestNewDirected(t *testing.T) {
g := NewDirected()
//增加顶点
for i := 0; i < 10; i++ {
g.AddVertex(VertexId(i))
}
assert.Equal(t, 10, g.VerticesCount())
//增加边
for i := 0; i < 10; i++ {
g.AddEdge(VertexId(i), VertexId(i%2), 1)
}
//
assert.Equal(t, true, g.CheckEdge(2, 0))
assert.Equal(t, false, g.CheckEdge(2, 1))
assert.Equal(t, 1, g.GetEdgeWeight(2, 0))
//删除顶点
assert.NoError(t, g.RemoveVertex(VertexId(2)))
assert.Equal(t, false, g.CheckVertex(VertexId(2)))
assert.Equal(t, false, g.CheckEdge(2, 0))
//增加边,存在修改
assert.NoError(t, g.AddEdge(3, 0, 1))
assert.Equal(t, true, g.CheckEdge(3, 0))
//删除边
assert.NoError(t, g.RemoveEdge(3, 0))
assert.Equal(t, false, g.CheckEdge(3, 0))
//统计边
c := g.EdgesIter()
countEdge := 0
for _ = range c {
countEdge++
}
assert.Equal(t, countEdge, g.EdgesCount())
//查看
//for p := range g.EdgesIter() {
// t.Log(p)
//}
//入度
gp := g.GetPredecessors(VertexId(1)).VerticesIter()
for p := range gp {
if p != 3 && p != 5 && p != 7 && p != 9 {
t.Error()
}
}
for p := range g.GetSuccessors(VertexId(4)).VerticesIter() {
assert.Equal(t, VertexId(0), p)
}
}