import unittest
import retworkx
class TestIsomorphic(unittest.TestCase):
def test_isomorphic_identical(self):
dag_a = retworkx.PyDAG()
dag_b = retworkx.PyDAG()
node_a = dag_a.add_node('a_1')
dag_a.add_child(node_a, 'a_2', 'a_1')
dag_a.add_child(node_a, 'a_3', 'a_2')
node_b = dag_b.add_node('a_1')
dag_b.add_child(node_b, 'a_2', 'a_1')
dag_b.add_child(node_b, 'a_3', 'a_2')
self.assertTrue(retworkx.is_isomorphic(dag_a, dag_b))
def test_isomorphic_mismatch_node_data(self):
dag_a = retworkx.PyDAG()
dag_b = retworkx.PyDAG()
node_a = dag_a.add_node('a_1')
dag_a.add_child(node_a, 'a_2', 'a_1')
dag_a.add_child(node_a, 'a_3', 'a_2')
node_b = dag_b.add_node('b_1')
dag_b.add_child(node_b, 'b_2', 'b_1')
dag_b.add_child(node_b, 'b_3', 'b_2')
self.assertTrue(retworkx.is_isomorphic(dag_a, dag_b))
def test_isomorphic_compare_nodes_mismatch_node_data(self):
dag_a = retworkx.PyDAG()
dag_b = retworkx.PyDAG()
node_a = dag_a.add_node('a_1')
dag_a.add_child(node_a, 'a_2', 'a_1')
dag_a.add_child(node_a, 'a_3', 'a_2')
node_b = dag_b.add_node('b_1')
dag_b.add_child(node_b, 'b_2', 'b_1')
dag_b.add_child(node_b, 'b_3', 'b_2')
self.assertFalse(
retworkx.is_isomorphic_node_match(
dag_a, dag_b, lambda x, y: x == y))
def test_isomorphic_compare_nodes_identical(self):
dag_a = retworkx.PyDAG()
dag_b = retworkx.PyDAG()
node_a = dag_a.add_node('a_1')
dag_a.add_child(node_a, 'a_2', 'a_1')
dag_a.add_child(node_a, 'a_3', 'a_2')
node_b = dag_b.add_node('a_1')
dag_b.add_child(node_b, 'a_2', 'a_1')
dag_b.add_child(node_b, 'a_3', 'a_2')
self.assertTrue(
retworkx.is_isomorphic_node_match(
dag_a, dag_b, lambda x, y: x == y))