pub mod common;
use common::msgs::example_msg::msg::Num;
use safe_drive::context::Context;
use std::error::Error;
const TOPIC_NAME: &str = "test_pubsub_loaned";
#[test]
fn test_pubsub_loaned() -> Result<(), Box<dyn Error + Sync + Send + 'static>> {
let ctx = Context::new()?;
let node_pub = ctx.create_node("test_pubsub_loaned_pub_node", None, Default::default())?;
let node_sub = ctx.create_node("test_pubsub_loaned_sub_node", None, Default::default())?;
let publisher = common::create_publisher(node_pub, TOPIC_NAME, false)?;
let subscriber = common::create_subscriber(node_sub, TOPIC_NAME, false)?;
let num = 100;
let mut loaned = publisher.borrow_loaned_message()?;
*loaned = Num { num };
publisher.send_loaned(loaned)?;
let mut selector = ctx.create_selector()?;
selector.add_subscriber(
subscriber,
Box::new(move |msg| {
assert_eq!(msg.num, num);
}),
);
selector.wait()?;
Ok(())
}