82 lines
2.2 KiB
Python
82 lines
2.2 KiB
Python
|
# -*- encoding: utf-8 -*-
|
||
|
# test_duplication.py - unit tests for the generators.duplication module
|
||
|
#
|
||
|
# Copyright 2010-2019 NetworkX developers.
|
||
|
#
|
||
|
# This file is part of NetworkX.
|
||
|
#
|
||
|
# NetworkX is distributed under a BSD license; see LICENSE.txt for more
|
||
|
# information.
|
||
|
"""Unit tests for the :mod:`networkx.generators.duplication` module.
|
||
|
|
||
|
"""
|
||
|
import pytest
|
||
|
|
||
|
from networkx.exception import NetworkXError
|
||
|
from networkx.generators.duplication import duplication_divergence_graph
|
||
|
from networkx.generators.duplication import partial_duplication_graph
|
||
|
|
||
|
|
||
|
class TestDuplicationDivergenceGraph(object):
|
||
|
"""Unit tests for the
|
||
|
:func:`networkx.generators.duplication.duplication_divergence_graph`
|
||
|
function.
|
||
|
|
||
|
"""
|
||
|
|
||
|
def test_final_size(self):
|
||
|
G = duplication_divergence_graph(3, 1)
|
||
|
assert len(G) == 3
|
||
|
G = duplication_divergence_graph(3, 1, seed=42)
|
||
|
assert len(G) == 3
|
||
|
|
||
|
def test_probability_too_large(self):
|
||
|
with pytest.raises(NetworkXError):
|
||
|
duplication_divergence_graph(3, 2)
|
||
|
|
||
|
def test_probability_too_small(self):
|
||
|
with pytest.raises(NetworkXError):
|
||
|
duplication_divergence_graph(3, -1)
|
||
|
|
||
|
|
||
|
class TestPartialDuplicationGraph(object):
|
||
|
"""Unit tests for the
|
||
|
:func:`networkx.generators.duplication.partial_duplication_graph`
|
||
|
function.
|
||
|
|
||
|
"""
|
||
|
|
||
|
def test_final_size(self):
|
||
|
N = 10
|
||
|
n = 5
|
||
|
p = 0.5
|
||
|
q = 0.5
|
||
|
G = partial_duplication_graph(N, n, p, q)
|
||
|
assert len(G) == N
|
||
|
G = partial_duplication_graph(N, n, p, q, seed=42)
|
||
|
assert len(G) == N
|
||
|
|
||
|
def test_initial_clique_size(self):
|
||
|
N = 10
|
||
|
n = 10
|
||
|
p = 0.5
|
||
|
q = 0.5
|
||
|
G = partial_duplication_graph(N, n, p, q)
|
||
|
assert len(G) == n
|
||
|
|
||
|
def test_invalid_initial_size(self):
|
||
|
with pytest.raises(NetworkXError):
|
||
|
N = 5
|
||
|
n = 10
|
||
|
p = 0.5
|
||
|
q = 0.5
|
||
|
G = partial_duplication_graph(N, n, p, q)
|
||
|
assert len(G) == n
|
||
|
|
||
|
def test_invalid_probabilities(self):
|
||
|
N = 1
|
||
|
n = 1
|
||
|
for p, q in [(0.5, 2), (0.5, -1), (2, 0.5), (-1, 0.5)]:
|
||
|
args = (N, n, p, q)
|
||
|
pytest.raises(NetworkXError, partial_duplication_graph, *args)
|