コード例 #1
0
def test_add_and_list_vertices():
    g = Graph()
    g.add_vertex('A')
    g.add_vertex('B')
    assert sorted(g.get_vertices()) == ['A', 'B']
    g.add_vertex('C')
    assert sorted(g.get_vertices()) == ['A', 'B', 'C']
コード例 #2
0
def test_get_edge_value_that_doesnt_exist():
    with pytest.raises(KeyError):
        g = Graph()
        g.add_vertex('A')
        g.add_vertex('B')
        g.add_edge('A', 'B')
        g.get_edge_value('C', 'D')  # Expected to throw KeyError
コード例 #3
0
def test_add_edge():
    g = Graph()
    g.add_vertex('A')
    g.add_vertex('B')
    g.add_edge('A', 'B')
    assert g._nodes['A'] == [('B', None)]
    g.add_edge('B', 'A', 7)
    assert g._nodes['B'] == [('A', 7)]
コード例 #4
0
def test_is_adjacent():
    g = Graph()
    g.add_vertex('A')
    g.add_vertex('B')
    g.add_edge('A', 'B')
    assert g.is_adjacent ('A', 'B')
    assert g.is_adjacent ('B', 'A') is False
    assert g.is_adjacent ('A', 'C') is False
    assert g.is_adjacent ('C', 'A') is False
コード例 #5
0
def test_set_edge_value():
    g = Graph()
    g.add_vertex('A')
    g.add_vertex('B')
    g.add_edge('A', 'B')
    assert g._nodes['A'] == [('B', None)]
    assert g._nodes['B'] == []
    g.set_edge_value('A', 'B', 7)
    assert g._nodes['A'] == [('B', 7)]
    assert g._nodes['B'] == []
