def test_multiple_templates(): a = Step('a') b = Step('b') v = Template('v') t = Template('t') expr = 1+a+b test = v+a+t assert are_equal(expr, test) assert are_equal(v.meaning, 1) assert are_equal(t.meaning, b)
def test_Template_in_step_repeated_true(): v = Template('v') expr = Step(op.add, 1, 1) test = Step(op.add, v, v) assert are_equal(test, expr) assert are_equal(expr, test) assert are_equal(v.meaning, 1)
def test_Template_in_step(): v = Template('v') expr = Step(op.add, 1, 2) test = Step(op.add, 1, v) assert are_equal(test, expr) assert are_equal(expr, test) assert are_equal(v.meaning, 2)
def test_iteration_dag_with_template(): a = Step('a') v = Template('v') test = a+v unroll = list(test) assert len(unroll)==3 assert unroll[-1] == (v, test, 1)
def test_Template_in_step_with_input_False(): a = Step('a') b = Step('b') v = Template('v') expr = Step(op.add, 1, a+b) test = Step(op.add, 1, a*v) assert not are_equal(expr, test) assert not are_equal(test, expr) assert are_equal(v.meaning, Tokens.NO_PREVIOUS_RESULT)
def test_Template_in_step_with_input_partial_operations_invert(): a = Step('a') b = Step('b') v = Template('v') expr = Step(op.add, 1, a+b) test = Step(op.add, 1, v+b) assert are_equal(expr, test) assert are_equal(test, expr) assert are_equal(v.meaning, a)
def test_Template_in_step_with_input(): a = Step('a') b = Step('b') v = Template('v') expr = Step(op.add, a, b) test = Step(op.add, a, v) assert are_equal(expr, test) assert are_equal(test, expr) assert are_equal(v.meaning, b)
def test_pattern_matching(): a = Step('a') b = Step('b') v = Template('v') expr = 2*(a+b)+3*(a+2*b) test = a+v assert not are_equal(expr, test) results = list(match(test, expr)) assert len(results)==2 assert are_equal(results[0][Tokens.FUNCTION_IDX][0], a+b) assert are_equal(results[0][Tokens.FUNCTION_IDX][1], 2*(a+b)) assert are_equal(results[0][Tokens.FUNCTION_IDX][2], 1) assert are_equal(results[0]['v'], b) assert are_equal(results[1][Tokens.FUNCTION_IDX][0], a+2*b) assert are_equal(results[1][Tokens.FUNCTION_IDX][1], 3*(a+2*b)) assert are_equal(results[1][Tokens.FUNCTION_IDX][2], 1) assert are_equal(results[1]['v'], 2*b)
def test_template_iterable(): v = Template('v') assert list(v) == [(v, None, None)]
def test_template_is_DAG(): v = Template('v') assert is_dag(v)
def test_Template_basic(): v = Template('v') assert are_equal(v, 1) assert are_equal(v.meaning, 1) assert repr(v) == "Template(name='v', 1)"