Beispiel #1
0
 def test_setAndGetKeysAndInfosAndCopyNodeData(self):
     """
     Test that we can create Node Datas, set and get their infos,
      and get their keys(in the beginning should be 0).
      Then, to CHANGE their keys and infos, and get them changed:
      *create Node Datas
      *get their keys
      *set and get their infos
      *set (change) and get their keys
      *set (change) and get their infos
     """
     # creating a new node
     node1 = NodeData()
     node2 = NodeData()
     node1.setInfo("first")
     node2.setInfo("second")
     print("key of node1 is", node1.getKey())
     self.assertEqual(0, node1.getKey())
     print("key of node2 is", node2.getKey())
     self.assertEqual(1, node2.getKey())
     print("info of node1 is", node1.getInfo())
     self.assertEqual("first", node1.getInfo())
     print("key of node2 is", node2.getInfo())
     self.assertEqual("second", node2.getInfo())
     print("set the info of node1 to be change1", node1.setInfo("change1"))
     self.assertEqual("change1", node1.getInfo())
     print("change the key of node2 to be 3", node2.setkey(3))
     self.assertEqual(3, node2.getKey())
Beispiel #2
0
 def test_AddNode(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())
     self.assertEqual(g0.v_size(), 2)
 def test__copy__(self):
     n1 = NodeData(0)
     n2 = n1.__copy__()
     assert n1.comper(n2)
     n1 = NodeData(0, (0, 1, 2))
     n2 = n1.__copy__()
     assert n1.comper(n2)
Beispiel #4
0
    def test_all_out_edges_of_node(self):
        graph = DiGraph()

        tuple0 = (0, 30, 2)
        tuple1 = (50, 50, 50)
        node0 = NodeData(0, tuple0)  # node: key=0 tuple=(0, 30, 2)
        node1 = NodeData(1, tuple0)  # node: key=1 tuple=(0, 30, 2)
        node2 = NodeData(2, tuple1)  # node: key=2 tuple=(50, 50, 50)
        node3 = NodeData(3, tuple1)  # node: key=3 tuple=(50, 50, 50)

        graph.add_node(node0.get_key(), tuple0)  # add node0
        self.assertEqual({}, graph.all_out_edges_of_node(
            node0.get_key()))  # check the list In empty
        graph.add_node(node1.get_key(), tuple0)  # add node1
        graph.add_node(node2.get_key(), tuple1)  # add node2
        graph.add_node(node3.get_key(), tuple1)  # add node3

        graph.add_edge(node1.get_key(), node0.get_key(), 10)  # connect 1->0
        graph.add_edge(node1.get_key(), node2.get_key(), 15)  # connect 1->2
        graph.add_edge(node1.get_key(), node3.get_key(), 20)  # connect 1->2

        ans_list_keys = [node0.get_key(), node2.get_key(), node3.get_key()]
        for i in graph.all_out_edges_of_node(node1.get_key()).keys():
            self.assertIn(i, ans_list_keys)
        graph.remove_node(node2.get_key())  # remove node2
        graph.remove_node(node3.get_key())  # remove node3

        ans_list_keys = [node0.get_key()]
        for i in ans_list_keys:
            self.assertIn(i,
                          graph.all_out_edges_of_node(node1.get_key()).keys())
Beispiel #5
0
 def test_removeNode(self):
     g0 = DiGraph()
     node0 = NodeData(0, (0, 1, 2))
     node1 = NodeData(1, (2, 7, 3))
     g0.add_node(node0.getkey())
     g0.add_node(node1.getkey())
     g0.remove_node(0)
     self.assertEqual(g0.v_size(), 1)
Beispiel #6
0
 def test_initGraph(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())
     g1 = GraphAlgo(g0)
     self.assertEqual(g0.v_size(), g1.graph.v_size())
Beispiel #7
0
 def test_getMC(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.get_mc(), 4)
Beispiel #8
0
 def test_get_all_v(self):
     graph = DiGraph()
     graph.add_node(1)
     graph.add_node(2)
     nodes = graph.get_all_v()
     self.assertEqual(len(nodes.values()), 2, 'not all nodes returned')
     self.assertEqual(nodes.get(1), NodeData(1),
                      'Doesn\'t contain all nodes')
     self.assertEqual(nodes.get(2), NodeData(2),
                      'Doesn\'t contain all nodes')
Beispiel #9
0
 def setUp(self):
     global n, n1, n2
     n = NodeData(5)
     n1 = NodeData(2)
     n2 = NodeData(4)
     n.addNi(n1, 4.4)
     n.addNi(n2, 9.4)
     n.tag = 1
     n.info = "b"
     n.myLocation = (1, 1, 1)
