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']
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
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)]
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
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'] == []
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
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__)
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
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())
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())
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
def test_add_vertex(): g = Graph() g.add_vertex('A') assert g._nodes['A'] == [] #Forsök undvika detta!
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_vertex_exists(): g = Graph() assert hasattr(g, 'add_vertex')
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)]