#[macro_export]
macro_rules! analyze {
($ty:ty) => {
$crate::analyze!($ty, ironstate_analyze);
};
($ty:ty, $name:ident) => {
#[test]
fn $name() {
let report = $crate::analysis_report::analyze::<$ty>();
eprintln!("{report}");
report.assert_ok();
}
};
}
#[macro_export]
macro_rules! test {
($ty:ty $(, $key:ident = $val:expr)* $(,)?) => {
#[test]
fn ironstate_test() {
#[allow(unused_mut)]
let mut params = $crate::testing_support::TestParams::new();
$( $crate::__ironstate_test_param!(params, $key, $val); )*
let invariants = {
#[allow(unused_imports)]
use $crate::testing_support::probe::{ViaImpl as _, ViaNone as _};
let probe = $crate::testing_support::probe::Probe::<$ty>(::core::marker::PhantomData);
(&&probe).collect()
};
$crate::testing_support::run::<$ty>(params, invariants);
}
};
}
#[doc(hidden)]
#[macro_export]
macro_rules! __ironstate_test_param {
($p:ident, cases, $v:expr) => {
$p.cases = $v;
};
($p:ident, max_steps, $v:expr) => {
$p.max_steps = $v;
};
($p:ident, seed, $v:expr) => {
$p.seed = ::core::option::Option::Some($v);
};
}