Exemple #1
0
def test_call_tree_local_dispatch_fail(f_dispatch_strict):
    ctl = CallTreeLocal({'f_a': lambda self: self}, dispatch_cls=object)

    call = Call("__call__", FuncArg(f_dispatch_strict), MetaArg('_'))

    # should be the default failure dispatch for object
    new_call = ctl.enter(call)
    with pytest.raises(TypeError):
        new_call('na')
Exemple #2
0
def test_FuncArg_in_call():
    call = Call('__call__', FuncArg(lambda x, y: x + y), 1, y=2)

    assert call(None) == 3
Exemple #3
0
def test_FuncArg():
    f = lambda x: 1
    expr = FuncArg(f)

    assert expr(None) is f
Exemple #4
0
def test_call_tree_local_dispatch_cls_subclass(f_dispatch):
    ctl = CallTreeLocal({'f_a': lambda self: self}, dispatch_cls=SomeClass)

    call = Call("__call__", FuncArg(f_dispatch), MetaArg('_'))
    new_call = ctl.enter(call)
    assert new_call('na') == 'some class'
Exemple #5
0
def test_call_tree_local_dispatch_cls_object(f_dispatch):
    ctl = CallTreeLocal({'f_a': lambda self: self}, dispatch_cls=object)

    call = Call("__call__", FuncArg(f_dispatch), MetaArg('_'))
    new_call = ctl.enter(call)
    assert new_call('na') == 'default'
Exemple #6
0
    assert res == target


# Node copying ================================================================

from siuba.siu import Call, BinaryOp, SliceOp, MetaArg, FuncArg, DictCall


# Call
@pytest.mark.parametrize('node', [
    Call("__call__", lambda x, y=2: x + y, 1, y=2),
    BinaryOp("__add__", 1, 2),
    SliceOp("__siu_slice__", slice(0, 1)),
    SliceOp("__siu_slice__", (slice(0, 1), slice(2, 3))),
    MetaArg("_"),
    FuncArg("__custom_func__", lambda x: x),
    FuncArg(lambda x: x),
    DictCall("__call__", dict, {
        'a': 1,
        'b': 2
    })
])
def test_node_copy(node):
    copy = node.copy()
    assert isinstance(copy, node.__class__)
    assert copy is not node
    assert copy.func == node.func
    assert copy.args == node.args
    assert copy.kwargs == node.kwargs