1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- """Unit tests for the :mod:`networkx.generators.sudoku_graph` module."""
- import pytest
- import networkx as nx
- def test_sudoku_negative():
- """Raise an error when generating a Sudoku graph of order -1."""
- pytest.raises(nx.NetworkXError, nx.sudoku_graph, n=-1)
- @pytest.mark.parametrize("n", [0, 1, 2, 3, 4])
- def test_sudoku_generator(n):
- """Generate Sudoku graphs of various sizes and verify their properties."""
- G = nx.sudoku_graph(n)
- expected_nodes = n**4
- expected_degree = (n - 1) * (3 * n + 1)
- expected_edges = expected_nodes * expected_degree // 2
- assert not G.is_directed()
- assert not G.is_multigraph()
- assert G.number_of_nodes() == expected_nodes
- assert G.number_of_edges() == expected_edges
- assert all(d == expected_degree for _, d in G.degree)
- if n == 2:
- assert sorted(G.neighbors(6)) == [2, 3, 4, 5, 7, 10, 14]
- elif n == 3:
- assert sorted(G.neighbors(42)) == [
- 6,
- 15,
- 24,
- 33,
- 34,
- 35,
- 36,
- 37,
- 38,
- 39,
- 40,
- 41,
- 43,
- 44,
- 51,
- 52,
- 53,
- 60,
- 69,
- 78,
- ]
- elif n == 4:
- assert sorted(G.neighbors(0)) == [
- 1,
- 2,
- 3,
- 4,
- 5,
- 6,
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 32,
- 33,
- 34,
- 35,
- 48,
- 49,
- 50,
- 51,
- 64,
- 80,
- 96,
- 112,
- 128,
- 144,
- 160,
- 176,
- 192,
- 208,
- 224,
- 240,
- ]
|