#[cfg(test)]
pub type AResult<T = ()> = anyhow::Result<T>;
#[cfg(test)]
#[macro_export]
macro_rules! ok {
() => {
Ok(())
};
($($code:tt)*) => {
Ok($($code)*)
};
}
#[macro_export]
macro_rules! debug_assert_matches {
($value:expr, $pattern:pat $(, $($tail:tt)*)?) => {
debug_assert!(matches!($value, $pattern) $(, $($tail)*)?)
};
}
#[cfg(test)]
#[macro_export]
macro_rules! assert_try {
($bool:expr) => {
if !$bool {
return Err(anyhow::anyhow!("assertion failed with {}", stringify!($bool)));
}
};
($bool:expr, $($fmt_params:tt)*) => {
if !$bool {
return Err(anyhow::anyhow!($($fmt_params)*));
}
};
}
#[cfg(test)]
#[macro_export]
macro_rules! assert_eq_try {
($left:expr, $right:expr $(, $($fmt_params:tt)*)?) => {
$crate::assert_try!($left == $right $(, $($fmt_params)*)?)
};
}