chore: import upstream snapshot with attribution
This commit is contained in:
@@ -0,0 +1,82 @@
|
||||
import unittest
|
||||
|
||||
import easygraph as eg
|
||||
|
||||
from easygraph import is_weakly_connected
|
||||
from easygraph import number_weakly_connected_components
|
||||
from easygraph import weakly_connected_components
|
||||
from easygraph.utils.exception import EasyGraphNotImplemented
|
||||
from easygraph.utils.exception import EasyGraphPointlessConcept
|
||||
|
||||
|
||||
class Test_weakly_connected(unittest.TestCase):
|
||||
def test_empty_graph(self):
|
||||
G = eg.DiGraph()
|
||||
with self.assertRaises(EasyGraphPointlessConcept):
|
||||
is_weakly_connected(G)
|
||||
self.assertEqual(number_weakly_connected_components(G), 0)
|
||||
self.assertEqual(list(weakly_connected_components(G)), [])
|
||||
|
||||
def test_single_node(self):
|
||||
G = eg.DiGraph()
|
||||
G.add_node(1)
|
||||
self.assertTrue(is_weakly_connected(G))
|
||||
self.assertEqual(number_weakly_connected_components(G), 1)
|
||||
self.assertEqual(list(weakly_connected_components(G)), [{1}])
|
||||
|
||||
def test_connected_graph(self):
|
||||
G = eg.DiGraph([(1, 2), (2, 3), (3, 4)])
|
||||
self.assertTrue(is_weakly_connected(G))
|
||||
self.assertEqual(number_weakly_connected_components(G), 1)
|
||||
self.assertEqual(list(weakly_connected_components(G)), [{1, 2, 3, 4}])
|
||||
|
||||
def test_disconnected_graph(self):
|
||||
G = eg.DiGraph([(1, 2), (3, 4)])
|
||||
self.assertFalse(is_weakly_connected(G))
|
||||
wcc = list(weakly_connected_components(G))
|
||||
self.assertEqual(len(wcc), 2)
|
||||
self.assertIn({1, 2}, wcc)
|
||||
self.assertIn({3, 4}, wcc)
|
||||
|
||||
def test_self_loops(self):
|
||||
G = eg.DiGraph([(1, 1), (2, 2)])
|
||||
wcc = list(weakly_connected_components(G))
|
||||
self.assertEqual(len(wcc), 2)
|
||||
self.assertIn({1}, wcc)
|
||||
self.assertIn({2}, wcc)
|
||||
self.assertFalse(is_weakly_connected(G))
|
||||
|
||||
def test_multiple_components(self):
|
||||
G = eg.DiGraph([(1, 2), (3, 4), (5, 6), (6, 5)])
|
||||
wcc = list(weakly_connected_components(G))
|
||||
self.assertEqual(number_weakly_connected_components(G), 3)
|
||||
self.assertIn({1, 2}, wcc)
|
||||
self.assertIn({3, 4}, wcc)
|
||||
self.assertIn({5, 6}, wcc)
|
||||
|
||||
def test_unconnected_nodes(self):
|
||||
G = eg.DiGraph([(1, 2), (3, 4)])
|
||||
G.add_node(99) # isolated node
|
||||
wcc = list(weakly_connected_components(G))
|
||||
self.assertEqual(len(wcc), 3)
|
||||
self.assertIn({99}, wcc)
|
||||
|
||||
def test_is_weakly_connected_after_adding_edge(self):
|
||||
G = eg.DiGraph([(0, 1), (2, 1)])
|
||||
G.add_node(3)
|
||||
self.assertFalse(is_weakly_connected(G))
|
||||
G.add_edge(2, 3)
|
||||
self.assertTrue(is_weakly_connected(G))
|
||||
|
||||
def test_undirected_raises(self):
|
||||
G = eg.Graph([(1, 2), (2, 3)])
|
||||
with self.assertRaises(EasyGraphNotImplemented):
|
||||
is_weakly_connected(G)
|
||||
with self.assertRaises(EasyGraphNotImplemented):
|
||||
number_weakly_connected_components(G)
|
||||
with self.assertRaises(EasyGraphNotImplemented):
|
||||
list(weakly_connected_components(G))
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
Reference in New Issue
Block a user