use std::pin::Pin;
use std::task;
use mockall::mock;
use crate::{TaskCreatedReporter, TaskOptions, TypeErasedTask, WakeSignal};
mock! {
#[derive(Debug)]
pub TypeErasedTask {
fn poll(self: Pin<&Self>) -> task::Poll<()>;
fn consume_awakened(&self) -> bool;
fn is_awakened(&self) -> bool;
fn abort(self: Pin<&Self>);
fn initialize(self: Pin<&Self>, wake_signal: WakeSignal);
}
}
impl TypeErasedTask for MockTypeErasedTask {
fn poll(self: Pin<&Self>) -> task::Poll<()> {
self.poll()
}
fn created_reporter(&self) -> TaskCreatedReporter {
TaskOptions::default().created_reporter(observed::Sink::noop())
}
fn consume_awakened(&self) -> bool {
self.consume_awakened()
}
fn is_awakened(&self) -> bool {
self.is_awakened()
}
fn clear_queued_notification(&self) {}
fn abort(self: Pin<&Self>) {
self.abort();
}
fn initialize(self: Pin<&Self>, wake_signal: WakeSignal) {
self.initialize(wake_signal);
}
#[cfg(all(debug_assertions, test))]
fn inspect_waker_backtraces(&self, _f: &mut dyn FnMut(&std::backtrace::Backtrace)) {}
}