@@ -264,3 +264,73 @@ def increment():
264264 assert interpreter .get_name_value ("result1" ) == 1
265265 assert interpreter .get_name_value ("result2" ) == 2
266266 assert interpreter .get_name_value ("result3" ) == 3
267+
268+
269+ def test_function_async_await ():
270+ """Test async/await functionality.
271+
272+ Tests:
273+ 1. Basic async function
274+ 2. Await expression
275+ 3. Multiple awaits
276+ 4. Async function with return value
277+ """
278+ parser = ExpressionsParser ()
279+ interpreter = ExpressionsInterpreter ()
280+
281+ # Test basic async function
282+ code = """
283+ async def simple_async():
284+ return 42
285+
286+ result = await simple_async()
287+ """
288+ interpreter .execute (parser .parse (code ))
289+ assert interpreter .local_env ["result" ] == 42
290+
291+ # Test await expression
292+ code = """
293+ async def get_value():
294+ return 42
295+
296+ async def use_value():
297+ value = await get_value()
298+ return value * 2
299+
300+ result = await use_value()
301+ """
302+ interpreter .execute (parser .parse (code ))
303+ assert interpreter .local_env ["result" ] == 84
304+
305+ # Test multiple awaits
306+ code = """
307+ async def get_number(n):
308+ return n
309+
310+ async def sum_numbers():
311+ a = await get_number(10)
312+ b = await get_number(20)
313+ c = await get_number(30)
314+ return a + b + c
315+
316+ result = await sum_numbers()
317+ """
318+ interpreter .execute (parser .parse (code ))
319+ assert interpreter .local_env ["result" ] == 60
320+
321+ # Test async function with return value
322+ code = """
323+ async def process_data(data):
324+ result = []
325+ for item in data:
326+ value = await get_number(item)
327+ result.append(value * 2)
328+ return result
329+
330+ async def get_number(n):
331+ return n
332+
333+ result = await process_data([1, 2, 3])
334+ """
335+ interpreter .execute (parser .parse (code ))
336+ assert interpreter .local_env ["result" ] == [2 , 4 , 6 ]
0 commit comments