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')
def test_FuncArg_in_call(): call = Call('__call__', FuncArg(lambda x, y: x + y), 1, y=2) assert call(None) == 3
def test_FuncArg(): f = lambda x: 1 expr = FuncArg(f) assert expr(None) is f
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'
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'
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