test_duplication.py 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. """Unit tests for the :mod:`networkx.generators.duplication` module.
  2. """
  3. import pytest
  4. from networkx.exception import NetworkXError
  5. from networkx.generators.duplication import (
  6. duplication_divergence_graph,
  7. partial_duplication_graph,
  8. )
  9. class TestDuplicationDivergenceGraph:
  10. """Unit tests for the
  11. :func:`networkx.generators.duplication.duplication_divergence_graph`
  12. function.
  13. """
  14. def test_final_size(self):
  15. G = duplication_divergence_graph(3, 1)
  16. assert len(G) == 3
  17. G = duplication_divergence_graph(3, 1, seed=42)
  18. assert len(G) == 3
  19. def test_probability_too_large(self):
  20. with pytest.raises(NetworkXError):
  21. duplication_divergence_graph(3, 2)
  22. def test_probability_too_small(self):
  23. with pytest.raises(NetworkXError):
  24. duplication_divergence_graph(3, -1)
  25. class TestPartialDuplicationGraph:
  26. """Unit tests for the
  27. :func:`networkx.generators.duplication.partial_duplication_graph`
  28. function.
  29. """
  30. def test_final_size(self):
  31. N = 10
  32. n = 5
  33. p = 0.5
  34. q = 0.5
  35. G = partial_duplication_graph(N, n, p, q)
  36. assert len(G) == N
  37. G = partial_duplication_graph(N, n, p, q, seed=42)
  38. assert len(G) == N
  39. def test_initial_clique_size(self):
  40. N = 10
  41. n = 10
  42. p = 0.5
  43. q = 0.5
  44. G = partial_duplication_graph(N, n, p, q)
  45. assert len(G) == n
  46. def test_invalid_initial_size(self):
  47. with pytest.raises(NetworkXError):
  48. N = 5
  49. n = 10
  50. p = 0.5
  51. q = 0.5
  52. G = partial_duplication_graph(N, n, p, q)
  53. def test_invalid_probabilities(self):
  54. N = 1
  55. n = 1
  56. for p, q in [(0.5, 2), (0.5, -1), (2, 0.5), (-1, 0.5)]:
  57. args = (N, n, p, q)
  58. pytest.raises(NetworkXError, partial_duplication_graph, *args)