Files
2026-07-13 12:36:30 +08:00

49 lines
2.0 KiB
Python

import unittest
import easygraph as eg
from easygraph import LS_degree_communities
class TestLSDetection(unittest.TestCase):
def setUp(self):
self.graph_simple = eg.Graph()
self.graph_simple.add_edges_from([(0,2), (0,3), (0,4), (0,5), (1,2), (1,3), (1,4), (1,5)])
self.graph_disconnected = eg.Graph()
self.graph_disconnected.add_edges_from([(0, 1), (2, 3), (4, 5)])
self.graph_single_node = eg.Graph()
self.graph_single_node.add_node(42)
self.graph_empty = eg.Graph()
def test_LS_simple(self):
_, _, _, _, communities, _ = LS_degree_communities(self.graph_simple, maximum_tree=True, isdraw = False, seed=163)
flat = set().union(*communities.values())
self.assertSetEqual(flat, set(self.graph_simple.nodes))
def test_LS_disconnected(self):
_, _, _, _, communities, _ = LS_degree_communities(self.graph_disconnected, maximum_tree=True, isdraw = False, seed=163)
flat =set().union(*communities.values())
self.assertSetEqual(flat, set(self.graph_disconnected.nodes))
def test_LS_single_node(self):
_, _, _, _, communities, _ = LS_degree_communities(self.graph_single_node, maximum_tree=True, isdraw = False, seed=163)
flat = set().union(communities.keys())
self.assertEqual(len(flat), 1)
self.assertSetEqual(flat, {42})
def test_LS_empty_graph(self):
_, _, _, _, communities, _ = LS_degree_communities(self.graph_empty, maximum_tree=True, isdraw = False, seed=163)
self.assertEqual(communities, {})
def test_LS_partitions_progressive_size(self):
_, _, _, _, communities, _ = LS_degree_communities(self.graph_simple, maximum_tree=True, isdraw = False, seed=163)
total_nodes = sum(len(members) for center, members in communities.items())
self.assertEqual(total_nodes, len(self.graph_simple.nodes))
flat = [node for _,members in communities.items() for node in members]
self.assertEqual(len(flat), len(set(flat)))
if __name__ == "__main__":
unittest.main()