func createDirectedDepthFirstGraph() unweighted.UnweightedGraph {
	g := unweighted.NewUnweightedGraph(13)
	g.AddDirectedEdge(4, 2)
	g.AddDirectedEdge(2, 3)
	g.AddDirectedEdge(3, 2)
	g.AddDirectedEdge(6, 0)
	g.AddDirectedEdge(0, 1)
	g.AddDirectedEdge(2, 0)
	g.AddDirectedEdge(11, 12)
	g.AddDirectedEdge(12, 9)
	g.AddDirectedEdge(9, 10)
	g.AddDirectedEdge(9, 11)
	g.AddDirectedEdge(8, 9)
	g.AddDirectedEdge(10, 12)
	g.AddDirectedEdge(11, 4)
	g.AddDirectedEdge(4, 3)
	g.AddDirectedEdge(3, 5)
	g.AddDirectedEdge(7, 8)
	g.AddDirectedEdge(8, 7)
	g.AddDirectedEdge(5, 4)
	g.AddDirectedEdge(0, 5)
	g.AddDirectedEdge(6, 4)
	g.AddDirectedEdge(6, 9)
	g.AddDirectedEdge(7, 6)

	return g
}
func createTestGraph() unweighted.UnweightedGraph {
	g := unweighted.NewUnweightedGraph(7)
	g.AddUndirectedEdge(0, 2)
	g.AddUndirectedEdge(0, 3)
	g.AddUndirectedEdge(1, 3)
	g.AddUndirectedEdge(1, 4)
	g.AddUndirectedEdge(1, 5)
	g.AddUndirectedEdge(2, 6)
	g.AddUndirectedEdge(4, 6)
	return g
}
func TestNewGraphVertices(t *testing.T) {
	cases := []struct {
		in, want int
	}{
		{1, 1},
		{2, 2},
		{0, 0},
	}
	for _, c := range cases {
		graph := unweighted.NewUnweightedGraph(c.in)
		got := graph.Vertices()
		if got != c.want {
			t.Errorf("NewGraph(%v) == %v, want %v", c.in, got, c.want)
		}
	}
}
func createConnectedComponentsGraph() unweighted.UnweightedGraph {
	g := unweighted.NewUnweightedGraph(13)
	g.AddUndirectedEdge(0, 6)
	g.AddUndirectedEdge(0, 2)
	g.AddUndirectedEdge(0, 1)
	g.AddUndirectedEdge(0, 5)
	g.AddUndirectedEdge(3, 5)
	g.AddUndirectedEdge(3, 4)
	g.AddUndirectedEdge(4, 5)
	g.AddUndirectedEdge(4, 6)
	g.AddUndirectedEdge(7, 8)
	g.AddUndirectedEdge(9, 10)
	g.AddUndirectedEdge(9, 11)
	g.AddUndirectedEdge(9, 12)
	g.AddUndirectedEdge(11, 12)
	return g
}
func createBreadthFirstPathsGraph() unweighted.UnweightedGraph {
	g := unweighted.NewUnweightedGraph(13)
	g.AddUndirectedEdge(0, 6)
	g.AddUndirectedEdge(0, 2)
	g.AddUndirectedEdge(0, 1)
	g.AddUndirectedEdge(0, 5)
	g.AddUndirectedEdge(3, 5)
	g.AddUndirectedEdge(3, 4)
	g.AddUndirectedEdge(4, 5)
	g.AddUndirectedEdge(4, 6)
	g.AddUndirectedEdge(7, 8)
	g.AddUndirectedEdge(9, 10)
	g.AddUndirectedEdge(9, 11)
	g.AddUndirectedEdge(9, 12)
	g.AddUndirectedEdge(11, 12)
	return g
}
func createDepthFirstGraph() unweighted.UnweightedGraph {
	g := unweighted.NewUnweightedGraph(13)
	g.AddUndirectedEdge(0, 5)
	g.AddUndirectedEdge(4, 3)
	g.AddUndirectedEdge(0, 1)
	g.AddUndirectedEdge(9, 12)
	g.AddUndirectedEdge(6, 4)
	g.AddUndirectedEdge(5, 4)
	g.AddUndirectedEdge(0, 2)
	g.AddUndirectedEdge(11, 12)
	g.AddUndirectedEdge(9, 10)
	g.AddUndirectedEdge(0, 6)
	g.AddUndirectedEdge(7, 8)
	g.AddUndirectedEdge(9, 11)
	g.AddUndirectedEdge(5, 3)

	return g
}