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

76 lines
2.3 KiB
Python

import unittest
import easygraph as eg
class TestNOBESpanners(unittest.TestCase):
def setUp(self):
self.G = eg.datasets.get_graph_karateclub()
def test_nobe_sh_basic(self):
result = eg.NOBE_SH(self.G, K=2, topk=3)
self.assertEqual(len(result), 3)
self.assertTrue(all(node in self.G.nodes for node in result))
def test_nobe_ga_sh_basic(self):
result = eg.NOBE_GA_SH(self.G, K=2, topk=3)
self.assertEqual(len(result), 3)
def test_nobe_sh_topk_equals_n(self):
result = eg.NOBE_SH(self.G, K=2, topk=self.G.number_of_nodes())
self.assertEqual(len(result), self.G.number_of_nodes())
def test_nobe_ga_sh_topk_greater_than_n(self):
result = eg.NOBE_GA_SH(self.G, K=2, topk=self.G.number_of_nodes() + 5)
self.assertEqual(len(result), self.G.number_of_nodes())
def test_nobe_sh_k_equals_1(self):
result = eg.NOBE_SH(self.G, K=1, topk=2)
self.assertEqual(len(result), 2)
def test_nobe_ga_sh_k_equals_1(self):
result = eg.NOBE_GA_SH(self.G, K=1, topk=2)
self.assertEqual(len(result), 2)
def test_nobe_sh_disconnected_graph(self):
G = eg.Graph()
G.add_edges_from([(1, 2), (3, 4)])
result = eg.NOBE_SH(G, K=2, topk=2)
self.assertEqual(len(result), 2)
def test_nobe_ga_sh_disconnected_graph(self):
G = eg.Graph()
G.add_edges_from([(1, 2), (3, 4)])
result = eg.NOBE_GA_SH(G, K=2, topk=2)
self.assertEqual(len(result), 2)
def test_nobe_sh_empty_graph(self):
G = eg.Graph()
with self.assertRaises(ValueError):
eg.NOBE_SH(G, K=2, topk=1)
def test_nobe_ga_sh_empty_graph(self):
G = eg.Graph()
with self.assertRaises(ValueError):
eg.NOBE_GA_SH(G, K=2, topk=1)
def test_nobe_sh_invalid_k(self):
with self.assertRaises(ValueError):
eg.NOBE_SH(self.G, K=0, topk=3)
def test_nobe_ga_sh_invalid_k(self):
with self.assertRaises(ValueError):
eg.NOBE_GA_SH(self.G, K=0, topk=3)
def test_nobe_sh_invalid_topk(self):
with self.assertRaises(ValueError):
eg.NOBE_SH(self.G, K=2, topk=0)
def test_nobe_ga_sh_invalid_topk(self):
with self.assertRaises(ValueError):
eg.NOBE_GA_SH(self.G, K=2, topk=0)
if __name__ == "__main__":
unittest.main()