This repository has been archived on 2023-03-25. You can view files and clone it, but cannot push or open issues or pull requests.
mightyscape-1.1-deprecated/extensions/networkx/algorithms/community/tests/test_asyn_fluid.py
2020-07-30 01:16:18 +02:00

130 lines
3.2 KiB
Python

import pytest
from networkx import Graph, NetworkXError
from networkx.algorithms.community.asyn_fluid import *
def test_exceptions():
test = Graph()
test.add_node('a')
pytest.raises(NetworkXError, asyn_fluidc, test, 'hi')
pytest.raises(NetworkXError, asyn_fluidc, test, -1)
pytest.raises(NetworkXError, asyn_fluidc, test, 3)
test.add_node('b')
pytest.raises(NetworkXError, asyn_fluidc, test, 1)
def test_single_node():
test = Graph()
test.add_node('a')
# ground truth
ground_truth = set([frozenset(['a'])])
communities = asyn_fluidc(test, 1)
result = {frozenset(c) for c in communities}
assert result == ground_truth
def test_two_nodes():
test = Graph()
test.add_edge('a', 'b')
# ground truth
ground_truth = set([frozenset(['a']), frozenset(['b'])])
communities = asyn_fluidc(test, 2)
result = {frozenset(c) for c in communities}
assert result == ground_truth
def test_two_clique_communities():
test = Graph()
# c1
test.add_edge('a', 'b')
test.add_edge('a', 'c')
test.add_edge('b', 'c')
# connection
test.add_edge('c', 'd')
# c2
test.add_edge('d', 'e')
test.add_edge('d', 'f')
test.add_edge('f', 'e')
# ground truth
ground_truth = set([frozenset(['a', 'c', 'b']),
frozenset(['e', 'd', 'f'])])
communities = asyn_fluidc(test, 2, seed=7)
result = {frozenset(c) for c in communities}
assert result == ground_truth
def five_clique_ring():
"""Not auto-tested (not named test_...) due to cross-version seed issues
python3.4 in particular gives different results.
"""
test = Graph()
# c1
test.add_edge('1a', '1b')
test.add_edge('1a', '1c')
test.add_edge('1a', '1d')
test.add_edge('1b', '1c')
test.add_edge('1b', '1d')
test.add_edge('1c', '1d')
# c2
test.add_edge('2a', '2b')
test.add_edge('2a', '2c')
test.add_edge('2a', '2d')
test.add_edge('2b', '2c')
test.add_edge('2b', '2d')
test.add_edge('2c', '2d')
# c3
test.add_edge('3a', '3b')
test.add_edge('3a', '3c')
test.add_edge('3a', '3d')
test.add_edge('3b', '3c')
test.add_edge('3b', '3d')
test.add_edge('3c', '3d')
# c4
test.add_edge('4a', '4b')
test.add_edge('4a', '4c')
test.add_edge('4a', '4d')
test.add_edge('4b', '4c')
test.add_edge('4b', '4d')
test.add_edge('4c', '4d')
# c5
test.add_edge('5a', '5b')
test.add_edge('5a', '5c')
test.add_edge('5a', '5d')
test.add_edge('5b', '5c')
test.add_edge('5b', '5d')
test.add_edge('5c', '5d')
# connections
test.add_edge('1a', '2c')
test.add_edge('2a', '3c')
test.add_edge('3a', '4c')
test.add_edge('4a', '5c')
test.add_edge('5a', '1c')
# ground truth
ground_truth = set([frozenset(['1a', '1b', '1c', '1d']),
frozenset(['2a', '2b', '2c', '2d']),
frozenset(['3a', '3b', '3c', '3d']),
frozenset(['4a', '4b', '4c', '4d']),
frozenset(['5a', '5b', '5c', '5d'])])
communities = asyn_fluidc(test, 5, seed=9)
result = {frozenset(c) for c in communities}
assert result == ground_truth