Пример #1
0
 def test_graph_integration(self):
     print "Graph Creation"
     g = Graph("Euclid")
     self.assertEqual("Euclid", g.name())
     self.assertTrue(g.empty())
     v1,v2,v3,v4,v5,v6,v7,v8 = [g.addVertice("v"+str(x)) for x in xrange(1, 8 + 1)]
     e1 = g.addEdge("e1", v1, v2, True, weight={"d" : 1})
     e2 = g.addEdge("e2", v1, v3, True, weight={"d" : 10})
     e3 = g.addEdge("e3", v1, v4, True, weight={"d" : 10})
     e4 = g.addEdge("e4", v2, v8, True, weight={"d" : 1})
     e5 = g.addEdge("e5", v3, v5, True, weight={"d" : 10})
     e6 = g.addEdge("e6", v4, v6, True, weight={"d" : 10})
     e7 = g.addEdge("e7", v5, v8, True, weight={"d" : -10})
     e8 = g.addEdge("e8", v6, v7, True, weight={"d" : 10})
     e9 = g.addEdge("e9", v7, v8, True, weight={"d" : -20})
     e10 = g.addEdge("e10", v7, v1, False, weight={"d" : 50})
     # Adding only edges shall result in a populated Graph with edges + vertices
     self.assertEqual(set([v2,v3,v4,v7]), g.neighbours(v1))
     self.assertEqual(set([e9, e10]), g.adjacent(v7))
     # removing an edge results in removing the whole history
     g.removeEdge(e10)
     self.assertEqual(set([v2,v3,v4]), g.neighbours(v1))
     self.assertEqual(set([e9]), g.adjacent(v7))
     self.assertEqual(set([v8]), g.neighbours(v7))
     v9 = g.addVertice("v9")
     e11 = g.addEdge("e11", v1, v9, True, weight={"d" : 50})
     # v9 should be removed from g and all edges e dependant on v9
     g.removeVertice(v9)
     self.assertEqual(None, g.edge("e11"))
     self.assertEqual(set([v2,v3,v4]), g.neighbours(v1))
     self.assertEqual(set([e9]), g.adjacent(v7))
     self.assertEqual(set([v8]), g.neighbours(v7))
     # Simple Graph
     self.assertTrue(graph_module.isSimpleGraph(g))
     e13 = g.addEdge("e13", v2, v2, True, weight={"d" : 10}) # Added a Sling 
     self.assertTrue(not graph_module.isSimpleGraph(g))
     # Multigraph
     self.assertTrue(not graph_module.isMultigraph(g))
     e12 = g.addEdge("e12", v5, v8, True, weight={"d" : 5}) # Add another edge bewteen v5 -> v8
     self.assertTrue(graph_module.isMultigraph(g))
     g.updateDescription()
     # Removing all Vertices is equal to emptyness
     g.removeEdges([e1,e2,e3,e4,e5,e6,e7,e8,e9,e12,e13])
     self.assertTrue(g.empty())
     self.assertTrue(not g.nullgraph())
     g.removeVertices([v1,v2,v3,v4,v5,v6,v7,v8])
     self.assertTrue(g.nullgraph())
     self.assertTrue(g.empty())
     self.assertEqual([], g.edges())
     self.assertEqual([], g.vertices())
     # Checked that g is empty, these should behave differently
     self.assertFalse(graph_module.isDirac(g))
     self.assertFalse(graph_module.isMultigraph(g))
     self.assertTrue(graph_module.isSimpleGraph(g)) # NullGraph is always simple - it doesn't break any rules
Пример #2
0
 def test_adj_directed_matrix(self):
     print "Adjancency Matrix directed"
     g = Graph("Euclid")
     directed = True
     v1,v2,v3,v4,v5,v6,v7,v8 = [g.addVertice("v"+str(x)) for x in xrange(1, 8 + 1)]
     e1 = g.addEdge("e1", v1, v2, directed, weight={"d" : 1})
     e2 = g.addEdge("e2", v1, v3, directed, weight={"d" : 10})
     e3 = g.addEdge("e3", v1, v4, directed, weight={"d" : 10})
     e4 = g.addEdge("e4", v2, v8, directed, weight={"d" : 1})
     e5 = g.addEdge("e5", v3, v5, directed, weight={"d" : 10})
     e6 = g.addEdge("e6", v4, v6, directed, weight={"d" : 10})
     e7 = g.addEdge("e7", v5, v8, directed, weight={"d" : -10})
     e8 = g.addEdge("e8", v6, v7, directed, weight={"d" : 10})
     e9 = g.addEdge("e9", v7, v8, directed, weight={"d" : -20})
     e10 = g.addEdge("e10", v7, v1, directed, weight={"d" : 50})
     #print g
     gm = GraphMatrix(g)
     gm.toAdjacentMatrix()