14
0
forked from pool/python-ijson
Files
python-ijson/tests_asyncio.py

47 lines
1.2 KiB
Python
Raw Normal View History

2020-04-12 07:31:19 +00:00
# -*- coding:utf-8 -*-
import asyncio
import io
from ijson import compat
class AsyncReader(object):
def __init__(self, data):
if type(data) == compat.bytetype:
self.data = io.BytesIO(data)
else:
self.data = io.StringIO(data)
async def read(self, n=-1):
return self.data.read(n)
class Async(object):
'''Test adaptation for async generators'''
suffix = '_async'
def _run(self, f):
loop = asyncio.new_event_loop()
try:
loop.run_until_complete(f)
finally:
loop.close()
def all(self, routine, json_content, *args, **kwargs):
events = []
async def run():
async for event in routine(AsyncReader(json_content), *args, **kwargs):
events.append(event)
self._run(run())
return events
def first(self, routine, json_content, *args, **kwargs):
events = []
async def run():
async for event in routine(AsyncReader(json_content), *args, **kwargs):
events.append(event)
if events:
return
self._run(run())
return events[0]