#[macro_export]
macro_rules! assume {
($cond:expr) => {
assert!($cond)
};
($cond:expr, $($arg:tt)+) => {
assert!($cond, $($arg)+)
};
}
#[macro_export]
macro_rules! assume_eq {
($left:expr, $right:expr) => {
assert_eq!($left, $right)
};
($left:expr, $right:expr, $($arg:tt)+) => {
assert_eq!($left, $right, $($arg)+)
};
}
#[cfg(test)]
mod tests {
#[test]
fn assume_rejects_false_conditions() {
assert!(std::panic::catch_unwind(|| assume!(false)).is_err());
assert!(std::panic::catch_unwind(|| assume!(false, "invalid condition")).is_err());
}
#[test]
fn assume_eq_rejects_unequal_values() {
assert!(std::panic::catch_unwind(|| assume_eq!(1, 2)).is_err());
assert!(std::panic::catch_unwind(|| assume_eq!(1, 2, "invalid equality")).is_err());
}
}