#[macro_export]
macro_rules! async_test_matrix {
($async_test_fn: ident) => {
paste::paste! {
#[async_std::test]
async fn [< $async_test_fn _async_std >]() {
$async_test_fn().await;
}
#[test]
fn [< $async_test_fn _smol >]() {
smol::block_on($async_test_fn());
}
#[tokio::test]
async fn [< $async_test_fn _tokio >]() {
$async_test_fn().await;
}
}
};
($panic_msg: literal, $async_test_fn: ident) => {
paste::paste! {
#[async_std::test]
#[should_panic(expected = $panic_msg)]
async fn [< $async_test_fn _async_std >]() {
$async_test_fn().await;
}
#[test]
#[should_panic(expected = $panic_msg)]
fn [< $async_test_fn _smol >]() {
smol::block_on($async_test_fn());
}
#[tokio::test]
#[should_panic(expected = $panic_msg)]
async fn [< $async_test_fn _tokio >]() {
$async_test_fn().await;
}
}
};
}