def test_forked_folding_all_const(self): """Check the case with a forked return. All the forked outputs go to const nodes -> source is a constant node as well. """ with DeltaGraph(): nums = return_1_2_const() p1 = forward_const(nums.x) p2 = forward_const(nums.y) self.assertIsInstance(nums.body, PyConstBody) self.assertIsInstance(p1.body, PyConstBody) self.assertIsInstance(p2.body, PyConstBody)
def test_forked_folding_one_non_const_splitting(self): """Check the case with a forked return. Same as above but with splitting -> no funny business. """ with DeltaGraph(): nums = return_1_2_const() p1 = forward_const(nums.x) p2 = forward_non_const(nums.y) p3 = forward_const(nums.x) p4 = forward_const(nums.y) self.assertIsInstance(nums.body, PyConstBody) self.assertIsInstance(p1.body, PyConstBody) self.assertIsInstance(p2.body, PyFuncBody) self.assertIsInstance(p3.body, PyConstBody) self.assertIsInstance(p4.body, PyConstBody)
def test_forked_folding_one_non_const(self): """Check the case with a forked return. One forked output goes to a non-const node -> the rest of destinations stay const. """ with DeltaGraph() as graph: nums = return_1_2_const() p1 = forward_const(nums.x) p2 = forward_non_const(nums.y) self.assertIsInstance(nums.body, PyConstBody) self.assertIsInstance(p1.body, PyConstBody) self.assertIsInstance(p2.body, PyFuncBody) self.assertTrue(graph.check())