Beispiel #10
0
 def test_save_and_load(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())
     g1 = GraphAlgo(g0)
     g1.save_to_json("graph.json")
     g2 = GraphAlgo()
     g2.load_from_json("graph.json")
     self.assertEqual(g1.graph.v_size(), g2.graph.v_size())
 def test_comper(self):
     node1 = NodeData(0)
     node2 = NodeData(0)
     assert node1.comper(node2)
     assert not node1.comper({123})
     node1.setLocation((0, 1, 2))
     assert not node1.comper(node2)
     node2.setLocation((0, 1, 2))
     assert node1.comper(node2)
     node2.setLocation((0, 1, 3))
     assert not node1.comper(node2)
Beispiel #12
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)})
Beispiel #13
0
 def test_set_and_get_weight_(self):
     for i in range(100):
         weight = random.uniform(0, 50)
         node: NodeData = NodeData(i, (20, 30, 40))
         self.assertTrue(node.get_weight() == 0)
         node.set_weight(weight)
         self.assertTrue(node.get_weight() == weight)
Beispiel #14
0
 def testSetAndGetWeight(self):
     """
     Testing set&gets methods of NodeData's weight
     """
     node1 = NodeData()
     node1.setWeight(8)
     self.assertEqual(8, node1.getWeight())
 def test_set_location(self):
     n1 = NodeData(0, (1, 2, 3))
     assert (1, 2, 3) == n1.getLocation()
     n1.setLocation((4, 2, 4))
     assert (4, 2, 4) == n1.getLocation()
     n1.setLocation(None)
     assert (4, 2, 4) == n1.getLocation()
Beispiel #16
0
    def test_get_all_v(self):
        graph = DiGraph()
        tuple0 = (0, 30, 2)
        tuple1 = (50, 50, 50)
        node0 = NodeData(0, tuple0)  # node: key=0 tuple=(0, 30, 2)
        node1 = NodeData(2, tuple0)  # node: key=2 tuple=(0, 30, 2)
        node2 = NodeData(10, tuple1)  # node: key=10 tuple=(50, 50, 50)

        graph.add_node(node0.get_key(), tuple0)
        graph.add_node(node1.get_key(), tuple0)
        graph.add_node(node2.get_key(), tuple1)

        nodes = [node0, node1, node2]

        for node in nodes:
            self.assertIn(node, graph.get_all_v().values())
Beispiel #17
0
 def test_get_and_set_info(self):
     node: NodeData = NodeData(1, (20, 30, 40))
     self.assertTrue(node.get_info() == "")
     node.set_info("black")
     self.assertTrue(node.get_info() == "black")
     node.set_info("white")
     self.assertTrue(node.get_info() == "white")
Beispiel #18
0
 def testSetDub(self):
     """
     This function tests the setDub function in NodeData
     """
     node1 = NodeData()
     node1.setDub(3)
     self.assertEqual(3, node1.dub)
Beispiel #19
0
 def testSetAndGetTagB(self):
     """
     Testing set&gets methods of NodeData's tagB
     """
     node1 = NodeData()
     node1.setTagB(10)
     self.assertEqual(10, node1.getTagB())
Beispiel #20
0
 def test_as_dict_node(self):
     pos = (1, 2, 3)
     node1 = NodeData(1, pos, 3.4)
     node_dict = node1.as_dict_node()
     test_dict = {"id": 1, "pos": pos, "_weight": 3.4, "_tag": 0, "_info": "f", "_src": {}, "_dest": {}}
     for k, v in node_dict.items():
         self.assertEqual(v, test_dict[k])
Beispiel #21
0
 def setCounter(self):
     """
     This function tests the setConuter function in NodeData.
     """
     node1 = NodeData()
     node1.setCounter(300)
     self.assertEqual(node1.counter, 300)
 def test_connected_components(self):
     self.graph = DiGraph()
     for i in range(5):
         self.graph.add_node(i)
     # 0 <-> 1
     self.graph.add_edge(0, 1, 1)
     self.graph.add_edge(1, 0, 1.1)
     #  2
     self.graph.add_edge(1, 2, 1.3)
     # 3 <-> 4
     self.graph.add_edge(4, 3, 1.1)
     self.graph.add_edge(3, 4, 1.1)
     algo = GraphAlgo(self.graph)
     scc: list = algo.connected_components()
     self.assertTrue(scc.__contains__([NodeData(2)]))
     self.assertTrue(scc.__contains__([NodeData(0), NodeData(1)]))
     self.assertTrue(scc.__contains__([NodeData(3), NodeData(4)]))
