Esempio n. 1
0
 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)
Esempio n. 2
0
 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)
Esempio n. 3
0
    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()
Esempio n. 4
0
    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)
Esempio n. 5
0
    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])
Esempio n. 6
0
 def test_should_work(self):
     delay = Delay(1)
     sleep(1)
     process_all()
     self.assertTrue(delay.delivered)
Esempio n. 7
0
 def _and_process(x):
     process_all()
     return x