Exemple #1
0
    def test_add_node1(self):
        graph = DiGraph()
        graph.add_node(1)
        graph.add_node(2)
        graph.add_node(3)
        graph.add_node(4)
        graph.add_node(5)
        graph.add_edge(1, 2, 3)
        graph.add_edge(2, 3, 4)
        graph.add_edge(3, 4, 10)
        graph.add_edge(4, 3, 1)
        graph.add_edge(3, 5, 7)
        graph.add_edge(5, 1, 1)
        graph.add_edge(1, 5, 2)

        self.assertEqual(12, graph.get_mc())
        self.assertEqual(5, graph.v_size())
        self.assertEqual(7, graph.e_size())

        keys = [1, 2, 3, 4, 5]
        self.assertEqual(keys, list(graph.get_all_v().keys()))
        self.assertEqual({2: 4, 4: 1}, graph.all_in_edges_of_node(3))
        self.assertEqual({4: 10, 5: 7}, graph.all_out_edges_of_node(3))

        graph.remove_edge(5, 1)
        self.assertEqual(6, graph.e_size())
        self.assertEqual(0, len(graph.all_out_edges_of_node(5)))
        self.assertEqual(13, graph.get_mc())

        graph.remove_node(3)
        self.assertEqual(4, graph.v_size())
        self.assertEqual(2, graph.e_size())

        self.assertEqual(0, len(graph.all_out_edges_of_node(4)))
        self.assertEqual(14, graph.get_mc())
class TestDiGraph(TestCase):
    def setUp(self) -> None:
        self.g = DiGraph()
        for i in range(5):
            self.g.add_node(i)
        self.g.add_edge(1, 2, 1)
        self.g.add_edge(1, 3, 1)
        self.g.add_edge(1, 4, 1)
        self.g.add_edge(2, 1, 1)
        self.g.add_edge(2, 0, 1.5)
        self.g.add_edge(3, 1, 1)
        self.g.add_edge(4, 0, 4.8)
        self.g.add_edge(4, 2, 1)

    def test_v_size(self):
        self.assertEqual(5, self.g.v_size())

    def test_e_size(self):
        self.assertEqual(8, self.g.e_size())

    def test_get_mc(self):
        self.assertEqual(13, self.g.get_mc())

    def test_add_edge(self):
        self.assertFalse(self.g.add_edge(9, 5, 0.35))
        self.assertTrue(self.g.add_edge(0, 2, 0.93))

    def test_add_node(self):
        self.assertFalse(self.g.add_node(0))
        self.assertTrue(self.g.add_node(5))
        self.assertFalse(self.g.add_node(5))

    def test_remove_node(self):
        self.assertFalse(self.g.remove_node(6))
        self.assertTrue(self.g.remove_node(4))
        self.assertEqual(5, self.g.e_size())

    def test_remove_edge(self):
        self.assertFalse(self.g.remove_edge(0, 7))
        self.assertTrue(self.g.remove_edge(1, 2))
        self.assertEqual(7, self.g.e_size())

    def test_all_in_edges_of_node(self):
        self.assertEqual({2: 1.5, 4: 4.8}, self.g.all_in_edges_of_node(0))

    def test_all_out_edges_of_node(self):
        self.assertEqual({2: 1, 3: 1, 4: 1}, self.g.all_out_edges_of_node(1))

    def test_get_all_v(self):
        self.assertEqual(5, len(self.g.get_all_v()))
        d = {
            0: self.g.get_all_v()[0],
            1: self.g.get_all_v()[1],
            2: self.g.get_all_v()[2],
            3: self.g.get_all_v()[3],
            4: self.g.get_all_v()[4]
        }
        self.assertEqual(d, self.g.get_all_v())
Exemple #3
0
 def test_e_size(self):
     graph = DiGraph()
     graph.add_node(1)
     graph.add_node(2)
     graph.add_edge(1, 2, 2)
     assert graph.e_size() == 1, 'count number of edges incorrectly'
     graph.add_edge(2, 1, 2)
     assert graph.e_size(
     ) == 2, 'after adding a new edge, number of edges is incorrect'
