diff --git a/src/message.rs b/src/message.rs index c490337..0492f7a 100644 --- a/src/message.rs +++ b/src/message.rs @@ -122,7 +122,7 @@ mod msgactions { let value = DocDef::new(); let result: MsgAction = value.into(); match result { - MsgAction::Create(_) => {}, + MsgAction::Create(_) => {} _ => unreachable!("Got {:?}: dhould have been create", result), } } @@ -155,7 +155,7 @@ mod msgactions { let value = Access::new(); let result: MsgAction = value.into(); match result { - MsgAction::Query(_) => {}, + MsgAction::Query(_) => {} _ => unreachable!("Got {:?}: dhould have been query", result), } } @@ -165,7 +165,7 @@ mod msgactions { let value = Response::new(); let result: MsgAction = value.into(); match result { - MsgAction::Reply(_) => {}, + MsgAction::Reply(_) => {} _ => unreachable!("Got {:?}: dhould have been reply", result), } } @@ -981,11 +981,47 @@ impl Document { #[cfg(test)] mod documents { - use super::support_test::TIMEOUT; - use super::*; + use super::{support_test::TIMEOUT, *}; + use std::sync::mpsc::RecvTimeoutError; + + struct TestDoc { + queue: Queue, + rx: Receiver, + } + + impl TestDoc { + fn new(name: &str, docdef: DocDef) -> Self { + let mut queue = Queue::new(); + let msg = Message::new(name, docdef); + Document::start(queue.clone(), msg); + let (tx, rx) = channel(); + let routes = [RouteRequest::new(Include::All, Include::All, Include::All)].to_vec(); + queue.register(tx, name.to_string(), routes); + Self { + queue: queue, + rx: rx, + } + } + + fn send(&self, msg: Message) -> Result<(), MTTError> { + match self.queue.send(msg) { + // Removes the just sent message from the queue. + Ok(_) => self.rx.recv_timeout(TIMEOUT).unwrap(), + Err(err) => return Err(err), + }; + Ok(()) + } + + fn recv(&self) -> Result { + self.rx.recv_timeout(TIMEOUT) + } + } #[test] fn has_data_fields() { + let docdef = DocDef::new(); + let name = "first"; + let doc = TestDoc::new(name, docdef); } }