Beispiel #23
0
 def add_node(self, node_id: int, pos: tuple = None) -> bool:
     if self.__nodes.get(node_id) is None:
         self.__nodes.__setitem__(node_id, NodeData(node_id, pos))
         self.__edges.__setitem__(node_id, {})
         self.__edges_into.__setitem__(node_id, {})
         self.__mc += 1
         return True
     return False
Beispiel #24
0
 def test_creatingNewNodeAndGetKey(self):
     """
     Test that we can create a new NodeData. and get it's key (in the beginning should be 0).
     """
     # creating a new node
     newNode = NodeData()
     print("key of node is", newNode.getKey())
     self.assertEqual(0, newNode.getKey())
Beispiel #25
0
 def test_get_pos(self):
     for j in range(100):
         key = random.uniform(0, 50)
         key_int = int(key)
         x = random.uniform(50, 100)
         y = random.uniform(50, 100)
         z = random.uniform(50, 100)
         node: NodeData = NodeData(key_int, (x, y, z))
         self.assertTrue(node.get_pos() == (x, y, z))
Beispiel #26
0
 def add_node(self, node_id: int, pos: tuple = None) -> bool:
     if node_id not in self.graph and node_id >= 0:
         n = NodeData(node_id, pos)
         self.graph[node_id] = n
         self.neighborsSrc[node_id] = {}
         self.neighborsDest[node_id] = {}
         self.MC += 1
         return True
     return False
Beispiel #27
0
 def test_new_node(self):
     pos = (1, 2, 3)
     node1 = NodeData(1, pos, 3.4)
     self.assertEqual(node1.get_key(), 1)
     self.assertEqual(node1.get_pos(), (1, 2, 3))
     self.assertEqual(node1.get_weight(), 3.4)
     self.assertEqual(node1.get_info(), "f")
     self.assertEqual(node1.get_tag(), 0)
     self.assertEqual(node1.get_dest(), {})
     self.assertEqual(node1.get_src(), {})
     node2 = NodeData(2)
     self.assertEqual(node2.get_key(), 2)
     self.assertEqual(node2.get_pos(), None)
     self.assertEqual(node2.get_weight(), 0.0)
     self.assertEqual(node2.get_info(), "f")
     self.assertEqual(node2.get_tag(), 0)
     self.assertEqual(node2.get_dest(), {})
     self.assertEqual(node2.get_src(), {})
Beispiel #28
0
 def testCopyNodeData(self):
     """
       Tests copy constructor. takes a NodeData named n and copies it into this self NodeData.
       @return
      """
     node1 = NodeData()
     print("copying node1 to copyNode")
     copyNode = NodeData()
     node1.setInfo("first")
     copyNode.setInfo("second")
     print("key of node1 is", node1.getKey())
     self.assertEqual(0, node1.getKey())
     print("key of copyNode is", copyNode.getKey())
     self.assertNotEqual(copyNode.getKey(), node1.getKey())
     copyNode.copyNodeData(node1)
     self.assertEqual(copyNode.getKey(), node1.getKey())
     self.assertEqual(copyNode.getInfo(), node1.getInfo())
     print("key of node1 is", node1.getInfo())
     print("info of node1 is", node1.getInfo())
     print("key of copyNode is", copyNode.getInfo())
     print("info of copyNode is", copyNode.getInfo())
Beispiel #29
0
 def test_get_edge_weight(self):
     pos = (1, 2, 3)
     node = NodeData(1, pos, 3.4)
     node.add_dest(1, 3.2)
     node.add_dest(2, 3.2)
     node.add_dest(3, 4.5)
     node.add_dest(4, 1.3)
     node.add_dest(5, 3.4)
     node.add_dest(6, 2.3)
     test_dict = {'1': None, '2': 3.2, '3': 4.5, '4': 1.3, '5': 3.4, '6': 2.3}
     for k, v in test_dict.items():
         self.assertEqual(node.getWeight(int(k)), v)
Beispiel #30
0
 def test_add_src(self):
     pos = (1, 2, 3)
     node = NodeData(1, pos, 3.4)
     node.add_src(1, 3.2)
     node.add_src(2, 3.2)
     node.add_src(3, 4.5)
     node.add_src(4, 1.3)
     node_dict = node.get_src()
     self.assertEqual(1 in node_dict, False)
     test_dict = {'2': 3.2, '3': 4.5, '4': 1.3}
     for k, v in node_dict.items():
         self.assertEqual(v, test_dict[str(k)])