macro_rules! test_suite {
($ty:ty, $storage:ident, $test:ident, $init:expr, $hooks:expr, $s:ident =>
$($name:ident => $body:block),* $(,)?
) => { ... };
}Expand description
Emit a single #[test] that runs all cases sequentially in slice order, with timing output.
Each case prints ▶ {name} before execution and ✓ {name} ({ms}ms) or
✗ {name} ({ms}ms) after. Output is machine-parseable for cargo suitecase test.
Use this when cases depend on each other having run first (e.g., setup → mutate → assert).
§Declaration
test_suite! {
$ty:ty, $storage:ident, $test:ident, $init:expr, $hooks:expr, $s:ident =>
$($name:ident => $body:block),* $(,)?
}§Example
use suitecase::{test_suite, HookFns};
#[derive(Default)]
struct Counter { n: i32 }
test_suite!(
Counter,
MY_SUITE,
counter_test,
Counter::default(),
HookFns::default(),
s =>
setup => { s.n = 1; },
verify => { assert_eq!(s.n, 1); },
);§Example
use suitecase::{test_suite, HookFns};
#[derive(Default)]
struct Counter { n: i32 }
test_suite!(
Counter,
MY_SUITE_2,
counter_test_2,
Counter::default(),
HookFns::default(),
s =>
setup => { s.n = 1; },
verify => { assert_eq!(s.n, 1); },
);