47 lines
760 B
Go
47 lines
760 B
Go
|
package dag
|
||
|
|
||
|
import (
|
||
|
"testing"
|
||
|
)
|
||
|
|
||
|
func TestAcyclicGraphRoot(t *testing.T) {
|
||
|
var g AcyclicGraph
|
||
|
g.Add(1)
|
||
|
g.Add(2)
|
||
|
g.Add(3)
|
||
|
g.Connect(BasicEdge(3, 2))
|
||
|
g.Connect(BasicEdge(3, 1))
|
||
|
|
||
|
if root, err := g.Root(); err != nil {
|
||
|
t.Fatalf("err: %s", err)
|
||
|
} else if root != 3 {
|
||
|
t.Fatalf("bad: %#v", root)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func TestAcyclicGraphRoot_cycle(t *testing.T) {
|
||
|
var g AcyclicGraph
|
||
|
g.Add(1)
|
||
|
g.Add(2)
|
||
|
g.Add(3)
|
||
|
g.Connect(BasicEdge(1, 2))
|
||
|
g.Connect(BasicEdge(2, 3))
|
||
|
g.Connect(BasicEdge(3, 1))
|
||
|
|
||
|
if _, err := g.Root(); err == nil {
|
||
|
t.Fatal("should error")
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func TestAcyclicGraphRoot_multiple(t *testing.T) {
|
||
|
var g AcyclicGraph
|
||
|
g.Add(1)
|
||
|
g.Add(2)
|
||
|
g.Add(3)
|
||
|
g.Connect(BasicEdge(3, 2))
|
||
|
|
||
|
if _, err := g.Root(); err == nil {
|
||
|
t.Fatal("should error")
|
||
|
}
|
||
|
}
|