Skip to main content

test_suite

Macro test_suite 

Source
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); },
);