add future test

This commit is contained in:
Lucas Nogueira
2023-01-02 15:21:49 -03:00
parent 2624af9c24
commit a115f91c52

View File

@@ -1596,6 +1596,7 @@ mod tests {
fn $test_name() {
const STATE_RETURN_VAL_RESPONSE: &str = "return-val";
const STATE_ARG_RETURN_VAL_RESPONSE: &str = "arg-return-val";
const FUTURE_RETURN_VAL_RESPONSE: &str = "future-return-val";
#[derive(Debug, Eq, PartialEq)]
enum Response {
@@ -1603,6 +1604,7 @@ mod tests {
CmdReturnVal,
CmdArg(usize),
CmdArgReturnVal(usize),
CmdFutureReturnVal(usize),
}
struct Channel {
@@ -1614,6 +1616,26 @@ mod tests {
println!("cmd");
}
#[crate::command(root = "crate", async)]
fn cmd_state_arg_return_future(
channel: State<'_, Channel>,
int_arg: usize,
) -> impl std::future::Future<Output = String> {
println!("cmd state arg return future");
channel.tx.send(Response::CmdFutureReturnVal(int_arg)).unwrap();
std::future::ready(FUTURE_RETURN_VAL_RESPONSE.into())
}
#[crate::command(root = "crate", async)]
fn cmd_state_arg_return_future_result(
channel: State<'_, Channel>,
int_arg: usize,
) -> impl std::future::Future<Output = crate::Result<String>> {
println!("cmd state arg return future result");
channel.tx.send(Response::CmdFutureReturnVal(int_arg)).unwrap();
std::future::ready(Ok(FUTURE_RETURN_VAL_RESPONSE.into()))
}
commands!($($fn_kind)*, $(#[$cmd_meta])*);
let (tx, rx) = sync_channel(1);
@@ -1626,7 +1648,9 @@ mod tests {
cmd_state,
cmd_state_return_val,
cmd_state_arg,
cmd_state_arg_return_val
cmd_state_arg_return_val,
cmd_state_arg_return_future,
cmd_state_arg_return_future_result
])
.build(test::mock_context(test::noop_assets()))
.unwrap();
@@ -1672,6 +1696,16 @@ mod tests {
response: Some(Response::CmdArgReturnVal(2)),
arg: Some(json_obj($case("int_arg").to_string(), 2)),
},
UnitTest {
cmd: "cmd_state_arg_return_future",
response: Some(Response::CmdFutureReturnVal(2)),
arg: Some(json_obj("intArg".to_string(), 2)),
},
UnitTest {
cmd: "cmd_state_arg_return_future_result",
response: Some(Response::CmdFutureReturnVal(2)),
arg: Some(json_obj("intArg".to_string(), 2)),
},
];
for test in tests {