import pytest import networkx as nx def test_edge_betweenness_partition(): G = nx.barbell_graph(3, 0) C = nx.community.edge_betweenness_partition(G, 2) answer = [{0, 1, 2}, {3, 4, 5}] assert len(C) == len(answer) for s in answer: assert s in C G = nx.barbell_graph(3, 1) C = nx.community.edge_betweenness_partition(G, 3) answer = [{0, 1, 2}, {4, 5, 6}, {3}] assert len(C) == len(answer) for s in answer: assert s in C C = nx.community.edge_betweenness_partition(G, 7) answer = [{n} for n in G] assert len(C) == len(answer) for s in answer: assert s in C C = nx.community.edge_betweenness_partition(G, 1) assert C == [set(G)] C = nx.community.edge_betweenness_partition(G, 1, weight="weight") assert C == [set(G)] with pytest.raises(nx.NetworkXError): nx.community.edge_betweenness_partition(G, 0) with pytest.raises(nx.NetworkXError): nx.community.edge_betweenness_partition(G, -1) with pytest.raises(nx.NetworkXError): nx.community.edge_betweenness_partition(G, 10) def test_edge_current_flow_betweenness_partition(): pytest.importorskip("scipy") G = nx.barbell_graph(3, 0) C = nx.community.edge_current_flow_betweenness_partition(G, 2) answer = [{0, 1, 2}, {3, 4, 5}] assert len(C) == len(answer) for s in answer: assert s in C G = nx.barbell_graph(3, 1) C = nx.community.edge_current_flow_betweenness_partition(G, 2) answers = [[{0, 1, 2, 3}, {4, 5, 6}], [{0, 1, 2}, {3, 4, 5, 6}]] assert len(C) == len(answers[0]) assert any(all(s in answer for s in C) for answer in answers) C = nx.community.edge_current_flow_betweenness_partition(G, 3) answer = [{0, 1, 2}, {4, 5, 6}, {3}] assert len(C) == len(answer) for s in answer: assert s in C C = nx.community.edge_current_flow_betweenness_partition(G, 4) answers = [[{1, 2}, {4, 5, 6}, {3}, {0}], [{0, 1, 2}, {5, 6}, {3}, {4}]] assert len(C) == len(answers[0]) assert any(all(s in answer for s in C) for answer in answers) C = nx.community.edge_current_flow_betweenness_partition(G, 5) answer = [{1, 2}, {5, 6}, {3}, {0}, {4}] assert len(C) == len(answer) for s in answer: assert s in C C = nx.community.edge_current_flow_betweenness_partition(G, 6) answers = [[{2}, {5, 6}, {3}, {0}, {4}, {1}], [{1, 2}, {6}, {3}, {0}, {4}, {5}]] assert len(C) == len(answers[0]) assert any(all(s in answer for s in C) for answer in answers) C = nx.community.edge_current_flow_betweenness_partition(G, 7) answer = [{n} for n in G] assert len(C) == len(answer) for s in answer: assert s in C C = nx.community.edge_current_flow_betweenness_partition(G, 1) assert C == [set(G)] C = nx.community.edge_current_flow_betweenness_partition(G, 1, weight="weight") assert C == [set(G)] with pytest.raises(nx.NetworkXError): nx.community.edge_current_flow_betweenness_partition(G, 0) with pytest.raises(nx.NetworkXError): nx.community.edge_current_flow_betweenness_partition(G, -1) with pytest.raises(nx.NetworkXError): nx.community.edge_current_flow_betweenness_partition(G, 10) N = 10 G = nx.empty_graph(N) for i in range(2, N - 1): C = nx.community.edge_current_flow_betweenness_partition(G, i) assert C == [{n} for n in G]