36 lines
870 B
Go
36 lines
870 B
Go
package diagram
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"modelRT/orm"
|
|
|
|
"github.com/gofrs/uuid"
|
|
)
|
|
|
|
func TestTopologyGraphSupportsMultiParentReachability(t *testing.T) {
|
|
startA := uuid.Must(uuid.NewV4())
|
|
startB := uuid.Must(uuid.NewV4())
|
|
shared := uuid.Must(uuid.NewV4())
|
|
end := uuid.Must(uuid.NewV4())
|
|
|
|
graph := NewTopologyGraph([]orm.Topologic{
|
|
{UUIDFrom: startA, UUIDTo: shared},
|
|
{UUIDFrom: startB, UUIDTo: shared},
|
|
{UUIDFrom: shared, UUIDTo: end},
|
|
})
|
|
|
|
if len(graph.StartNodes) != 2 {
|
|
t.Fatalf("expected 2 start nodes, got %d", len(graph.StartNodes))
|
|
}
|
|
if len(graph.InEdges[shared]) != 2 {
|
|
t.Fatalf("expected shared node to keep 2 parents, got %d", len(graph.InEdges[shared]))
|
|
}
|
|
if !graph.IsReachable(startA, end) {
|
|
t.Fatalf("expected %s to reach %s", startA, end)
|
|
}
|
|
if !graph.IsReachable(startB, end) {
|
|
t.Fatalf("expected %s to reach %s", startB, end)
|
|
}
|
|
}
|