def test_channel_with_limit(self): chan = Channel(limit=5) put_proms = [chan.put(x) for x in range(5)] get_proms = [chan.get() for _ in range(5)] for prom in put_proms: process_all() self.assertTrue(prom.delivered) self.assertTrue(prom.value) for n, prom in enumerate(get_proms): self.assertTrue(prom.delivered) self.assertEqual(prom.value, n)
def test_should_work(self): chan = Channel() producer = ChannelProducer(chan) clones = [producer.get_clone() for _ in range(5)] chan.put(12) process_all() for chan_clone in clones: prom = chan_clone.get() while not prom.delivered: process_all() self.assertEqual(prom.value, 12)
def _assert_should_work(self, channel_type): done = Promise() @coroutine def aux(): chan = Channel() chans = clone(chan, 5, channel_type) yield chan.put(10) for r_chan in chans: self.assertEqual((yield r_chan.get()), 10) yield chan.put(22) for r_chan in chans: self.assertEqual((yield r_chan.get()), 22) done.delivery(True) aux() while not done.delivered: process_all()
def test_channel_with_limit(self): chan = SlidingChannel(limit=5) def _and_process(x): process_all() return x put_proms = [_and_process(chan.put(x)) for x in range(10)] get_proms = [_and_process(chan.get()) for _ in range(10)] for n, prom in enumerate(put_proms): process_all() self.assertTrue(prom.delivered) self.assertTrue(prom.value) for n, prom in enumerate(get_proms): if n > 4: self.assertFalse(prom.delivered) else: self.assertTrue(prom.delivered) self.assertEqual(prom.value, n + 5)
def test_should_work(self): @coroutine def inc(x): return x + 1 inc_val = inc(10) inc_val.process() self.assertTrue(inc_val.delivered) @coroutine def range_fn(y): x = 0 result = [x] while x < y: x = yield inc(x) result.append(x) return result prom = range_fn(5) while not prom.delivered: process_all() self.assertEqual(prom.value, [0, 1, 2, 3, 4, 5])
def test_should_work(self): delay = Delay(1) sleep(1) process_all() self.assertTrue(delay.delivered)
def _and_process(x): process_all() return x