commonware_runtime/
mocks.rsuse crate::{Error, Sink, Stream};
use bytes::Bytes;
use futures::{channel::mpsc, SinkExt, StreamExt};
pub struct MockSink {
pub sender: mpsc::UnboundedSender<Bytes>,
}
impl MockSink {
pub fn new() -> (Self, mpsc::UnboundedReceiver<Bytes>) {
let (sender, receiver) = mpsc::unbounded();
(Self { sender }, receiver)
}
}
impl Sink for MockSink {
async fn send(&mut self, msg: Bytes) -> Result<(), Error> {
self.sender.send(msg).await.map_err(|_| Error::WriteFailed)
}
}
pub struct MockStream {
pub receiver: mpsc::UnboundedReceiver<Bytes>,
}
impl MockStream {
pub fn new() -> (Self, mpsc::UnboundedSender<Bytes>) {
let (sender, receiver) = mpsc::unbounded();
(Self { receiver }, sender)
}
}
impl Stream for MockStream {
async fn recv(&mut self) -> Result<Bytes, Error> {
self.receiver.next().await.ok_or(Error::ReadFailed)
}
}