def testGetSparseWeightMatrix(self): graph = DictGraph() graph.addEdge("a", "b") graph.addEdge("a", "c") graph.addEdge("a", "d", "blah") graph.addEdge("d", "e", -1.1) graph.addEdge("c", "b", 2) W = graph.getSparseWeightMatrix() keys = graph.getAllVertexIds() for i in range(len(keys)): for j in range(len(keys)): if graph.edgeExists(keys[i], keys[j]) and not isinstance(graph.getEdge(keys[i], keys[j]), numbers.Number): self.assertEquals(1, W[i, j]) elif W[i, j] != 0: self.assertEquals(graph.getEdge(keys[i], keys[j]), W[i, j]) else: self.assertEquals(graph.getEdge(keys[i], keys[j]), None) #Try a directed graph graph = DictGraph(False) graph.addEdge("a", "b") graph.addEdge("a", "c", "test") graph.addEdge("a", "d") graph.addEdge("d", "e") graph.addEdge("c", "a", 0.1) W = graph.getSparseWeightMatrix() for i in range(len(keys)): for j in range(len(keys)): if graph.edgeExists(keys[i], keys[j]) and not isinstance(graph.getEdge(keys[i], keys[j]), numbers.Number): self.assertEquals(1, W[i, j]) elif W[i, j] != 0: self.assertEquals(graph.getEdge(keys[i], keys[j]), W[i, j]) else: self.assertEquals(graph.getEdge(keys[i], keys[j]), None)
def testAdjacencyList(self): graph = DictGraph() graph.addEdge("a", "b", 1) graph.addEdge("b", "c", 1) graph.addEdge("b", "d", 1) graph.addEdge("c", "e", 1) graph.setVertex("f", 1) neighbourIndices, neighbourWeights = graph.adjacencyList() vertexIds = graph.getAllVertexIds() for i in range(len(neighbourIndices)): for k, j in enumerate(neighbourIndices[i]): self.assertTrue(graph.edgeExists(vertexIds[i], vertexIds[j])) self.assertEquals(graph[vertexIds[i], vertexIds[j]], neighbourWeights[i][k])
def testRemoveVertex(self): graph = DictGraph() graph.addEdge(0, 1) graph.addEdge(0, 2) graph.addEdge(0, 3) graph.addEdge(1, 2) graph.addEdge(2, 3) graph.addEdge(3, 4) graph.removeVertex(4) self.assertFalse(graph.vertexExists(4)) self.assertFalse(graph.edgeExists(3, 4)) graph.removeVertex(3) self.assertFalse(graph.vertexExists(3)) self.assertFalse(graph.edgeExists(2, 3)) self.assertFalse(graph.edgeExists(0, 3)) graph.removeVertex(2) self.assertFalse(graph.vertexExists(2)) self.assertFalse(graph.edgeExists(1, 2)) self.assertFalse(graph.edgeExists(0, 2)) self.assertTrue(graph.getAllVertexIds() == [0, 1]) self.assertTrue(graph.getAllEdges() == [(0, 1)]) #Try directed graph graph = DictGraph(False) graph.addEdge(0, 1) graph.addEdge(1, 0) graph.addEdge(0, 3) graph.addEdge(1, 2) graph.addEdge(2, 3) graph.addEdge(3, 4) graph.removeVertex(0) self.assertFalse(graph.vertexExists(0)) self.assertFalse(graph.edgeExists(0, 1)) self.assertFalse(graph.edgeExists(0, 3)) self.assertFalse(graph.edgeExists(1, 0)) graph.removeVertex(2) self.assertFalse(graph.vertexExists(2)) self.assertFalse(graph.edgeExists(1, 2)) self.assertFalse(graph.edgeExists(2, 3)) self.assertTrue(graph.getAllVertexIds() == [1, 3, 4]) self.assertTrue(graph.getAllEdges() == [(3, 4)])