def test_callback_var_args(): holder = [] d = Deferred() d.add_callback(lambda *args, **kwargs: holder.append((args, kwargs)), 2, 3, a=4, b=5) d.callback(1) assert holder[0] == ((1, 2, 3), {'a': 4, 'b': 5})
def test_callback_resolution(): d = Deferred() d.add_callback(lambda r: fail(Exception(r + "b"))) d.add_errback(lambda e: e.value.args[0] + "c") d.add_callbacks(lambda r: r + "d", lambda e: e.value.args[0] + 'f') d.callback("a") assert d.result == "abcd"
def test_callback_raises_exception(): def callback(val): raise AttributeError(val) d = Deferred() d.add_callback(callback) d.callback('test') assert isinstance(d.result, DeferredException) assert isinstance(d.result.value, AttributeError) assert d.result.value.args[0] == "test"
def test_deferred_callback_returns_another_deferred(): d = Deferred() d2 = Deferred() d.add_callback(lambda r: succeed(r + 5).add_callback(lambda v: v + 5)) d.add_callback(lambda r: d2) d.callback(5) assert d.result is d2 assert d.paused assert d.called d2.callback(7) assert d.result == 7 assert d2.result == 7
def test_callbacks_and_errbacks_return_original_deferred(): d = Deferred() assert d.add_callback(lambda a: None) is d assert d.add_errback(lambda a: None) is d assert d.add_callbacks(lambda a: None, lambda a: None) is d