Exemple #4
0
 def test_add_edge(self):
     g0 = DiGraph()
     for i in range(0, 10):
         g0.add_node(i)
     for i in range(0, 10):
         g0.add_edge(i, 9 - i, 0.2)
     self.assertFalse(g0.add_edge(3, 12, 2))  # added an edge between noedes that not exist
     self.assertEqual(10, g0.e_size())
     self.assertEqual(20, g0.get_mc())
     self.assertFalse(g0.add_edge(0, 9, 3))  # added exited edge
     self.assertEqual(10, g0.e_size())
     self.assertEqual(20, g0.get_mc())
     self.assertFalse(g0.add_edge(2, 2, 1))  # added edge between node to itself
Exemple #5
0
 def test_e_size(self):
     g = DiGraph()
     self.assertEqual(0, g.e_size())
     g.add_node(1)
     g.add_node(2)
     g.add_node(3)
     g.add_node(4)
     g.add_edge(1, 2, 3)
     g.add_edge(2, 3, 2)
     g.add_edge(3, 4, 3)
     g.add_edge(4, 1, 2.5)
     self.assertEqual(4, g.e_size())
     g.remove_edge(4, 1)
     self.assertEqual(3, g.e_size())
Exemple #6
0
def graph_creator(v, e) -> DiGraph:
    g = DiGraph()
    for n in range(v):
        g.add_node(n)

    for i in range(0, v):
        for j in range(1, v):
            if g.e_size() < e:
                g.add_edge(i, j, 10)

        if g.e_size() >= e:
            break

    return g
Exemple #7
0
 def test_remove_node(self):
     graph = DiGraph()
     graph.add_node(1)
     graph.add_node(2)
     graph.add_node(3)
     graph.add_edge(1, 2, 1)
     graph.add_edge(1, 3, 1)
     self.assertEqual(graph.e_size(), 2)
     self.assertEqual(graph.v_size(), 3)
     graph.remove_node(1)
     self.assertEqual(graph.e_size(), 0)
     self.assertEqual(graph.v_size(), 2)
     self.assertEqual(graph.get_all_v().get(1), None)
     self.assertEqual(graph.get_all_v(), {2: NodeData(2), 3: NodeData(3)})
    def test_add_edge(self):
        g = self.graphCreator(20)
        assert 20 == g.v_size()
        g.add_edge(0, 1, 5)
        assert g.all_in_edges_of_node(1).get(0) == 5
        g.add_edge(0, 1, 2)
        assert g.all_in_edges_of_node(1).get(0) == 5
        g.add_edge(0, 2, 2)
        g.add_edge(0, 3, 7)
        g.add_edge(1, 2, 4.23)
        assert False == g.add_edge(1, 4, -15)
        assert False == g.add_edge(1, 2, 2)

        g = self.graphCreator1(20, 20)
        e = 20
        if g.add_edge(4, 5, 15):
            e += 1
            assert g.e_size() == e
            g.all_out_edges_of_node(4).get(5) == 15
            g.all_in_edges_of_node(5).get(4) == 15
            print("done")
        if g.add_edge(4, 6, 9.5):
            e += 1
            assert g.e_size() == e
            assert g.all_out_edges_of_node(4).get(6) == 9.5
            g.all_in_edges_of_node(6).get(4) == 9.5
            print("done")

        g = DiGraph()
        g.add_node(0)
        g.add_edge(0, 0, 1)
        assert 0 == g.e_size()
        assert g.all_out_edges_of_node(0).get(0) == None
