dag: add EdgesFrom, EdgesTo, needs tests

This commit is contained in:
Mitchell Hashimoto 2016-09-21 11:33:47 -07:00
parent b9b23e8483
commit 4e8e6cd661
No known key found for this signature in database
GPG Key ID: 744E147AA52F5B0A
3 changed files with 32 additions and 2 deletions

View File

@ -48,6 +48,32 @@ func (g *Graph) Edges() []Edge {
return result return result
} }
// EdgesFrom returns the list of edges from the given source.
func (g *Graph) EdgesFrom(v Vertex) []Edge {
var result []Edge
from := hashcode(v)
for _, e := range g.Edges() {
if hashcode(e.Source()) == from {
result = append(result, e)
}
}
return result
}
// EdgesTo returns the list of edges to the given target.
func (g *Graph) EdgesTo(v Vertex) []Edge {
var result []Edge
search := hashcode(v)
for _, e := range g.Edges() {
if hashcode(e.Target()) == search {
result = append(result, e)
}
}
return result
}
// HasVertex checks if the given Vertex is present in the graph. // HasVertex checks if the given Vertex is present in the graph.
func (g *Graph) HasVertex(v Vertex) bool { func (g *Graph) HasVertex(v Vertex) bool {
return g.vertices.Include(v) return g.vertices.Include(v)

View File

@ -50,7 +50,8 @@ func (t *CBDEdgeTransformer) Transform(g *Graph) error {
} }
// Find the destroy edge. There should only be one. // Find the destroy edge. There should only be one.
for _, e := range g.DownEdges(v).List() { for _, e := range g.EdgesTo(v) {
log.Printf("WHAT: %#v", e)
// Not a destroy edge, ignore it // Not a destroy edge, ignore it
de, ok := e.(*DestroyEdge) de, ok := e.(*DestroyEdge)
if !ok { if !ok {

View File

@ -7,7 +7,8 @@ import (
func TestCBDEdgeTransformer(t *testing.T) { func TestCBDEdgeTransformer(t *testing.T) {
g := Graph{Path: RootModulePath} g := Graph{Path: RootModulePath}
g.Add(&graphNodeDestroyerTest{AddrString: "test.A"}) g.Add(&graphNodeCreatorTest{AddrString: "test.A"})
g.Add(&graphNodeDestroyerTest{AddrString: "test.A", CBD: true})
g.Add(&graphNodeDestroyerTest{AddrString: "test.B"}) g.Add(&graphNodeDestroyerTest{AddrString: "test.B"})
{ {
@ -34,7 +35,9 @@ func TestCBDEdgeTransformer(t *testing.T) {
} }
const testTransformCBDEdgeBasicStr = ` const testTransformCBDEdgeBasicStr = `
test.A
test.A (destroy) test.A (destroy)
test.A
test.B (destroy) test.B (destroy)
test.B (destroy) test.B (destroy)
` `