use std::thread;
use ump_ng::{channel, Error, MsgType};
#[derive(Debug, PartialEq)]
enum MyError {
SomeError(String)
}
#[test]
fn sync_expect_noreply() {
let (server, client) = channel::<(), String, String, MyError>();
let server_thread = thread::spawn(move || {
let MsgType::Request(_, rctx) = server.wait().unwrap() else {
panic!("Unexpected message operation");
};
rctx.fail(MyError::SomeError("failed".to_string())).unwrap();
});
let msg = String::from("Client");
let reply = client.req(msg);
match reply {
Err(Error::App(MyError::SomeError(s))) => {
assert_eq!(s, "failed");
}
_ => {
panic!("Unexpected return value");
}
}
server_thread.join().unwrap();
}
#[test]
fn async_expect_noreply() {
let tokrt = tokio::runtime::Runtime::new().unwrap();
let (server, client) = channel::<(), String, String, MyError>();
let server_thread = thread::spawn(move || {
let MsgType::Request(_, rctx) = server.wait().unwrap() else {
panic!("Unexpected message operation");
};
rctx.fail(MyError::SomeError("failed".to_string())).unwrap();
});
tokrt.block_on(async {
let msg = String::from("Client");
let reply = client.areq(msg).await;
match reply {
Err(Error::App(MyError::SomeError(s))) => {
assert_eq!(s, "failed");
}
_ => {
panic!("Unexpected return value");
}
}
});
server_thread.join().unwrap();
}