Exemple #9
0
 def test_v_e_size_removes_and_add(self):
     graph = DiGraph()
     self.assertEqual(False, self.graph.add_edge(1, 7, -1))
     self.assertEqual(0, graph.e_size())
     self.assertEqual(0, graph.v_size())
     self.assertEqual(0, graph.get_mc())
     self.assertEqual(False, graph.remove_edge(1, 3))
     self.assertEqual({}, graph.all_out_edges_of_node(3))
     self.assertEqual({}, graph.all_in_edges_of_node(3))
     self.assertEqual(14, self.graph.v_size())
     self.assertEqual(24, self.graph.e_size())
     self.assertEqual(38, self.graph.get_mc())
     self.assertEqual(True, self.graph.remove_node(4))
     self.assertEqual(39, self.graph.get_mc())
     self.assertEqual(True, self.graph.remove_edge(1, 2))
     self.graph.remove_edge(11, 10)
     self.assertEqual(False, self.graph.remove_node(15))
     self.assertEqual(False, self.graph.remove_node(0))
     self.assertEqual(False, self.graph.remove_node(-1))
     self.assertEqual(False, self.graph.remove_edge(11, 11))
     self.assertEqual(False, self.graph.remove_edge(6, 5))
     self.assertEqual(17, self.graph.e_size())
     self.assertEqual(13, self.graph.v_size())
     self.graph.add_node(99)
     self.assertEqual(14, self.graph.v_size())
     self.graph.add_edge(99, 10, 5)
     self.graph.add_edge(99, 5, 5)
     self.graph.add_edge(99, 10, 5)
     self.graph.add_edge(99, 99, 5)
     self.graph.add_edge(10, 99, 5)
     self.graph.add_edge(10, 99, 5)
     self.assertEqual(20, self.graph.e_size())
     self.assertEqual(45, self.graph.get_mc())
Exemple #10
0
 def test_empty_graph(self):
     graph = DiGraph()
     self.assertTrue(graph.get_mc() == 0)
     self.assertTrue(graph.e_size() == 0)
     self.assertTrue(graph.v_size() == 0)
     self.assertFalse(graph.remove_node(1), "The node does not exist!")
     self.assertFalse(graph.remove_edge(1, 2), "The edge already exist!")
Exemple #11
0
 def test_edge_size(self):
     graph = DiGraph()
     for i in range(5):
         graph.add_node(i)
     weight_dict = {"0": 3.4, "1": 3.5, "2": 5.4, "3": 3.1, "4": 4.5}
     conn_dict = {"0": 1, "1": 2, "2": 3, "3": 4, "4": 0}
     for k in graph.get_all_v().keys():
         graph.add_edge(k, conn_dict[str(k)], weight_dict[str(k)])
     self.assertEqual(graph.e_size(), 5)
     graph.add_edge(0, 1, 3.5)
     self.assertEqual(graph.e_size(), 5)
     for k in range(0, 5, 2):
         graph.remove_edge(k, conn_dict[str(k)])
     self.assertEqual(graph.e_size(), 2)
     graph.remove_edge(0, 1)
     self.assertEqual(graph.e_size(), 2)
Exemple #12
0
    def test_extremeCases(self):
        graph = DiGraph()
        graph.add_node(1)
        graph.add_node(2)
        graph.add_node(3)
        graph.add_node(4)
        graph.add_node(5)
        graph.add_node(6)

        graph.add_edge(1, 3, 6)
        graph.add_edge(3, 4, 10)
        graph.add_edge(4, 2, 5)
        graph.add_edge(2, 1, 10)
        graph.add_edge(2, 1, 10)
        graph.add_edge(2, 1, 10.9)

        algo = GraphAlgo(graph)

        self.assertEquals(11, graph.get_mc())
        graph.remove_node(2)
        self.assertEquals(5, graph.v_size())
        self.assertEquals(2, graph.e_size())
        self.assertFalse(graph.remove_node(2))
        self.assertEquals(16, algo.shortest_path(1, 4)[0])
        self.assertEquals((float('inf'), []), algo.shortest_path(1, 2))
        self.assertEquals(12, graph.get_mc())
Exemple #13
0
 def test_e_size(self):
     g0 = DiGraph()
     for i in range(0, 10):
         g0.add_node(i)
     for i in range(0, 10):
         g0.add_edge(i, 9 - i, 0.2)
     self.assertEqual(10, g0.e_size())
