| # Copyright 2022 Amethyst Reese | |
| # Licensed under the MIT license | |
| import asyncio | |
| import functools | |
| import sys | |
| from unittest import skipIf, TestCase | |
| from aioitertools.helpers import maybe_await | |
| def async_test(fn): | |
| def wrapped(*args, **kwargs): | |
| try: | |
| loop = asyncio.new_event_loop() | |
| loop.set_debug(False) | |
| result = loop.run_until_complete(fn(*args, **kwargs)) | |
| return result | |
| finally: | |
| loop.close() | |
| return wrapped | |
| class HelpersTest(TestCase): | |
| # aioitertools.helpers.maybe_await() | |
| async def test_maybe_await(self): | |
| self.assertEqual(await maybe_await(42), 42) | |
| async def test_maybe_await_async_def(self): | |
| async def forty_two(): | |
| await asyncio.sleep(0.0001) | |
| return 42 | |
| self.assertEqual(await maybe_await(forty_two()), 42) | |
| async def test_maybe_await_coroutine(self): | |
| def forty_two(): | |
| yield from asyncio.sleep(0.0001) | |
| return 42 | |
| self.assertEqual(await maybe_await(forty_two()), 42) | |
| async def test_maybe_await_partial(self): | |
| async def multiply(a, b): | |
| await asyncio.sleep(0.0001) | |
| return a * b | |
| self.assertEqual(await maybe_await(functools.partial(multiply, 6)(7)), 42) | |