Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
aos
GitHub Repository: aos/grafana-agent
Path: blob/main/pkg/flow/internal/dag/ops_test.go
4095 views
1
package dag
2
3
import "testing"
4
5
func TestValidateWithoutCycle(t *testing.T) {
6
var g Graph
7
var (
8
nodeA = stringNode("a")
9
nodeB = stringNode("b")
10
nodeC = stringNode("c")
11
)
12
g.Add(nodeA)
13
g.Add(nodeB)
14
g.Add(nodeC)
15
g.AddEdge(Edge{nodeC, nodeA})
16
g.AddEdge(Edge{nodeC, nodeB})
17
18
if err := Validate(&g); err != nil {
19
t.Fatalf("non errors expected, got: %s", err)
20
}
21
}
22
23
func TestValidateWithCycle(t *testing.T) {
24
var g Graph
25
var (
26
nodeA = stringNode("a")
27
nodeB = stringNode("b")
28
nodeC = stringNode("c")
29
)
30
g.Add(nodeA)
31
g.Add(nodeB)
32
g.Add(nodeC)
33
g.AddEdge(Edge{nodeC, nodeB})
34
g.AddEdge(Edge{nodeC, nodeA})
35
g.AddEdge(Edge{nodeA, nodeB})
36
g.AddEdge(Edge{nodeB, nodeA})
37
38
if err := Validate(&g); err == nil {
39
t.Fatal("graph with cycles")
40
}
41
}
42
43
func TestValidateSelfReference(t *testing.T) {
44
var g Graph
45
var (
46
nodeA = stringNode("a")
47
)
48
g.Add(nodeA)
49
g.AddEdge(Edge{nodeA, nodeA})
50
51
if err := Validate(&g); err == nil {
52
t.Fatal("graph with self reference")
53
}
54
}
55
56