def test_dfs_graph_with_pruning_actions(self): """ Test case to check that action nodes with no user references get pruned. """ # Head node node = TransformationProxy(Node(None, None)) # Graph nodes n1 = node.Define() n2 = node.Filter() n3 = n2.Filter() n4 = n3.Count() # noqa: avoid PEP8 F841 n5 = n1.Count() n6 = node.Filter() # noqa: avoid PEP8 F841 # Action pruning, n5 was an action node earlier n5 = n1.Filter() # noqa: avoid PEP8 F841 obtained_order = DfsTest.traverse(node=node.get_head()) reqd_order = [1, 2, 2, 2, 3, 2] self.assertEqual(obtained_order, reqd_order)
def test_dfs_graph_with_parent_pruning(self): """ Test case to check that parent nodes with no user references don't get pruned. """ # Head node node = TransformationProxy(Node(None, None)) # Graph nodes n1 = node.Define() n2 = node.Filter() n3 = n2.Filter() n4 = n3.Count() # noqa: avoid PEP8 F841 n5 = n1.Filter() # noqa: avoid PEP8 F841 n6 = node.Filter() # noqa: avoid PEP8 F841 # Remove references from n2 (which shouldn't affect the graph) n2 = None obtained_order = DfsTest.traverse(node=node.get_head()) reqd_order = [1, 2, 2, 2, 3, 2] # Removing references from n2 will not prune any node # because n2 still has children self.assertEqual(obtained_order, reqd_order)
def test_dfs_graph_with_computed_values_pruning(self): """ Test case to check that computed values in action nodes get pruned. """ # Head node node = TransformationProxy(Node(None, None)) # Graph nodes n1 = node.Define() n2 = node.Filter() n3 = n2.Filter() n4 = n3.Count() # noqa: avoid PEP8 F841 n5 = n1.Filter() n6 = n5.Count() n7 = node.Filter() # This is to make sure action nodes with # already computed values are pruned. n6.proxied_node.value = 1 # This is to make sure that transformation # leaf nodes with value (possibly set intentionally) # don't get pruned. n7.value = 1 # noqa: avoid PEP8 F841 obtained_order = DfsTest.traverse(node=node.get_head()) # The node 'n6' will be pruned. Hence, # there's only one '3' in this list. reqd_order = [1, 2, 2, 2, 3, 2] self.assertEqual(obtained_order, reqd_order)
def test_dfs_graph_without_pruning(self): """ Test case to check that node pruning does not occur if every node either has children or some user references. """ # Head node node = TransformationProxy(Node(None, None)) # Graph nodes n1 = node.Define() n2 = node.Filter() n3 = n2.Filter() n4 = n3.Count() # noqa: avoid PEP8 F841 n5 = n1.Count() # noqa: avoid PEP8 F841 n6 = node.Filter() # noqa: avoid PEP8 F841 obtained_order = DfsTest.traverse(node=node.get_head()) reqd_order = [1, 3, 2, 2, 3, 2] self.assertEqual(obtained_order, reqd_order)
def test_dfs_graph_with_recursive_pruning(self): """ Test case to check that nodes in a PyRDF graph with no user references and no children get pruned recursively. """ # Head node node = TransformationProxy(Node(None, None)) # Graph nodes n1 = node.Define() n2 = node.Filter() n3 = n2.Filter() n4 = n3.Count() # noqa: avoid PEP8 F841 n5 = n1.Filter() # noqa: avoid PEP8 F841 n6 = node.Filter() # noqa: avoid PEP8 F841 # Remove references from n4 and it's parent nodes n4 = n3 = n2 = None # noqa: avoid PEP8 F841 obtained_order = DfsTest.traverse(node=node.get_head()) reqd_order = [1, 2, 2] self.assertEqual(obtained_order, reqd_order)