Exemple #14
0
 def test_remove_edge(self):
     graph = DiGraph()
     is_remove_edge = graph.remove_edge(
         1, 2)  # tried to remove edge that not exist in the graph
     self.assertFalse(
         is_remove_edge
     )  # is_remove_edge is false because tried to remove edge that not exist
     self.assertTrue(graph.e_size() == 0)
     graph.add_edge(
         1, 2, 30
     )  # tried to connect node1 to node2 and the nodes that not exist in the graph
     graph.add_node(1)
     is_remove_edge = graph.remove_edge(
         1,
         2)  # tried to connect node1 to node2 and the node2 that not exist
     self.assertFalse(
         is_remove_edge
     )  # is_remove_edge is false because tried to remove edge that node2 not exist
     self.assertTrue(graph.e_size() == 0)
     graph.add_node(2)
     graph.add_edge(1, 2, 30)
     graph.add_edge(1, 2, 30)
     self.assertTrue(graph.e_size() == 1)
     graph.add_edge(2, 1, 30)
     self.assertTrue(graph.e_size() == 2)
     is_remove_edge = graph.remove_edge(1, 2)
     self.assertTrue(is_remove_edge)  # remove edge 1->2
     self.assertTrue(graph.e_size() == 1)
     is_remove_edge = graph.remove_edge(
         1, 2)  # tried remove edge that not exist
     self.assertFalse(is_remove_edge)
     self.assertTrue(graph.e_size() == 1)
     is_remove_edge = graph.remove_edge(2, 1)  # remove edge 2->1
     self.assertTrue(is_remove_edge)  # remove edge 1->2
     self.assertTrue(graph.e_size() == 0)
Exemple #15
0
 def test_removeEdge(self):
     g0 = DiGraph()
     node0 = NodeData(0, (0, 1, 2))
     node1 = NodeData(1, (2.4, 7.1, 3.5))
     g0.add_node(node0.getkey())
     g0.add_node(node1.getkey())
     g0.add_edge(node0.getkey(), node1.getkey(), 7)
     g0.remove_edge(node0.getkey(), node1.getkey())
     self.assertEqual(g0.e_size(), 1)
Exemple #16
0
 def test_remove(self):
     graph = DiGraph()
     graph.add_node(1, (1, 2, 3))  # add node check
     graph.add_node(2, (2, 3, 4))
     graph.add_node(3, (5, 4, 6))
     graph.add_node(4, (3, 4, 6))
     graph.add_edge(1, 2, 3)
     graph.add_edge(2, 3, 3)
     graph.add_edge(3, 4, 3)
     graph.add_edge(4, 1, 3)
     self.assertEqual(graph.v_size(), 4, "have only 4 nodes!!")
     self.assertEqual(graph.e_size(), 4, "have only 4 nodes!!")
     graph.remove_node(1)
     self.assertTrue(graph.v_size() == 3)
     self.assertTrue(graph.e_size() == 2)
     graph.remove_node(1)
     self.assertTrue(graph.get_mc() == 11,
                     "add - 8 times, remove 1- node 2- edges")
    def test_add_edge(self):
        graph = DiGraph()
        self.assertTrue(graph.add_node(0))
        self.assertTrue(graph.add_node(1))
        self.assertTrue(graph.add_node(2))
        self.assertTrue(graph.add_node(3,(1,2,0)))
        self.assertTrue(graph.add_edge(0, 1, 0))
        self.assertTrue(graph.add_edge(0, 2, 0))
        self.assertTrue(graph.add_edge(1, 2, 0))
        self.assertTrue(graph.add_edge(2, 1, 1))
        self.assertFalse(graph.add_edge(-2, 1, 0))
        self.assertFalse(graph.add_edge(3, 3, 0))

        self.assertEqual(graph.e_size(), 4)
        self.assertEqual(graph.v_size(), 4)

        self.assertFalse(graph.add_edge(0, 3, -10))
        self.assertFalse(graph.add_edge(0, 2, 20))
        self.assertEqual(graph.e_size(), 4)
Exemple #18
0
def graph_random(seed: int, v_size: int, e_size: int):
    g = DiGraph()
    random.seed(seed)
    pos = [(random.random(), random.random(), random.random())] * v_size
    for i in range(v_size):
        g.add_node(i, (pos[i][0], pos[i][1], pos[i][2]))
    while g.e_size() != e_size:
        g.add_edge(random.randint(0, v_size), random.randint(0, v_size),
                   random.random())
    return g
