use std::{future::ready, time::Duration};
use floop::floop;
use futures::executor::block_on;
use smol::Timer;
#[test]
fn condition() {
let mut counter = 0;
let mut tmp = None;
let future = floop! {
unbiased
_ in if tmp.is_none(), Timer::after(Duration::from_millis(10)) => {
tmp = Some(ready(counter + 1));
if counter == 9 {
break;
}
}
new_value in if let Some(fut) = { tmp.take() }, fut => {
counter = new_value;
if counter == 10 {
break;
}
}
};
block_on(future);
assert_eq!(counter, 10);
}