コード例 #6
0
def generate(x_size, y_size):
    coordinates = {
        name: ((i % x_size) * 10 + 5 + random.randint(-5, 5),
               (i // y_size) * 10 + 5 + random.randint(-5, 5))
        for i, name in zip(range(x_size * y_size), names(x_size * y_size))
    }
    logger.debug('Coordinates: {}'.format(coordinates))

    g = Graph()

    # Add all nodes to graph.
    for name in coordinates.keys():
        g.add_vertex(name)
        logger.debug('Adding node {}'.format(name))

    # Add edges to all other nodes.
    for name, (x, y) in coordinates.items():
        nodes = list(coordinates.items())
        for nb_name, (nb_x, nb_y) in nodes:
            if not name == nb_name and not nb_name in g.neighbours(name):
                cost = abs(x - nb_x) + abs(
                    y - nb_y)  # Manhattan distance between nodes
                g.add_edge(name, nb_name, cost)
                g.add_edge(nb_name, name, cost)
                logger.debug('Added edge from {} to {} with cost {}.'.format(
                    name, nb_name, cost))
    return g
コード例 #7
0
def test__iter__():
    g = Graph()
    g.add_vertex('A')
    g.add_vertex('B')
    g.add_vertex('C')
    g.add_vertex('D')
    assert next(g.__iter__)
コード例 #8
0
def test__contains__():
    g = Graph()
    g.add_vertex('A')
    g.add_vertex('B')
    assert g.__contains__ ('A')
    assert g.__contains__ ('B')
    assert g.__contains__ ('C') is False
    assert g.__contains__ ('H') is False
コード例 #9
0
ファイル: test_graph.py プロジェクト: Kallshem/datastrukturer
class GraphTests(unittest.TestCase):
    def test_add_Node(self):
        self.test = Graph()
        self.test.add_node("lorem")
        self.assertIn("lorem", self.test._nodes)

    def setUp(self):
        self.test = Graph()
        self.test.add_node("lorem")
        self.test.add_node("ipsum")

    def test_add_edge(self):
        self.test.add_edge("lorem", "ipsum", 100)
        self.assertTrue(self.test._nodes["lorem"]._connections == {"ipsum": 100})

    def test_get_node(self):
        self.assertEqual(self.test.get_node("lorem"), self.test._nodes["lorem"])

    def test_get_graph_nodes(self):
        for node in self.test._nodes:
            self.assertIn(node, self.test.get_graph_nodes())
コード例 #10
0
class GraphTests(unittest.TestCase):
    def test_add_Node(self):
        self.test = Graph()
        self.test.add_node("lorem")
        self.assertIn("lorem", self.test._nodes)

    def setUp(self):
        self.test = Graph()
        self.test.add_node("lorem")
        self.test.add_node("ipsum")

    def test_add_edge(self):
        self.test.add_edge("lorem", "ipsum", 100)
        self.assertTrue(
            self.test._nodes["lorem"]._connections == {"ipsum": 100})

    def test_get_node(self):
        self.assertEqual(self.test.get_node("lorem"),
                         self.test._nodes["lorem"])

    def test_get_graph_nodes(self):
        for node in self.test._nodes:
            self.assertIn(node, self.test.get_graph_nodes())
コード例 #11
0
def create_problem():
    logger.debug('Creating problem graph.')

    g = Graph()

    g.add_vertex('A')
    g.add_vertex('B')
    g.add_vertex('C')
    g.add_vertex('D')
    g.add_vertex('E')
    g.add_vertex('F')
    g.add_vertex('G')
    g.add_vertex('H')

    g.add_edge('A', 'B', 3)
    g.add_edge('A', 'C', 4)
    g.add_edge('A', 'F', 2)
    g.add_edge('B', 'A', 3)
    g.add_edge('B', 'C', 2)
    g.add_edge('B', 'D', 2)
    g.add_edge('C', 'A', 4)
    g.add_edge('C', 'B', 2)
    g.add_edge('D', 'B', 2)
    g.add_edge('C', 'E', 1)
    g.add_edge('E', 'C', 1)
    g.add_edge('D', 'E', 2)
    g.add_edge('E', 'D', 2)
    g.add_edge('E', 'F', 3)
    g.add_edge('F', 'E', 3)
    g.add_edge('F', 'H', 3)
    g.add_edge('H', 'F', 3)
    g.add_edge('G', 'D', 4)
    g.add_edge('D', 'G', 4)
    g.add_edge('G', 'H', 3)
    g.add_edge('H', 'G', 3)
    g.add_edge('H', 'G', 3)
    g.add_edge('F', 'A', 2)
    g.add_edge('G', 'H', 3)
    g.add_edge('D', 'G', 4)
    g.add_edge('G', 'D', 4)
    return g
コード例 #12
0
def test_add_vertex():
    g = Graph()
    g.add_vertex('A')
    assert g._nodes['A'] == [] #Forsök undvika detta!
コード例 #13
0
 def test_add_Node(self):
     self.test = Graph()
     self.test.add_node("lorem")
     self.assertIn("lorem", self.test._nodes)
コード例 #14
0
 def setUp(self):
     self.test = Graph()
     self.test.add_node("lorem")
     self.test.add_node("ipsum")
コード例 #15
0
def test_add_vertex_exists():
    g = Graph()
    assert hasattr(g, 'add_vertex')
コード例 #16
0
ファイル: excercise.py プロジェクト: lucasryt/datastrukturer
def add_nodes():
    g = Graph()
    g.add_vertex('A')
    g.add_vertex('B')
    g.add_vertex('C')
    g.add_vertex('D')
    g.add_vertex('E')
    g.add_vertex('F')
    g.add_vertex('G')
    g.add_vertex('H')
    g.add_edge('A', 'B')
    g.add_edge('B', 'A')
    g.add_edge('B', 'C')
    g.add_edge('B', 'D')
    g.add_edge('C', 'B')
    g.add_edge('C', 'E')
    g.add_edge('D', 'B')
    g.add_edge('D', 'E')
    g.add_edge('D', 'G')
    g.add_edge('E', 'C')
    g.add_edge('E', 'D')
    g.add_edge('E', 'F')
    g.add_edge('F', 'E')
    g.add_edge('F', 'H')
    g.add_edge('G', 'D')
    g.add_edge('G', 'H')
    g.add_edge('H', 'F')
    g.add_edge('H', 'G')
    g.add_nodes['A'] = [('B', 3)]
    g.add_nodes['B'] = [('A', 3)]
    g.add_nodes['B'] = [('C', 2)]
    g.add_nodes['B'] = [('D', 2)]
    g.add_nodes['C'] = [('B', 2)]
    g.add_nodes['C'] = [('E', 1)]
    g.add_nodes['D'] = [('B', 2)]
    g.add_nodes['D'] = [('E', 2)]
    g.add_nodes['D'] = [('G', 4)]
    g.add_nodes['E'] = [('C', 1)]
    g.add_nodes['E'] = [('D', 2)]
    g.add_nodes['E'] = [('F', 3)]
    g.add_nodes['F'] = [('E', 3)]
    g.add_nodes['F'] = [('H', 3)]
    g.add_nodes['G'] = [('D', 4)]
    g.add_nodes['G'] = [('H', 3)]
    g.add_nodes['H'] = [('F', 3)]
    g.add_nodes['H'] = [('G', 3)]
コード例 #17
0
ファイル: test_graph.py プロジェクト: Kallshem/datastrukturer
 def setUp(self):
     self.test = Graph()
     self.test.add_node("lorem")
     self.test.add_node("ipsum")
コード例 #18
0
ファイル: test_graph.py プロジェクト: Kallshem/datastrukturer
 def test_add_Node(self):
     self.test = Graph()
     self.test.add_node("lorem")
     self.assertIn("lorem", self.test._nodes)