Exemple #19
0
 def test_get_graph(self):
     graph = DiGraph()
     graph_algo = GraphAlgo(graph)
     self.assertEqual(graph.e_size(), 0)
     self.assertEqual(graph.v_size(), 0)
     self.assertEqual(graph_algo.connected_components(), [])
     self.assertTrue(graph_algo.save_to_json('../data/hello'))
     self.assertTrue((graph_algo.load_from_json('../data/hello')))
     self.assertEqual(graph_algo.get_graph().e_size(), 0)
     self.assertEqual(graph_algo.get_graph().v_size(), 0)
Exemple #20
0
 def test_remove_edge(self):
     g0 = DiGraph()
     for i in range(0, 10):
         g0.add_node(i)
     for i in range(0, 10):
         g0.add_edge(i, 9 - i, 0.2)
     g0.remove_edge(0, 9)
     self.assertEqual(9, g0.e_size())
     self.assertEqual(21, g0.get_mc())
     self.assertFalse(9 in g0.all_out_edges_of_node(0).keys())
Exemple #21
0
    def test_load_from_json(self):
        self.assertTrue(self.algorithms.load_from_json("../data/A0"))
        graph_loaded = DiGraph()
        graph_loaded.add_node(0, (35.18753053591606, 32.10378225882353, 0.0))
        graph_loaded.add_node(1, (35.18958953510896, 32.10785303529412, 0.0))
        graph_loaded.add_node(2, (35.19341035835351, 32.10610841680672, 0.0))
        graph_loaded.add_node(3, (35.197528356739305, 32.1053088, 0.0))
        graph_loaded.add_node(4, (35.2016888087167, 32.10601755126051, 0.0))
        graph_loaded.add_node(5, (35.20582803389831, 32.10625380168067, 0.0))
        graph_loaded.add_node(6, (35.20792948668281, 32.10470908739496, 0.0))
        graph_loaded.add_node(7, (35.20746249717514, 32.10254648739496, 0.0))
        graph_loaded.add_node(8, (35.20319591121872, 32.1031462, 0.0))
        graph_loaded.add_node(9, (35.19597880064568, 32.10154696638656, 0.0))
        graph_loaded.add_node(10, (35.18910131880549, 32.103618700840336, 0.0))

        graph_loaded.add_edge(0, 1, 1.4004465106761335)
        graph_loaded.add_edge(0, 10, 1.4620268165085584)
        graph_loaded.add_edge(1, 0, 1.8884659521433524)
        graph_loaded.add_edge(1, 2, 1.7646903245689283)
        graph_loaded.add_edge(2, 1, 1.7155926739282625)
        graph_loaded.add_edge(2, 3, 1.1435447583365383)
        graph_loaded.add_edge(3, 2, 1.0980094622804095)
        graph_loaded.add_edge(3, 4, 1.4301580756736283)
        graph_loaded.add_edge(4, 3, 1.4899867265011255)
        graph_loaded.add_edge(4, 5, 1.9442789961315767)
        graph_loaded.add_edge(5, 4, 1.4622464066335845)
        graph_loaded.add_edge(5, 6, 1.160662656360925)
        graph_loaded.add_edge(6, 5, 1.6677173820549975)
        graph_loaded.add_edge(6, 7, 1.3968360163668776)
        graph_loaded.add_edge(7, 6, 1.0176531013725074)
        graph_loaded.add_edge(7, 8, 1.354895648936991)
        graph_loaded.add_edge(8, 7, 1.6449953452844968)
        graph_loaded.add_edge(8, 9, 1.8526880332753517)
        graph_loaded.add_edge(9, 8, 1.4575484853801393)
        graph_loaded.add_edge(9, 10, 1.022651770039933)
        graph_loaded.add_edge(10, 0, 1.1761238717867548)
        graph_loaded.add_edge(10, 9, 1.0887225789883779)

        self.assertEqual(self.algorithms.get_graph().v_size(),
                         graph_loaded.v_size())
        self.assertEqual(self.algorithms.get_graph().e_size(),
                         graph_loaded.e_size())
        self.assertEqual(self.algorithms.get_graph().get_mc(),
                         graph_loaded.get_mc())
        self.assertListEqual(self.algorithms.get_graph().edges,
                             graph_loaded.edges)
        self.assertEqual(self.algorithms.get_graph().get_all_v().keys(),
                         graph_loaded.get_all_v().keys())
        self.assertEqual(self.algorithms.get_graph().adjacency.keys(),
                         graph_loaded.adjacency.keys())
        self.assertNotEqual(self.algorithms.get_graph(), graph_loaded)
        self.assertEqual(str(self.algorithms.get_graph().vertices),
                         str(graph_loaded.vertices))
        self.assertEqual(str(self.algorithms.get_graph().adjacency),
                         str(graph_loaded.adjacency))
 def test_remove_node(self):
     graph = DiGraph()
     self.assertTrue(graph.add_node(0))
     self.assertTrue(graph.add_node(1))
     self.assertTrue(graph.add_node(2))
     self.assertTrue(graph.add_node(3))
     self.assertTrue(graph.add_edge(0, 1, 0))
     self.assertTrue(graph.add_edge(0, 2, 0))
     self.assertTrue(graph.add_edge(1, 2, 0))
     self.assertTrue(graph.add_edge(2, 1, 1))
     self.assertTrue(graph.remove_node(0))
     self.assertEqual(graph.v_size(), 3)
     self.assertEqual(graph.e_size(), 2)
     self.assertTrue(graph.add_node(0))
     self.assertEqual(graph.v_size(), 4)
     self.assertEqual(graph.e_size(), 2)
     self.assertTrue(graph.remove_node(2))
     self.assertEqual(graph.v_size(), 3)
     self.assertEqual(graph.e_size(), 0)
     self.assertEqual(graph.get_mc(), 15)
