Skip to content

Commit f3a60a9

Browse files
committed
refactor: extract data function
1 parent c2fb0c4 commit f3a60a9

File tree

2 files changed

+122
-51
lines changed

2 files changed

+122
-51
lines changed
Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
import networkx
2+
3+
seattle = 'Seattle'
4+
san_francisco = 'San Francisco'
5+
los_angeles = 'Los Angeles'
6+
riverside = 'Riverside'
7+
phoenix = 'Phoenix'
8+
dallas = 'Dallas'
9+
houston = 'Houston'
10+
atlanta = 'Atlanta'
11+
miami = 'Miami'
12+
chicago = 'Chicago'
13+
detroit = 'Detroit'
14+
boston = 'Boston'
15+
new_york = 'New York'
16+
philadelphia = 'Philadelphia'
17+
washington = 'Washington'
18+
19+
20+
def create_city_graph() -> networkx.Graph:
21+
edges = [
22+
(seattle, chicago),
23+
(seattle, san_francisco),
24+
(san_francisco, riverside),
25+
(san_francisco, los_angeles),
26+
(los_angeles, riverside),
27+
(los_angeles, phoenix),
28+
(riverside, phoenix),
29+
(riverside, chicago),
30+
(phoenix, dallas),
31+
(phoenix, houston),
32+
(dallas, chicago),
33+
(dallas, atlanta),
34+
(dallas, houston),
35+
(houston, atlanta),
36+
(houston, miami),
37+
(atlanta, chicago),
38+
(atlanta, washington),
39+
(atlanta, miami),
40+
(miami, washington),
41+
(chicago, detroit),
42+
(detroit, boston),
43+
(detroit, washington),
44+
(detroit, new_york),
45+
(boston, new_york),
46+
(new_york, philadelphia),
47+
(philadelphia, washington)
48+
]
49+
graph = networkx.Graph()
50+
graph.add_edges_from(edges)
51+
return graph
52+
53+
54+
def create_weighted_city_graph() -> networkx.Graph:
55+
weighted_edges = [
56+
(seattle, chicago, 1737),
57+
(seattle, san_francisco, 678),
58+
(san_francisco, riverside, 386),
59+
(san_francisco, los_angeles, 348),
60+
(los_angeles, riverside, 50),
61+
(los_angeles, phoenix, 357),
62+
(riverside, phoenix, 307),
63+
(riverside, chicago, 1704),
64+
(phoenix, dallas, 887),
65+
(phoenix, houston, 1015),
66+
(dallas, chicago, 805),
67+
(dallas, atlanta, 721),
68+
(dallas, houston, 225),
69+
(houston, atlanta, 702),
70+
(houston, miami, 968),
71+
(atlanta, chicago, 588),
72+
(atlanta, washington, 543),
73+
(atlanta, miami, 604),
74+
(miami, washington, 923),
75+
(chicago, detroit, 238),
76+
(detroit, boston, 613),
77+
(detroit, washington, 396),
78+
(detroit, new_york, 482),
79+
(boston, new_york, 190),
80+
(new_york, philadelphia, 81),
81+
(philadelphia, washington, 123)
82+
]
83+
graph = networkx.Graph()
84+
graph.add_weighted_edges_from(weighted_edges)
85+
return graph

python-algorithm/algorithm/graph/test/test_breadth_first_search.py

Lines changed: 37 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,7 @@
1-
import pytest, networkx
2-
3-
4-
def create_city_graph() -> networkx.Graph:
5-
graph = networkx.Graph()
6-
graph.add_edge("Seattle", "Chicago")
7-
graph.add_edge("Seattle", "San Francisco")
8-
graph.add_edge("San Francisco", "Riverside")
9-
graph.add_edge("San Francisco", "Los Angeles")
10-
graph.add_edge("Los Angeles", "Riverside")
11-
graph.add_edge("Los Angeles", "Phoenix")
12-
graph.add_edge("Riverside", "Phoenix")
13-
graph.add_edge("Riverside", "Chicago")
14-
graph.add_edge("Phoenix", "Dallas")
15-
graph.add_edge("Phoenix", "Houston")
16-
graph.add_edge("Dallas", "Chicago")
17-
graph.add_edge("Dallas", "Atlanta")
18-
graph.add_edge("Dallas", "Houston")
19-
graph.add_edge("Houston", "Atlanta")
20-
graph.add_edge("Houston", "Miami")
21-
graph.add_edge("Atlanta", "Chicago")
22-
graph.add_edge("Atlanta", "Washington")
23-
graph.add_edge("Atlanta", "Miami")
24-
graph.add_edge("Miami", "Washington")
25-
graph.add_edge("Chicago", "Detroit")
26-
graph.add_edge("Detroit", "Boston")
27-
graph.add_edge("Detroit", "Washington")
28-
graph.add_edge("Detroit", "New York")
29-
graph.add_edge("Boston", "New York")
30-
graph.add_edge("New York", "Philadelphia")
31-
graph.add_edge("Philadelphia", "Washington")
32-
return graph
1+
import networkx
2+
import pytest
333

4+
from algorithm.graph.test.graph_data_utils import create_city_graph
345

356
city_graph = create_city_graph()
367

