import os
import tempfile
import unittest
import retworkx
class TestEdgeList(unittest.TestCase):
def test_empty_edge_list_graph(self):
with tempfile.NamedTemporaryFile() as fd:
graph = retworkx.PyGraph.read_edge_list(fd.name)
self.assertEqual(graph.nodes(), [])
def test_empty_edge_list_digraph(self):
with tempfile.NamedTemporaryFile() as fd:
graph = retworkx.PyDiGraph.read_edge_list(fd.name)
self.assertEqual(graph.nodes(), [])
def test_invalid_path_graph(self):
path = os.path.join(tempfile.gettempdir(), 'fake_file_name.txt')
with self.assertRaises(FileNotFoundError):
retworkx.PyGraph.read_edge_list(path)
def test_invalid_path_digraph(self):
path = os.path.join(tempfile.gettempdir(), 'fake_file_name.txt')
with self.assertRaises(FileNotFoundError):
retworkx.PyDiGraph.read_edge_list(path)
def test_simple_example_digraph(self):
with tempfile.NamedTemporaryFile('wt') as fd:
fd.write('0 1\n')
fd.write('1 2\n')
fd.flush()
graph = retworkx.PyDiGraph.read_edge_list(fd.name)
self.assertEqual(graph.node_indexes(), [0, 1, 2])
self.assertTrue(graph.has_edge(0, 1))
self.assertTrue(graph.has_edge(1, 2))
self.assertFalse(graph.has_edge(1, 0))
self.assertFalse(graph.has_edge(2, 1))
self.assertFalse(graph.has_edge(0, 2))
def test_simple_example_graph(self):
with tempfile.NamedTemporaryFile('wt') as fd:
fd.write('0 1\n')
fd.write('1 2\n')
fd.flush()
graph = retworkx.PyGraph.read_edge_list(fd.name)
self.assertEqual(graph.node_indexes(), [0, 1, 2])
self.assertTrue(graph.has_edge(0, 1))
self.assertTrue(graph.has_edge(1, 2))
self.assertTrue(graph.has_edge(1, 0))
self.assertTrue(graph.has_edge(2, 1))
self.assertFalse(graph.has_edge(0, 2))
def test_blank_line_digraph(self):
with tempfile.NamedTemporaryFile('wt') as fd:
fd.write('0 1\n')
fd.write('\n')
fd.write('1 2\n')
fd.flush()
graph = retworkx.PyDiGraph.read_edge_list(fd.name)
self.assertEqual(graph.node_indexes(), [0, 1, 2])
self.assertTrue(graph.has_edge(0, 1))
self.assertTrue(graph.has_edge(1, 2))
self.assertFalse(graph.has_edge(1, 0))
self.assertFalse(graph.has_edge(2, 1))
self.assertFalse(graph.has_edge(0, 2))
def test_blank_line_graph(self):
with tempfile.NamedTemporaryFile('wt') as fd:
fd.write('0 1\n')
fd.write('\n')
fd.write('1 2\n')
fd.flush()
graph = retworkx.PyGraph.read_edge_list(fd.name)
self.assertEqual(graph.node_indexes(), [0, 1, 2])
self.assertTrue(graph.has_edge(0, 1))
self.assertTrue(graph.has_edge(1, 2))
self.assertTrue(graph.has_edge(1, 0))
self.assertTrue(graph.has_edge(2, 1))
self.assertFalse(graph.has_edge(0, 2))
def test_comment_digraph(self):
with tempfile.NamedTemporaryFile('wt') as fd:
fd.write('0 1 // test a comment\n')
fd.write('1 2\n')
fd.write('//2 3\n')
fd.flush()
graph = retworkx.PyDiGraph.read_edge_list(fd.name, comment='//')
self.assertEqual(graph.node_indexes(), [0, 1, 2])
self.assertTrue(graph.has_edge(0, 1))
self.assertTrue(graph.has_edge(1, 2))
self.assertFalse(graph.has_edge(1, 0))
self.assertFalse(graph.has_edge(2, 1))
self.assertFalse(graph.has_edge(0, 2))
def test_comment_graph(self):
with tempfile.NamedTemporaryFile('wt') as fd:
fd.write('0 1\n')
fd.write('1 2 # test comments\n')
fd.write('#2 3\n')
fd.flush()
graph = retworkx.PyGraph.read_edge_list(fd.name, comment='#')
self.assertEqual(graph.node_indexes(), [0, 1, 2])
self.assertTrue(graph.has_edge(0, 1))
self.assertTrue(graph.has_edge(1, 2))
self.assertTrue(graph.has_edge(1, 0))
self.assertTrue(graph.has_edge(2, 1))
self.assertFalse(graph.has_edge(0, 2))
def test_comment_leading_space_digraph(self):
with tempfile.NamedTemporaryFile('wt') as fd:
fd.write('0 1 // test a comment\n')
fd.write('1 2\n')
fd.write(' //2 3\n')
fd.flush()
graph = retworkx.PyDiGraph.read_edge_list(fd.name, comment='//')
self.assertEqual(graph.node_indexes(), [0, 1, 2])
self.assertTrue(graph.has_edge(0, 1))
self.assertTrue(graph.has_edge(1, 2))
self.assertFalse(graph.has_edge(1, 0))
self.assertFalse(graph.has_edge(2, 1))
self.assertFalse(graph.has_edge(0, 2))
def test_comment_leading_space_graph(self):
with tempfile.NamedTemporaryFile('wt') as fd:
fd.write('0 1\n')
fd.write('1 2 # test comments\n')
fd.write(' #2 3\n')
fd.flush()
graph = retworkx.PyGraph.read_edge_list(fd.name, comment='#')
self.assertEqual(graph.node_indexes(), [0, 1, 2])
self.assertTrue(graph.has_edge(0, 1))
self.assertTrue(graph.has_edge(1, 2))
self.assertTrue(graph.has_edge(1, 0))
self.assertTrue(graph.has_edge(2, 1))
self.assertFalse(graph.has_edge(0, 2))
def test_weight_digraph(self):
with tempfile.NamedTemporaryFile('wt') as fd:
fd.write('0 1 0// test a comment\n')
fd.write('1 2 1\n')
fd.write('//2 3\n')
fd.flush()
graph = retworkx.PyDiGraph.read_edge_list(fd.name, comment='//')
self.assertEqual(graph.node_indexes(), [0, 1, 2])
self.assertTrue(graph.has_edge(0, 1))
self.assertTrue(graph.has_edge(1, 2))
self.assertFalse(graph.has_edge(1, 0))
self.assertFalse(graph.has_edge(2, 1))
self.assertFalse(graph.has_edge(0, 2))
self.assertEqual(graph.edges(), ['0', '1'])
def test_weight_graph(self):
with tempfile.NamedTemporaryFile('wt') as fd:
fd.write('0 1 0\n')
fd.write('1 2 1# test comments\n')
fd.write('#2 3\n')
fd.flush()
graph = retworkx.PyGraph.read_edge_list(fd.name, comment='#')
self.assertEqual(graph.node_indexes(), [0, 1, 2])
self.assertTrue(graph.has_edge(0, 1))
self.assertTrue(graph.has_edge(1, 2))
self.assertTrue(graph.has_edge(1, 0))
self.assertTrue(graph.has_edge(2, 1))
self.assertFalse(graph.has_edge(0, 2))
self.assertEqual(graph.edges(), ['0', '1'])
def test_delim_digraph(self):
with tempfile.NamedTemporaryFile('wt') as fd:
fd.write('0|1|0// test a comment\n')
fd.write('1|2|1\n')
fd.write('//2|3\n')
fd.flush()
graph = retworkx.PyDiGraph.read_edge_list(fd.name, comment='//',
deliminator='|')
self.assertEqual(graph.node_indexes(), [0, 1, 2])
self.assertTrue(graph.has_edge(0, 1))
self.assertTrue(graph.has_edge(1, 2))
self.assertFalse(graph.has_edge(1, 0))
self.assertFalse(graph.has_edge(2, 1))
self.assertFalse(graph.has_edge(0, 2))
self.assertEqual(graph.edges(), ['0', '1'])
def test_delim_graph(self):
with tempfile.NamedTemporaryFile('wt') as fd:
fd.write('0,1,0\n')
fd.write('1,2,1# test comments\n')
fd.write('#2,3\n')
fd.flush()
graph = retworkx.PyGraph.read_edge_list(fd.name, comment='#',
deliminator=',')
self.assertEqual(graph.node_indexes(), [0, 1, 2])
self.assertTrue(graph.has_edge(0, 1))
self.assertTrue(graph.has_edge(1, 2))
self.assertTrue(graph.has_edge(1, 0))
self.assertTrue(graph.has_edge(2, 1))
self.assertFalse(graph.has_edge(0, 2))
self.assertEqual(graph.edges(), ['0', '1'])