aboutsummaryrefslogtreecommitdiff
path: root/.venv/lib/python3.12/site-packages/networkx/algorithms/tests/test_regular.py
diff options
context:
space:
mode:
Diffstat (limited to '.venv/lib/python3.12/site-packages/networkx/algorithms/tests/test_regular.py')
-rw-r--r--.venv/lib/python3.12/site-packages/networkx/algorithms/tests/test_regular.py92
1 files changed, 92 insertions, 0 deletions
diff --git a/.venv/lib/python3.12/site-packages/networkx/algorithms/tests/test_regular.py b/.venv/lib/python3.12/site-packages/networkx/algorithms/tests/test_regular.py
new file mode 100644
index 00000000..a8b4c3a3
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/networkx/algorithms/tests/test_regular.py
@@ -0,0 +1,92 @@
+import pytest
+
+import networkx
+import networkx as nx
+import networkx.algorithms.regular as reg
+import networkx.generators as gen
+
+
+class TestKFactor:
+ def test_k_factor_trivial(self):
+ g = gen.cycle_graph(4)
+ f = reg.k_factor(g, 2)
+ assert g.edges == f.edges
+
+ def test_k_factor1(self):
+ g = gen.grid_2d_graph(4, 4)
+ g_kf = reg.k_factor(g, 2)
+ for edge in g_kf.edges():
+ assert g.has_edge(edge[0], edge[1])
+ for _, degree in g_kf.degree():
+ assert degree == 2
+
+ def test_k_factor2(self):
+ g = gen.complete_graph(6)
+ g_kf = reg.k_factor(g, 3)
+ for edge in g_kf.edges():
+ assert g.has_edge(edge[0], edge[1])
+ for _, degree in g_kf.degree():
+ assert degree == 3
+
+ def test_k_factor3(self):
+ g = gen.grid_2d_graph(4, 4)
+ with pytest.raises(nx.NetworkXUnfeasible):
+ reg.k_factor(g, 3)
+
+ def test_k_factor4(self):
+ g = gen.lattice.hexagonal_lattice_graph(4, 4)
+ # Perfect matching doesn't exist for 4,4 hexagonal lattice graph
+ with pytest.raises(nx.NetworkXUnfeasible):
+ reg.k_factor(g, 2)
+
+ def test_k_factor5(self):
+ g = gen.complete_graph(6)
+ # small k to exercise SmallKGadget
+ g_kf = reg.k_factor(g, 2)
+ for edge in g_kf.edges():
+ assert g.has_edge(edge[0], edge[1])
+ for _, degree in g_kf.degree():
+ assert degree == 2
+
+
+class TestIsRegular:
+ def test_is_regular1(self):
+ g = gen.cycle_graph(4)
+ assert reg.is_regular(g)
+
+ def test_is_regular2(self):
+ g = gen.complete_graph(5)
+ assert reg.is_regular(g)
+
+ def test_is_regular3(self):
+ g = gen.lollipop_graph(5, 5)
+ assert not reg.is_regular(g)
+
+ def test_is_regular4(self):
+ g = nx.DiGraph()
+ g.add_edges_from([(0, 1), (1, 2), (2, 0)])
+ assert reg.is_regular(g)
+
+
+def test_is_regular_empty_graph_raises():
+ G = nx.Graph()
+ with pytest.raises(nx.NetworkXPointlessConcept, match="Graph has no nodes"):
+ nx.is_regular(G)
+
+
+class TestIsKRegular:
+ def test_is_k_regular1(self):
+ g = gen.cycle_graph(4)
+ assert reg.is_k_regular(g, 2)
+ assert not reg.is_k_regular(g, 3)
+
+ def test_is_k_regular2(self):
+ g = gen.complete_graph(5)
+ assert reg.is_k_regular(g, 4)
+ assert not reg.is_k_regular(g, 3)
+ assert not reg.is_k_regular(g, 6)
+
+ def test_is_k_regular3(self):
+ g = gen.lollipop_graph(5, 5)
+ assert not reg.is_k_regular(g, 5)
+ assert not reg.is_k_regular(g, 6)