Exemplo n.º 1
0
 def test_line_reader(self):
     reader, writer = os.pipe()
     try:
         loop = EventLoop()
         
         data = [
             'Lorem ipsum\n',
             'dolor\nsit\namet, ',
             'consectetur',
             ' adipiscing ',
             'elit.\nAliquam magna dolor, ', # no newline character at the end
         ]
         # Reverse because list.pop() pops at the end.
         data = data[::-1]
         
         start = time.time()
         @loop.add_timer(.01, repeat=True)
         def slow_write():
             if data:
                 d = data.pop()
                 assert os.write(writer, d) == len(d)
             else:
                 loop.stop()
         
         lines = []
         loop.line_reader(reader, max_block_size=5)(lines.append)
             
         loop.run()
         
         assert lines == [
             'Lorem ipsum\n',
             'dolor\n',
             'sit\n',
             'amet, consectetur adipiscing elit.\n'
         ]
     finally:
         os.close(reader)
         os.close(writer)