@@ -39,23 +10,30 @@ def create_city_graph() -> networkx.Graph:
3910
@pytest.mark.parametrize(
4011
argnames='graph, source, expected',
4112
argvalues=[
42-
(city_graph, "Seattle", ["Chicago", "San Francisco"]),
43-
(city_graph, "San Francisco", ["Seattle", "Riverside", "Los Angeles"]),
44-
(city_graph, "Los Angeles", ["San Francisco", "Riverside", "Phoenix"]),
45-
(city_graph, "Riverside", ["San Francisco", "Los Angeles", "Phoenix", "Chicago"]),
46-
(city_graph, "Phoenix", ["Los Angeles", "Riverside", "Dallas", "Houston"]),
47-
(city_graph, "Chicago", ["Seattle", "Riverside", "Dallas", "Atlanta", "Detroit"]),
48-
(city_graph, "Boston", ["Detroit", "New York"]),
49-
(city_graph, "New York", ["Detroit", "Boston", "Philadelphia"]),
50-
(city_graph, "Atlanta", ["Dallas", "Houston", "Chicago", "Washington", "Miami"]),
51-
(city_graph, "Miami", ["Houston", "Atlanta", "Washington"]),
52-
(city_graph, "Dallas", ["Phoenix", "Chicago", "Atlanta", "Houston"]),
53-
(city_graph, "Houston", ["Phoenix", "Dallas", "Atlanta", "Miami"]),
54-
(city_graph, "Detroit", ["Chicago", "Boston", "Washington", "New York"]),
55-
(city_graph, "Philadelphia", ["New York", "Washington"]),
56-
(city_graph, "Washington", ["Atlanta", "Miami", "Detroit", "Philadelphia"])
13+
(city_graph, 'Seattle', ['Chicago', 'San Francisco']),
14+
(city_graph, 'San Francisco', ['Seattle', 'Riverside', 'Los Angeles']),
15+
(city_graph, 'Los Angeles', ['San Francisco', 'Riverside', 'Phoenix']),
16+
(city_graph, 'Riverside', ['San Francisco', 'Los Angeles', 'Phoenix', 'Chicago']),
17+
(city_graph, 'Phoenix', ['Los Angeles', 'Riverside', 'Dallas', 'Houston']),
18+
(city_graph, 'Chicago', ['Seattle', 'Riverside', 'Dallas', 'Atlanta', 'Detroit']),
19+
(city_graph, 'Boston', ['Detroit', 'New York']),
20+
(city_graph, 'New York', ['Detroit', 'Boston', 'Philadelphia']),
21+
(city_graph, 'Atlanta', ['Dallas', 'Houston', 'Chicago', 'Washington', 'Miami']),
22+
(city_graph, 'Miami', ['Houston', 'Atlanta', 'Washington']),
23+
(city_graph, 'Dallas', ['Phoenix', 'Chicago', 'Atlanta', 'Houston']),
24+
(city_graph, 'Houston', ['Phoenix', 'Dallas', 'Atlanta', 'Miami']),
25+
(city_graph, 'Detroit', ['Chicago', 'Boston', 'Washington', 'New York']),
26+
(city_graph, 'Philadelphia', ['New York', 'Washington']),
27+
(city_graph, 'Washington', ['Atlanta', 'Miami', 'Detroit', 'Philadelphia'])
5728
])
5829
def test_graph_neighbors(benchmark, graph, source, expected):
30+
"""
31+
Find the neighboring city nodes of the source city node in the United States city graph.
32+
:param benchmark: benchmark fixture
33+
:param graph: city graph of the United States
34+
:param source: source city node
35+
:param expected: list of neighboring city nodes
36+
"""
5937
result = benchmark(graph.neighbors, source)
6038
assert sorted(expected) == sorted(result)
6139

@@ -64,12 +42,20 @@ def test_graph_neighbors(benchmark, graph, source, expected):
6442
@pytest.mark.parametrize(
6543
argnames='graph, source, distance, expected',
6644
argvalues=[
67-
(city_graph, "Boston", 1, ["Detroit", "New York"]),
68-
(city_graph, "Boston", 2, ["Chicago", "Washington", "Philadelphia"]),
69-
(city_graph, "Boston", 3, ["Seattle", "Riverside", "Dallas", "Atlanta", "Miami"]),
45+
(city_graph, 'Boston', 1, ['Detroit', 'New York']),
46+
(city_graph, 'Boston', 2, ['Chicago', 'Washington', 'Philadelphia']),
47+
(city_graph, 'Boston', 3, ['Seattle', 'Riverside', 'Dallas', 'Atlanta', 'Miami']),
7048
],
71-
ids=["distance1", "distance2", "distance3"])
49+
ids=['distance1', 'distance2', 'distance3'])
7250
def test_graph_breadth_first_search(benchmark, graph, source, distance, expected):
51+
"""
52+
Find the city nodes at a given distance from the source city node in the United States city graph.
53+
:param benchmark: benchmark fixture
54+
:param graph: city graph of the United States
55+
:param source: source city node
56+
:param distance: distance from the source city node
57+
:param expected: list of city nodes at the given distance from the source city node
58+
"""
7359
bfs_generator = benchmark(networkx.bfs_layers, graph, source)
7460
path = []
7561
for i, layer in enumerate(bfs_generator):

0 commit comments

Comments
 (0)