import unittest
import retworkx
class TestLongestPath(unittest.TestCase):
def test_linear(self):
dag = retworkx.PyDAG()
node_a = dag.add_node('a')
node_b = dag.add_child(node_a, 'b', {})
node_c = dag.add_child(node_b, 'c', {})
dag.add_child(node_b, 'd', {})
node_e = dag.add_child(node_c, 'e', {})
node_f = dag.add_child(node_e, 'f', {})
dag.add_child(node_c, 'g', {})
self.assertEqual(4, retworkx.dag_longest_path_length(dag))
self.assertEqual([node_a, node_b, node_c, node_e, node_f],
retworkx.dag_longest_path(dag))
def test_less_linear(self):
dag = retworkx.PyDAG()
node_a = dag.add_node('a')
node_b = dag.add_child(node_a, 'b', {})
node_c = dag.add_child(node_b, 'c', {})
node_d = dag.add_child(node_c, 'd', {})
node_e = dag.add_child(node_d, 'e', {})
dag.add_edge(node_a, node_c, {})
dag.add_edge(node_a, node_e, {})
dag.add_edge(node_c, node_e, {})
self.assertEqual(4, retworkx.dag_longest_path_length(dag))
self.assertEqual([node_a, node_b, node_c, node_d, node_e],
retworkx.dag_longest_path(dag))
def test_degenerate_graph(self):
dag = retworkx.PyDAG()
dag.add_node(0)
self.assertEqual(0, retworkx.dag_longest_path_length(dag))
self.assertEqual([0],
retworkx.dag_longest_path(dag))
def test_empty_graph(self):
dag = retworkx.PyDAG()
self.assertEqual(0, retworkx.dag_longest_path_length(dag))
self.assertEqual([],
retworkx.dag_longest_path(dag))