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))
Example #2
0
 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