Exemple #23
0
 def test_load(self):  # test the loading from files
     g = DiGraph()
     ga = GraphAlgo(g)
     # load large graph
     self.assertTrue(
         ga.load_from_json(
             "C:\\Users\\User\\PycharmProjects\\Ex3\\Data\\A5"))
     g = ga.get_graph()
     # check values
     self.assertEqual(g.v_size(), 48)
     self.assertEqual(g.e_size(), 166)
Exemple #24
0
 def test_remove_node(self):
     g0 = DiGraph()
     for i in range(0, 10):
         g0.add_node(i)
     g0.add_edge(4, 3, 1)
     g0.add_edge(4, 2, 1)
     g0.add_edge(2, 4, 1)
     g0.add_edge(1, 2, 1)
     g0.add_edge(5, 4, 1)
     g0.add_edge(2, 5, 1)
     g0.remove_node(4)
     self.assertEqual(g0.get_all_v().get(4), None)
     self.assertEqual(0, len(g0.all_out_edges_of_node(5)))
     self.assertEqual(9, g0.v_size())
     self.assertEqual(2, g0.e_size())
     self.assertTrue(g0.remove_node(9))
     self.assertIsNone(g0.get_all_v().get(9))  # remove node without neighbors
     self.assertEqual(8, g0.v_size())
     self.assertEqual(2, g0.e_size())
     self.assertEqual(18, g0.get_mc())
Exemple #25
0
 def test_remove_node(self):
     g = DiGraph()
     self.assertEqual(0, g.v_size())
     self.assertEqual(0, g.e_size())
     g.add_node(1)
     g.add_node(2)
     g.add_node(3)
     g.add_node(4)
     g.add_edge(1, 2, 3)
     g.add_edge(2, 3, 2)
     g.add_edge(3, 4, 3)
     g.add_edge(4, 1, 2.5)
     self.assertEqual(4, g.v_size())
     self.assertEqual(4, g.e_size())
     self.assertTrue(g.remove_node(1))
     self.assertEqual(3, g.v_size())
     self.assertEqual(2, g.e_size())
     # try to remove non exist node
     self.assertFalse(g.remove_node(1))
     self.assertEqual(3, g.v_size())
 def test_empty_graph(self):
     graph = DiGraph()
     graph_algo = GraphAlgo(graph)
     self.assertEqual(graph.v_size(), 0)
     self.assertEqual(graph.e_size(), 0)
     self.assertEqual(graph_algo.shortest_path(0, 0), (None, []))
     self.assertEqual(graph_algo.connected_component(1), [])
     self.assertEqual(graph_algo.connected_components(), [])
     self.assertTrue(graph_algo.save_to_json('../data/empty_graph'))
     self.assertTrue((graph_algo.load_from_json('../data/empty_graph')))
     self.assertEqual(graph_algo.get_graph().v_size(), 0)
     self.assertEqual(graph_algo.get_graph().e_size(), 0)
