示例#1
0
def multiplePathsTest():
    """This method checks that the algorithm returns 
    the correct number of shortest paths, when there 
    are more than one way of reaching the end node.
    """
    g = MyGraph()
    v0 = GraphVertex("v0")
    v1 = GraphVertex("v1")
    v2 = GraphVertex("v2")
    v3 = GraphVertex("v3")

    g.insertVertex(v0)
    g.insertVertex(v1)
    g.insertVertex(v2)
    g.insertVertex(v3)

    e0 = GraphEdge("e0", 1)
    e1 = GraphEdge("e1", 1)
    e2 = GraphEdge("e2", 1)
    e3 = GraphEdge("e3", 1)

    g.insertEdge(v0, v3, e0)
    g.insertEdge(v0, v1, e1)
    g.insertEdge(v1, v2, e2)
    g.insertEdge(v3, v2, e3)
    ret = numShortestPaths(g, v0, v2)

    assert ret == 2
示例#2
0
def exceptionsTest():
    """This method checks that the numShortestPaths.py will 
    throw a InvalidInputException when the input nodes or graph
    are not valid.
    """
    with pytest.raises(InvalidInputException):
        g = v0 = v1 = None
        # raises exception because graph and vertices are None.
        numShortestPaths(g, v0, v1)

    with pytest.raises(InvalidInputException):
        g = MyGraph()
        v0 = GraphVertex("v0")
        v1 = GraphVertex("v1")
        e0 = GraphEdge("e0", 1)
        # raises exception because v0, v1 are not vertices of g.
        numShortestPaths(g, v0, v1)
示例#3
0
def singleVertexTest():
    """This method tests a special case, and checks that 
    the number of shortest paths in a graph with one vertex 
    and no edges is 1.
    """
    g = MyGraph()
    a = GraphVertex("a")
    g.insertVertex(a)
    assert numShortestPaths(g, a, a) == 1, "Error"
示例#4
0
def complicatedPathsTest():
    """This method checks that the algorithm returns
    the correct number of shortest paths in the graph, when
    there are numerous complicated paths reaching the end 
    node, as well as paths that don't lead to the end node.
    """
    g = MyGraph()
    start = GraphVertex("start")
    A = GraphVertex("A")
    B = GraphVertex("B")
    C = GraphVertex("C")
    D = GraphVertex("D")
    E = GraphVertex("E")
    F = GraphVertex("F")
    G = GraphVertex("G")
    H = GraphVertex("H")
    end = GraphVertex("end")
    g.insertVertex(start)
    g.insertVertex(A)
    g.insertVertex(B)
    g.insertVertex(C)
    g.insertVertex(D)
    g.insertVertex(E)
    g.insertVertex(F)
    g.insertVertex(G)
    g.insertVertex(H)
    g.insertVertex(end)

    e0 = GraphEdge("e0", 1)
    e1 = GraphEdge("e1", 1)
    e2 = GraphEdge("e2", 1)
    e3 = GraphEdge("e3", 1)
    e4 = GraphEdge("e4", 1)
    e5 = GraphEdge("e5", 1)
    e6 = GraphEdge("e6", 1)
    e7 = GraphEdge("e7", 1)
    e8 = GraphEdge("e8", 1)
    e9 = GraphEdge("e9", 1)
    e10 = GraphEdge("e10", 1)

    g.insertEdge(start, A, e0)
    g.insertEdge(start, B, e1)
    g.insertEdge(start, C, e2)
    g.insertEdge(A, D, e3)
    g.insertEdge(D, H, e4)
    g.insertEdge(D, G, e5)
    g.insertEdge(B, E, e6)
    g.insertEdge(B, F, e7)
    g.insertEdge(G, end, e8)
    g.insertEdge(E, end, e9)
    g.insertEdge(F, end, e10)

    ret = numShortestPaths(g, start, end)
    assert ret == 2
示例#5
0
def singlePathTest():
    """This method checks that the algorithm returns the 
    correct number of shortest path, which is 1, for a 
    graph with only two nodes, start and end.
    """
    g = MyGraph()
    v0 = GraphVertex("start")
    v1 = GraphVertex("end")

    g.insertVertex(v0)
    g.insertVertex(v1)

    e0 = GraphEdge("single_edge", 1)
    g.insertEdge(v0, v1, e0)

    assert numShortestPaths(g, v0, v1) == 1, "single-path test failed."
示例#6
0
def test1():

    g = MyGraph()
    v0 = GraphVertex("v0")
    v1 = GraphVertex("v1")
    v2 = GraphVertex("v2")
    g.insertVertex(v0)
    g.insertVertex(v1)
    g.insertVertex(v2)

    e0 = GraphEdge("e0", 1)
    e1 = GraphEdge("e1", 1)
    e2 = GraphEdge("e2", 1)

    g.insertEdge(v0, v2, e0)
    g.insertEdge(v0, v1, e1)
    g.insertEdge(v1, v2, e2)

    ret = numShortestPaths(g, v0, v2)

    assert ret == 1
示例#7
0
def test1():
    """This method is an example test that checks outputs of 
    numShortestPaths.py for a graph with three vertices.
    """
    g = MyGraph()
    v0 = GraphVertex("v0")
    v1 = GraphVertex("v1")
    v2 = GraphVertex("v2")
    g.insertVertex(v0)
    g.insertVertex(v1)
    g.insertVertex(v2)

    e0 = GraphEdge("e0", 1)
    e1 = GraphEdge("e1", 1)
    e2 = GraphEdge("e2", 1)

    g.insertEdge(v0, v2, e0)
    g.insertEdge(v0, v1, e1)
    g.insertEdge(v1, v2, e2)

    ret = numShortestPaths(g, v0, v2)
    assert ret == 1