'The L{Deferred} returned by L{task.deferLater} is called back after
the specified delay with the result of the function passed in.'

def test_callback(self):

    results = []
    flag = object()
    def callable(foo, bar):
        results.append((foo, bar))
        return flag
    clock = task.Clock()
    d = task.deferLater(clock, 3, callable, 'foo', bar='bar')
    d.addCallback(self.assertIs, flag)
    clock.advance(2)
    self.assertEqual(results, [])
    clock.advance(1)
    self.assertEqual(results, [('foo', 'bar')])
    return d
