lean4-htt/tests/elab/async_surface_sleep.lean
Sofia Rodrigues 2e48cd293a
refactor: move Async and Http from Internal to Std (#13511)
This PR moves Async and Http from Internal to Std
2026-04-23 19:55:22 +00:00

99 lines
1.8 KiB
Text

import Std.Async.Timer
/-
these tests are just some preliminary ones as `async_sleep.lean` already contains extensive tests
for the entire timer state machine and `Async.Timer` is merely a light wrapper around it.
-/
open Std.Async
def BASE_DURATION : Std.Time.Millisecond.Offset := 10
namespace SleepTest
def oneSleep : IO Unit := do
let task ← go.block
assert! task == 37
where
go : Async Nat := do
let sleep ← Sleep.mk BASE_DURATION
sleep.wait
return 37
def doubleSleep : IO Unit := do
let task ← go.block
assert! task == 37
where
go : Async Nat := do
let sleep ← Sleep.mk BASE_DURATION
sleep.wait
sleep.wait
return 37
def resetSleep : IO Unit := do
let task ← go.block
assert! task == 37
where
go : Async Nat := do
let sleep ← Sleep.mk BASE_DURATION
sleep.wait
sleep.reset
sleep.wait
return 37
def simpleSleep : IO Unit := do
let task ← go.block
assert! task == 37
where
go : Async Nat := do
sleep BASE_DURATION
return 37
#eval oneSleep
#eval doubleSleep
#eval resetSleep
#eval simpleSleep
end SleepTest
namespace IntervalTest
def oneSleep : IO Unit := do
let task ← go.block
assert! task == 37
where
go : Async Nat := do
let interval ← Interval.mk BASE_DURATION
interval.tick
interval.stop
return 37
def doubleSleep : IO Unit := do
let task ← go.block
assert! task == 37
where
go : Async Nat := do
let interval ← Interval.mk BASE_DURATION
interval.tick
interval.tick
interval.stop
return 37
def resetSleep : IO Unit := do
let task ← go.block
assert! task == 37
where
go : Async Nat := do
let interval ← Interval.mk BASE_DURATION
interval.tick
let waiter := interval.tick
interval.reset
waiter
interval.stop
return 37
#eval oneSleep
#eval doubleSleep
#eval resetSleep
end IntervalTest