diff options
author | Damien George <damien.p.george@gmail.com> | 2016-04-13 15:27:06 +0100 |
---|---|---|
committer | Damien George <damien.p.george@gmail.com> | 2016-04-13 15:27:06 +0100 |
commit | c33df193bfbc09dc5c3b62db6507ad1a79e92ea6 (patch) | |
tree | 8085372975f5fe96a850a75aeec2340f31256dc1 /tests/basics/async_with2.py | |
parent | eacbd7aeba3bdd634b56af544e40da87779f4a95 (diff) | |
download | micropython-c33df193bfbc09dc5c3b62db6507ad1a79e92ea6.tar.gz micropython-c33df193bfbc09dc5c3b62db6507ad1a79e92ea6.zip |
tests: Add 6 tests for async await/for/with.
Diffstat (limited to 'tests/basics/async_with2.py')
-rw-r--r-- | tests/basics/async_with2.py | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/tests/basics/async_with2.py b/tests/basics/async_with2.py new file mode 100644 index 0000000000..0ebec489fe --- /dev/null +++ b/tests/basics/async_with2.py @@ -0,0 +1,37 @@ +# test waiting within async with enter/exit functions + +import sys +if sys.implementation.name == 'micropython': + # uPy allows normal generators to be awaitables + coroutine = lambda f: f +else: + import types + coroutine = types.coroutine + +@coroutine +def f(x): + print('f start:', x) + yield x + 1 + yield x + 2 + return x + 3 + +class AContext: + async def __aenter__(self): + print('enter') + print('f returned:', await f(10)) + async def __aexit__(self, exc_type, exc, tb): + print('exit') + print('f returned:', await f(20)) + +async def coro(): + async with AContext(): + print('body start') + print('body f returned:', await f(30)) + print('body end') + +o = coro() +try: + while True: + print('coro yielded:', o.send(None)) +except StopIteration: + print('finished') |