use core::future::poll_fn;
use core::task::Poll;
use crate::fs::call::{FileOutcome, SlotJob, write_on_pool};
const WRITES: usize = 8;
#[test]
fn a_pool_write_ends_after_its_jobs_block_went_back() {
crate::block_on(async {
for _ in 0..WRITES {
let before = crate::mem::held();
let mut job: SlotJob<std::io::Result<()>> =
poll_fn(|cx| Poll::Ready(write_on_pool(|| FileOutcome::Write(Ok(())), cx.waker())))
.await;
poll_fn(|cx| job.poll(cx.waker())).await.unwrap();
assert!(
crate::mem::held() >= before,
"the write's end came before its job's block went back"
);
}
});
}