import unittest
import retworkx
class TestNodes(unittest.TestCase):
def test_nodes(self):
graph = retworkx.PyGraph()
graph.add_node('a')
graph.add_node('b')
res = graph.nodes()
self.assertEqual(['a', 'b'], res)
self.assertEqual([0, 1], graph.node_indexes())
def test_no_nodes(self):
graph = retworkx.PyGraph()
self.assertEqual([], graph.nodes())
self.assertEqual([], graph.node_indexes())
def test_remove_node(self):
graph = retworkx.PyGraph()
graph.add_node('a')
node_b = graph.add_node('b')
graph.add_node('c')
graph.remove_node(node_b)
res = graph.nodes()
self.assertEqual(['a', 'c'], res)
self.assertEqual([0, 2], graph.node_indexes())
def test_remove_node_invalid_index(self):
graph = retworkx.PyGraph()
graph.add_node('a')
graph.add_node('b')
graph.add_node('c')
graph.remove_node(76)
res = graph.nodes()
self.assertEqual(['a', 'b', 'c'], res)
self.assertEqual([0, 1, 2], graph.node_indexes())
def test_remove_nodes_from(self):
graph = retworkx.PyGraph()
node_a = graph.add_node('a')
node_b = graph.add_node('b')
graph.add_edge(node_a, node_b, "Edgy")
node_c = graph.add_node('c')
graph.add_edge(node_b, node_c, "Edgy_mk2")
graph.remove_nodes_from([node_b, node_c])
res = graph.nodes()
self.assertEqual(['a'], res)
self.assertEqual([0], graph.node_indexes())
def test_remove_nodes_from_with_invalid_index(self):
graph = retworkx.PyGraph()
node_a = graph.add_node('a')
node_b = graph.add_node('b')
graph.add_edge(node_a, node_b, "Edgy")
node_c = graph.add_node('c')
graph.add_edge(node_b, node_c, "Edgy_mk2")
graph.remove_nodes_from([node_b, node_c, 76])
res = graph.nodes()
self.assertEqual(['a'], res)
self.assertEqual([0], graph.node_indexes())
def test_get_node_data(self):
graph = retworkx.PyGraph()
graph.add_node('a')
node_b = graph.add_node('b')
self.assertEqual('b', graph.get_node_data(node_b))
def test_get_node_data_bad_index(self):
graph = retworkx.PyGraph()
graph.add_node('a')
graph.add_node('b')
self.assertRaises(IndexError, graph.get_node_data, 42)
def test_pygraph_length(self):
graph = retworkx.PyGraph()
node_a = graph.add_node('a')
node_b = graph.add_node('b')
graph.add_edge(node_a, node_b, 'An_edge')
self.assertEqual(2, len(graph))
def test_pygraph_length_empty(self):
graph = retworkx.PyGraph()
self.assertEqual(0, len(graph))
def test_add_nodes_from(self):
graph = retworkx.PyGraph()
nodes = list(range(100))
res = graph.add_nodes_from(nodes)
self.assertEqual(len(res), 100)
self.assertEqual(res, nodes)
def test_add_node_from_empty(self):
graph = retworkx.PyGraph()
res = graph.add_nodes_from([])
self.assertEqual(len(res), 0)
def test_get_node_data_getitem(self):
graph = retworkx.PyGraph()
node_a = graph.add_node('a')
node_b = graph.add_node('b')
graph.add_edge(node_a, node_b, "Edgy")
self.assertEqual('b', graph[node_b])
def test_get_node_data_getitem_bad_index(self):
graph = retworkx.PyGraph()
node_a = graph.add_node('a')
node_b = graph.add_node('b')
graph.add_edge(node_a, node_b, "Edgy")
with self.assertRaises(IndexError):
graph[42]
def test_set_node_data_setitem(self):
graph = retworkx.PyGraph()
node_a = graph.add_node('a')
node_b = graph.add_node('b')
graph.add_edge(node_a, node_b, "Edgy")
graph[node_b] = 'Oh so cool'
self.assertEqual('Oh so cool', graph[node_b])
def test_set_node_data_setitem_bad_index(self):
graph = retworkx.PyGraph()
node_a = graph.add_node('a')
node_b = graph.add_node('b')
graph.add_edge(node_a, node_b, "Edgy")
with self.assertRaises(IndexError):
graph[42] = 'Oh so cool'
def test_remove_node_delitem(self):
graph = retworkx.PyGraph()
node_a = graph.add_node('a')
node_b = graph.add_node('b')
graph.add_edge(node_a, node_b, "Edgy")
node_c = graph.add_node('c')
graph.add_edge(node_b, node_c, "Edgy_mk2")
del graph[node_b]
res = graph.nodes()
self.assertEqual(['a', 'c'], res)
self.assertEqual([0, 2], graph.node_indexes())
def test_remove_node_delitem_invalid_index(self):
graph = retworkx.PyGraph()
graph.add_node('a')
graph.add_node('b')
graph.add_node('c')
with self.assertRaises(IndexError):
del graph[76]
res = graph.nodes()
self.assertEqual(['a', 'b', 'c'], res)
self.assertEqual([0, 1, 2], graph.node_indexes())