39 lines
848 B
Rust
39 lines
848 B
Rust
use std::error::Error;
|
|
use std::pin::Pin;
|
|
use std::time::{Duration, Instant};
|
|
|
|
use futures_timer::Delay;
|
|
|
|
#[async_std::test]
|
|
async fn works() {
|
|
let i = Instant::now();
|
|
let dur = Duration::from_millis(100);
|
|
let _d = Delay::new(dur).await;
|
|
assert!(i.elapsed() > dur);
|
|
}
|
|
|
|
#[async_std::test]
|
|
async fn reset() -> Result<(), Box<dyn Error + Send + Sync + 'static>> {
|
|
let i = Instant::now();
|
|
let dur = Duration::from_millis(100);
|
|
let mut d = Delay::new(dur);
|
|
|
|
// Allow us to re-use a future
|
|
Pin::new(&mut d).await;
|
|
|
|
assert!(i.elapsed() > dur);
|
|
|
|
let i = Instant::now();
|
|
d.reset(dur);
|
|
d.await;
|
|
assert!(i.elapsed() > dur);
|
|
Ok(())
|
|
}
|
|
|
|
#[test]
|
|
fn overflow() {
|
|
// Could have overflown if wasn't implemented correctly
|
|
let mut delay = Delay::new(Duration::MAX);
|
|
delay.reset(Duration::MAX);
|
|
}
|