Skip to content

Commit 17833be

Browse files
committed
Add unit test for async and await
1 parent d95081b commit 17833be

File tree

1 file changed

+70
-0
lines changed

1 file changed

+70
-0
lines changed

tests/expressions/test_interpreter_function_call.py

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)