Beispiel #1
0
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)
Beispiel #2
0
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)
Beispiel #3
0
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)
Beispiel #4
0
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)
Beispiel #5
0
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)
Beispiel #6
0
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)
Beispiel #7
0
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)
Beispiel #8
0
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)
Beispiel #9
0
def test_template_iterable():
    v = Template('v')
    assert list(v) == [(v, None, None)]
Beispiel #10
0
def test_template_is_DAG():
    v = Template('v')
    assert is_dag(v)
Beispiel #11
0
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)"