use super::*;
use std::sync::Arc;
use std::time::Instant;
#[test]
fn park_until_waits_for_its_flag_and_then_returns() {
let flag = Arc::new(AtomicBool::new(false));
let raiser = Arc::clone(&flag);
let hand = std::thread::spawn(move || {
std::thread::sleep(Duration::from_millis(20));
raiser.store(true, Ordering::SeqCst);
});
let started = Instant::now();
park_until(&flag);
assert!(
started.elapsed() >= Duration::from_millis(20),
"it returned before anything raised the flag"
);
hand.join().unwrap();
}