def test_parked_closed(self):
     ch = Channel()
     def closing():
         yield sleep(0.005)
         ch.close()
     go(closing)
     self.assertEqual((yield take(ch)), CLOSED)
 def test_immediate_puts_and_takes(self):
     ch = Channel(1)
     i = 0
     while i < self.limit:
         i += 1
         yield put(ch, 1)
         yield take(ch)
 def test_parked_put(self):
     ch = Channel()
     def putting():
         yield sleep(0.005)
         yield put(ch, 42)
     go(putting)
     self.assertEqual((yield take(ch)), 42)
 def test_immediate_closed(self):
     ch = Channel()
     ch.close()
     self.assertEqual((yield take(ch)), CLOSED)
 def test_immediate_buffered(self):
     ch = Channel(1)
     yield put(ch, 42)
     self.assertEqual((yield take(ch)), 42)
 def test_immediate_put(self):
     ch = Channel()
     def putting():
         yield put(ch, 42)
     go(putting)
     self.assertEqual((yield take(ch)), 42)
 def taking():
     yield sleep(0.005)
     yield take(ch)
 def test_taking_from_closed_channel(self):
     i = 0
     while i < self.limit:
         i += 1
         yield take(self.ch)
 def taking():
     yield take(ch)
 def test_returning_CLOSED(self):
     def ident(x):
         yield stop(x)
     ch = go_channel(ident, CLOSED)
     self.assertEqual((yield take(ch)), CLOSED, "CLOSED is delivered")
     self.assertEqual(ch.is_closed(), True, "output channel is closed")
 def test_returning_value(self):
     def ident(x):
         yield stop(x)
     ch = go_channel(ident, 42)
     self.assertEqual((yield take(ch)), 42, "returned value is delivered")
     self.assertEqual(ch.is_closed(), True, "output channel is closed")