use std::pin::Pin;
use std::task;
use mockall::mock;
use crate::{TypeErasedTask, WakeSignal};
mock! {
#[derive(Debug)]
pub TypeErasedTask {
fn poll(self: Pin<&Self>) -> task::Poll<()>;
fn is_inert(&self) -> bool;
fn consume_awakened(&self) -> bool;
fn abort(self: Pin<&Self>);
unsafe fn initialize(self: Pin<&Self>, wake_signal: WakeSignal);
}
}
impl TypeErasedTask for MockTypeErasedTask {
fn poll(self: Pin<&Self>) -> task::Poll<()> {
self.poll()
}
fn is_inert(&self) -> bool {
self.is_inert()
}
fn consume_awakened(&self) -> bool {
self.consume_awakened()
}
fn abort(self: Pin<&Self>) {
self.abort();
}
unsafe fn initialize(self: Pin<&Self>, wake_signal: WakeSignal) {
unsafe {
self.initialize(wake_signal);
}
}
#[cfg(debug_assertions)]
fn inspect_waker_backtraces(&self, _f: &mut dyn FnMut(&std::backtrace::Backtrace)) {}
}