コード例 #1
0
ファイル: TestNodeData.py プロジェクト: Dvir-Segal/Ex3Oop
 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())
コード例 #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)
コード例 #3
0
 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)
コード例 #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())
コード例 #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)
コード例 #6
0
ファイル: TestGraphAlgo.py プロジェクト: DenisKostyuk/Ex3
 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())
コード例 #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)
コード例 #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')
コード例 #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)
コード例 #10
0
ファイル: TestGraphAlgo.py プロジェクト: DenisKostyuk/Ex3
 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())
コード例 #11
0
 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)
コード例 #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)})
コード例 #13
0
ファイル: TestNodeData.py プロジェクト: snir1551/Ex3_OPP
 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)
コード例 #14
0
ファイル: TestNodeData.py プロジェクト: Dvir-Segal/Ex3Oop
 def testSetAndGetWeight(self):
     """
     Testing set&gets methods of NodeData's weight
     """
     node1 = NodeData()
     node1.setWeight(8)
     self.assertEqual(8, node1.getWeight())
コード例 #15
0
 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()
コード例 #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())
コード例 #17
0
ファイル: TestNodeData.py プロジェクト: snir1551/Ex3_OPP
 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")
コード例 #18
0
ファイル: TestNodeData.py プロジェクト: Dvir-Segal/Ex3Oop
 def testSetDub(self):
     """
     This function tests the setDub function in NodeData
     """
     node1 = NodeData()
     node1.setDub(3)
     self.assertEqual(3, node1.dub)
コード例 #19
0
ファイル: TestNodeData.py プロジェクト: Dvir-Segal/Ex3Oop
 def testSetAndGetTagB(self):
     """
     Testing set&gets methods of NodeData's tagB
     """
     node1 = NodeData()
     node1.setTagB(10)
     self.assertEqual(10, node1.getTagB())
コード例 #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])
コード例 #21
0
ファイル: TestNodeData.py プロジェクト: Dvir-Segal/Ex3Oop
 def setCounter(self):
     """
     This function tests the setConuter function in NodeData.
     """
     node1 = NodeData()
     node1.setCounter(300)
     self.assertEqual(node1.counter, 300)
コード例 #22
0
 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)]))
コード例 #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
コード例 #24
0
ファイル: TestNodeData.py プロジェクト: Dvir-Segal/Ex3Oop
 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())
コード例 #25
0
ファイル: TestNodeData.py プロジェクト: snir1551/Ex3_OPP
 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))
コード例 #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
コード例 #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(), {})
コード例 #28
0
ファイル: TestNodeData.py プロジェクト: Dvir-Segal/Ex3Oop
 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())
コード例 #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)
コード例 #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)])