Exemple #27
0
 def test_edgeSize(self):
     graph = DiGraph()
     ran = 1000
     graph.add_node(0)
     graph.add_node(1)
     graph.add_node(2)
     graph.add_node(3)
     for i in range(ran):
         if i > 3:
             graph.add_node(i)
             graph.add_edge(i, i - 1, i - 1)
             graph.add_edge(i, i - 2, i - 2)
             graph.add_edge(i, i - 3, i - 3)
             graph.add_edge(i, i - 4, i - 4)
     x = (ran - 4) * 4
     self.assertEqual(x, graph.e_size())
     for i in range(ran):
         if i > 3:
             graph.remove_edge(i, i - 1)
     y = x - (ran - 4)
     self.assertEqual(y, graph.e_size())
Exemple #28
0
 def test_add(self):  # chek add node and add edge
     graph = DiGraph()
     graph.add_node(1, (1, 2, 3))  #add node check
     graph.add_node(2, (2, 3, 4))
     graph.add_node(3, (5, 4, 6))
     graph.add_node(4, (3, 4, 6))
     self.assertTrue(4 == graph.v_size())
     self.assertTrue(0 == graph.e_size())
     graph.add_node(1, (2, 3, 4))
     self.assertTrue(4 == graph.v_size())
     graph.add_edge(1, 2, 3)
     graph.add_edge(2, 3, 3)
     graph.add_edge(3, 4, 3)
     graph.add_edge(4, 1, 3)
     self.assertTrue(4 == graph.e_size())
     self.assertTrue(8 == graph.get_mc())
     graph.add_edge(1, 2, 4)
     self.assertTrue(8 == graph.get_mc(), "you add exist edge!")
     self.assertTrue(4 == graph.e_size(), "you add exist edge!")
     graph.add_edge(1, 2, -5)
     self.assertTrue(8 == graph.get_mc(), "you add exist edge!")
     self.assertTrue(4 == graph.e_size(), "you add exist edge!")
Exemple #29
0
 def test_add_node(self):
     graph = DiGraph()
     for i in range(4):
         graph.add_node(i)
     graph.add_edge(0, 1, 1)
     graph.add_edge(1, 2, 2)
     graph.add_edge(2, 0, 3)
     graph.add_edge(3, 0, 7)
     self.assertEqual(4, graph.v_size())
     self.assertEqual(8, graph.get_mc())
     graph.add_edge(3, 0, 5)
     self.assertEqual(9, graph.get_mc())
     graph.add_edge(3, 0, 5)
     self.assertEqual(9, graph.get_mc())
     self.assertEqual(4, graph.e_size())
     graph.remove_node(0)
     self.assertEqual(3, graph.v_size())
     self.assertEqual(1, graph.e_size())
     self.assertTrue(graph.remove_edge(1, 2))
     self.assertEqual(0, graph.e_size())
     self.assertEqual(3, graph.v_size())
     self.assertFalse(graph.remove_edge(8, 9))
Exemple #30
0
 def test_add_edge(self):
     g = DiGraph()
     g.add_node(1)
     g.add_node(2)
     g.add_node(3)
     g.add_node(4)
     self.assertTrue(g.add_edge(1, 2, 3))
     self.assertTrue(g.add_edge(2, 3, 2))
     self.assertTrue(g.add_edge(3, 4, 3))
     self.assertTrue(g.add_edge(4, 1, 2.5))
     self.assertEqual(4, g.e_size())
     self.assertTrue(g.add_edge(1, 4, 0.5))
     self.assertEqual(5, g.e_size())
     # try to add an edge with non exist nodes
     self.assertFalse(g.add_edge(5, 10, 1.5))
     # try to add an edge with weight < 0
     self.assertFalse(g.add_edge(3, 2, -1))
     # try to add an edge from node to himself
     self.assertFalse(g.add_edge(2, 2, 1))
     # try to add an edge that one of the nodes not exist
     self.assertFalse(g.add_edge(1, 10, 2))
     self.assertEqual(5, g.e_size())