use std::sync::mpsc::{Receiver, Sender};
use crate::{Message, MsgMailbox};
pub struct ServiceMock<M: Message> {
pub mbox: MsgMailbox<M>,
receiver: Receiver<(M, Sender<M::Reply>)>,
}
impl<M: Message> ServiceMock<M> {
pub fn new() -> Self {
let (mbox, receiver) = MsgMailbox::mock();
Self { mbox, receiver }
}
pub fn new_bounded(channel_size: usize) -> Self {
let (mbox, receiver) = MsgMailbox::bounded_mock(channel_size);
Self { mbox, receiver }
}
pub fn take_messages(&mut self) -> Vec<M> {
self.receiver
.try_iter()
.map(|(message, _)| message)
.collect()
}
}
impl<M: Message> Default for ServiceMock<M> {
fn default() -> Self {
Self::new()
}
}