func TestSort(t *testing.T) { for i, test := range tarjanTests { g := concrete.NewDirectedGraph() for u, e := range test.g { // Add nodes that are not defined by an edge. if !g.Has(concrete.Node(u)) { g.AddNode(concrete.Node(u)) } for v := range e { g.SetEdge(concrete.Edge{F: concrete.Node(u), T: concrete.Node(v)}, 0) } } sorted, err := topo.Sort(g) var gotSortedLen int for _, n := range sorted { if n != nil { gotSortedLen++ } } if gotSortedLen != test.sortedLength { t.Errorf("unexpected number of sortable nodes for test %d: got:%d want:%d", i, gotSortedLen, test.sortedLength) } if err == nil != test.sortable { t.Errorf("unexpected sortability for test %d: got error: %v want: nil-error=%t", i, err, test.sortable) } if err != nil && len(err.(topo.Unorderable)) != test.unorderableLength { t.Errorf("unexpected number of unorderable nodes for test %d: got:%d want:%d", i, len(err.(topo.Unorderable)), test.unorderableLength) } } }
func TestDCPodTemplateSpecNode(t *testing.T) { g := osgraph.New() dc := &deployapi.DeploymentConfig{} dc.Namespace = "ns" dc.Name = "foo" dc.Spec.Template = test.OkPodTemplate() _ = EnsureDeploymentConfigNode(g, dc) edges := g.Edges() if len(edges) != 2 { t.Errorf("expected 2 edges, got %d", len(edges)) return } for i := range edges { if !g.EdgeKinds(edges[i]).Has(osgraph.ContainsEdgeKind) { t.Errorf("expected %v, got %v", osgraph.ContainsEdgeKind, g.EdgeKinds(edges[i])) return } } nodes := g.Nodes() if len(nodes) != 3 { t.Errorf("expected 3 nodes, got %d", len(nodes)) return } sorted, err := topo.Sort(g) if err != nil { t.Errorf("unexpected error: %v", err) return } // Just to be sure if len(sorted) != 3 { t.Errorf("expected 3 nodes, got %d", len(sorted)) return } if _, ok := sorted[0].(*DeploymentConfigNode); !ok { t.Errorf("expected first node to be a DeploymentConfigNode") return } if _, ok := sorted[1].(*kubetypes.PodTemplateSpecNode); !ok { t.Errorf("expected second node to be a PodTemplateSpecNode") return } if _, ok := sorted[2].(*kubetypes.PodSpecNode); !ok { t.Errorf("expected third node to be a PodSpecNode") } }