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) } }