def testDeferredErrorbackInGenerator(self): d = Deferred() ioloop = IOLoop() # Add a callback which returns a deferred rd = Cbk() d.add_callback(lambda r : rd.add(r)) d.add_callback(lambda r : r + ('second',)) def _gen(): yield d a = make_async(_gen()) result = d.callback('ciao') self.assertTrue(d.called) self.assertEqual(d.paused, 1) # The generator has added its consume callback self.assertEqual(len(d._callbacks), 2) self.assertEqual(len(rd._callbacks), 1) # self.assertEqual(rd.r, ('ciao',)) self.assertFalse(a.called) # # set Error back rd.set_error() self.assertFalse(d.paused) self.assertTrue(a.called) self.assertTrue(is_failure(d.result))
def testDeferredCallback(self): d = Deferred() d.add_callback(lambda r : Cbk(r)) self.assertFalse(d.called) result = d.callback('ciao') self.assertTrue(d.called) self.assertEqual(d.paused,1) self.assertTrue(is_async(result)) self.assertEqual(len(result._callbacks),1) self.assertFalse(result.called) result.set_result('luca') self.assertTrue(result.called) self.assertEqual(result.result,('ciao','luca')) self.assertEqual(d.paused,0)
def testDeferredCallbackInGenerator(self): d = Deferred() ioloop = IOLoop() # Add a callback which returns a deferred rd = Cbk() d.add_callback(lambda r : rd.add(r)) d.add_callback(lambda r : r + ('second',)) def _gen(): yield d a = make_async(_gen()) result = d.callback('ciao') self.assertTrue(d.called) self.assertEqual(d.paused,1) self.assertEqual(len(d._callbacks), 2) self.assertEqual(len(rd._callbacks), 1) # self.assertEqual(rd.r, ('ciao',)) self.assertFalse(a.called) # # set callback rd.set_result('luca') self.assertTrue(a.called) self.assertFalse(d.paused) self.assertEqual(d.result,('ciao','luca','second'))