1# Test the Task.done() method 2 3try: 4 import uasyncio as asyncio 5except ImportError: 6 try: 7 import asyncio 8 except ImportError: 9 print("SKIP") 10 raise SystemExit 11 12 13async def task(t, exc=None): 14 print("task start") 15 if t >= 0: 16 await asyncio.sleep(t) 17 if exc: 18 raise exc 19 print("task done") 20 21 22async def main(): 23 # Task that finishes immediately. 24 print("=" * 10) 25 t = asyncio.create_task(task(-1)) 26 print(t.done()) 27 await asyncio.sleep(0) 28 print(t.done()) 29 await t 30 print(t.done()) 31 32 # Task that starts, runs and finishes. 33 print("=" * 10) 34 t = asyncio.create_task(task(0.01)) 35 print(t.done()) 36 await asyncio.sleep(0) 37 print(t.done()) 38 await t 39 print(t.done()) 40 41 # Task that raises immediately. 42 print("=" * 10) 43 t = asyncio.create_task(task(-1, ValueError)) 44 print(t.done()) 45 await asyncio.sleep(0) 46 print(t.done()) 47 try: 48 await t 49 except ValueError as er: 50 print(repr(er)) 51 print(t.done()) 52 53 # Task that raises after a delay. 54 print("=" * 10) 55 t = asyncio.create_task(task(0.01, ValueError)) 56 print(t.done()) 57 await asyncio.sleep(0) 58 print(t.done()) 59 try: 60 await t 61 except ValueError as er: 62 print(repr(er)) 63 print(t.done()) 64 65 66asyncio.run(main()) 67