#![allow(dead_code, unused_imports)]
use std::time::Duration;
use timer_kit::{Delay, Instant};
use super::*;
pub async fn simultaneous_deadline_future_completion<D>()
where
D: Delay,
D::Instant: Unpin,
{
let timeout = timer_kit::timeout_at::<D, _>(D::Instant::now(), async {});
assert_ready_ok!(timeout);
}
pub async fn completed_future_past_deadline<D>()
where
D: Delay,
D::Instant: Unpin,
{
let timeout =
timer_kit::timeout_at::<D, _>(D::Instant::now() - Duration::from_millis(100), async {});
assert_ready_ok!(timeout);
}
pub async fn future_and_deadline_in_future<D>()
where
D: Delay,
D::Instant: Unpin,
{
let (tx, rx) = futures::channel::oneshot::channel::<()>();
let timeout = timer_kit::timeout_at::<D, _>(D::Instant::now() + Duration::from_millis(100), rx);
let mut timeout = Box::pin(timeout);
assert_pending!(&mut timeout);
timer_kit::sleep::<D>(Duration::from_millis(50)).await;
assert_pending!(&mut timeout);
tx.send(()).unwrap();
assert_ready_ok!(timeout);
}
pub async fn deadline_future_elapses<D>()
where
D: Delay,
D::Instant: Unpin,
{
let deadline = D::Instant::now() + Duration::from_millis(100);
let timeout = timer_kit::timeout_at::<D, _>(deadline, never());
timer_kit::sleep::<D>(Duration::from_millis(101)).await;
assert_ready_err!(timeout);
}