def test_remove_node_ESize(self): """ verify that the node has been removed and all the edges he was connected with also verify the ESize this test will be preformed over a simple graph looks like: 1◄--►3 | ▲ | / ▼ ▼ 2 """ g = DiGraph() # create a new graph g.add_node(1) # add two nodes to g g.add_node(2) g.add_node(3) g.add_edge(1, 2, 12) g.add_edge(1, 3, 13) g.add_edge(2, 3, 23) g.add_edge(3, 2, 32) g.add_edge(3, 1, 31) self.assertEqual(5, g.ESize) g.remove_node(3) self.assertEqual(1, g.ESize) self.assertEqual( 12, g.get_edge(1, 2).weight ) # verify that the only edge remaining is 1-->2 in weight of 12 self.assertEqual(None, g.get_edge(2, 1)) self.assertTrue(g.has_edge(1, 2)) self.assertFalse(g.has_edge(2, 1)) self.assertFalse(g.has_edge(3, 1)) self.assertFalse(g.has_edge(1, 3))
def test_get_edge(self): g = DiGraph() g.add_node(1) g.add_node(2) g.add_node(3) g.add_node(4) g.add_edge(1, 2, 3.3) g.add_edge(2, 2, 4.4) self.assertEqual(g.get_edge(2, 2), 4.4)
def test_add_edge(self): """ This test verify that connect (node1,node2) is not equal to connect (node2,node1), also that negative weight and connect nodes that are not in the graph is not allow """ g = DiGraph() # create a new graph g.add_node(1) # add two nodes to g g.add_node(2) g.add_node(3) self.assertFalse(g.add_edge(1, 6, 1)) # node6 is not in the graph self.assertFalse(g.add_edge( 1, 1, 5)) # cannot add edge between node to himself self.assertTrue(g.add_edge(1, 2, 12)) # add edge between (1,2) self.assertFalse(g.add_edge( 1, 2, 12)) # there is edge already between (1,2) with this weight self.assertFalse(g.add_edge( 1, 2, 1)) # does not allow update in place there is an edge already self.assertTrue(g.add_edge(2, 1, 12)) # allows to add edge between (2,1) self.assertEqual(g.get_edge(2, 1).weight, 12) self.assertFalse(g.add_edge(2, 1, 6)) self.assertFalse(g.add_edge(1, 3, -4)) # should not allow negative weight