2021-01-11 14:23:36 +01:00
|
|
|
proc someAsyncProc {.async.} =
|
|
|
|
# perform some async operations using await
|
|
|
|
discard
|
2021-01-11 12:02:40 +01:00
|
|
|
|
2021-01-11 14:23:36 +01:00
|
|
|
suite "test async proc":
|
2021-01-11 12:02:40 +01:00
|
|
|
|
2021-01-11 17:28:55 +01:00
|
|
|
setup:
|
2021-01-11 14:23:36 +01:00
|
|
|
# invoke await in the test setup:
|
|
|
|
await someAsyncProc()
|
2021-01-11 12:02:40 +01:00
|
|
|
|
2021-01-11 17:28:55 +01:00
|
|
|
teardown:
|
2021-01-11 14:23:36 +01:00
|
|
|
# invoke await in the test teardown:
|
|
|
|
await someAsyncProc()
|
2021-01-11 12:02:40 +01:00
|
|
|
|
2021-01-11 17:28:55 +01:00
|
|
|
test "async test":
|
2021-01-11 14:23:36 +01:00
|
|
|
# invoke await in tests:
|
|
|
|
await someAsyncProc()
|
2022-02-24 22:15:45 +11:00
|
|
|
|
2022-05-19 14:35:09 +02:00
|
|
|
suite "setupAll and teardownAll":
|
2022-02-24 22:15:45 +11:00
|
|
|
|
|
|
|
setupAll:
|
|
|
|
# invoke await in the test setup:
|
|
|
|
await someAsyncProc()
|
|
|
|
|
|
|
|
teardownAll:
|
|
|
|
# invoke await in the test teardown:
|
|
|
|
await someAsyncProc()
|
|
|
|
|
|
|
|
test "async test":
|
|
|
|
# invoke await in tests:
|
|
|
|
await someAsyncProc()
|
2022-05-19 14:35:09 +02:00
|
|
|
|
|
|
|
from std/os import sleep
|
|
|
|
|
|
|
|
suite "eventually":
|
|
|
|
|
|
|
|
test "becomes true":
|
|
|
|
|
|
|
|
var tries = 0
|
|
|
|
|
|
|
|
proc becomesTrue: bool =
|
|
|
|
inc tries
|
|
|
|
tries == 3
|
|
|
|
|
|
|
|
check eventually becomesTrue()
|
|
|
|
|
|
|
|
test "becomes false after timeout":
|
|
|
|
|
|
|
|
proc remainsFalse: bool = false
|
|
|
|
|
|
|
|
check not eventually(remainsFalse(), timeout=100)
|
|
|
|
|
|
|
|
test "becomes true during timeout":
|
|
|
|
|
|
|
|
proc slowTrue: bool =
|
|
|
|
sleep(100)
|
|
|
|
true
|
|
|
|
|
|
|
|
check eventually(slowTrue(), timeout=50)
|
|
|
|
|
|
|
|
test "works with async procedures":
|
|
|
|
|
|
|
|
var x: int
|
|
|
|
|
|
|
|
proc slowProcedure {.async.} =
|
|
|
|
when compiles(await sleepAsync(100.milliseconds)):
|
|
|
|
await sleepAsync(100.milliseconds) # chronos
|
|
|
|
else:
|
|
|
|
await sleepAsync(100) # asyncdispatch
|
|
|
|
x = 42
|
|
|
|
|
|
|
|
let future = slowProcedure()
|
|
|
|
check eventually x == 42
|
|
|
|
await future
|