diff --git a/tests/generated.rs b/tests/generated.rs index fd25083..133e6c7 100644 --- a/tests/generated.rs +++ b/tests/generated.rs @@ -47,57 +47,50 @@ fn check_plan(grown: &Plan, seed: u64, depth: usize, case: Case) { } } -macro_rules! case { - ($name:ident, $case:expr) => { - #[test] - fn $name() { - for seed in SEEDS { - check(seed, depth(), $case); +/// A test per case, and the list of which cases have one, from the same +/// place. A case the ordinary suite leaves out runs only in the long scan, +/// which nobody runs by hand. +macro_rules! cases { + ($($name:ident = $case:expr,)*) => { + $( + #[test] + fn $name() { + for seed in SEEDS { + check(seed, depth(), $case); + } } - } + )* + + const NAMED: [Case; [$($case,)*].len()] = [$($case,)*]; }; } -case!( - many_widgets_redrawing_at_once_leaves_every_box_where_it_was, - Case::RepaintSome -); -case!( - everything_redrawing_at_once_leaves_every_box_where_it_was, - Case::Repaint -); -case!( - a_resize_lands_where_starting_at_that_size_would, - Case::Resize -); -case!( - a_resize_and_a_repaint_land_where_starting_that_way_would, - Case::ResizeRepaint -); -case!( - a_size_change_after_a_resize_lands_the_same_way, - Case::ResizeSize -); -case!( - a_size_change_lands_where_growing_it_that_way_would, - Case::Size -); -case!( - every_size_changing_at_once_lands_where_growing_it_that_way_would, - Case::EverySize -); -case!( - an_alignment_change_lands_where_growing_it_that_way_would, - Case::Align -); -case!( - giving_and_taking_a_movable_region_rebuilds_what_resolves_it, - Case::RegionNode -); -case!( - reordering_a_span_lands_where_growing_it_that_way_would, - Case::Reorder -); +cases! { + many_widgets_redrawing_at_once_leaves_every_box_where_it_was = Case::RepaintSome, + everything_redrawing_at_once_leaves_every_box_where_it_was = Case::Repaint, + a_resize_lands_where_starting_at_that_size_would = Case::Resize, + a_resize_and_a_repaint_land_where_starting_that_way_would = Case::ResizeRepaint, + a_size_change_after_a_resize_lands_the_same_way = Case::ResizeSize, + a_resize_after_a_size_change_lands_the_same_way = Case::SizeResize, + a_size_change_lands_where_growing_it_that_way_would = Case::Size, + every_size_changing_at_once_lands_where_growing_it_that_way_would = Case::EverySize, + an_alignment_change_lands_where_growing_it_that_way_would = Case::Align, + giving_and_taking_a_movable_region_rebuilds_what_resolves_it = Case::RegionNode, + reordering_a_span_lands_where_growing_it_that_way_would = Case::Reorder, +} + +/// The shuffles are one test between them, so they are the only cases `ALL` +/// may hold without a test of their own. +#[test] +fn every_case_runs_without_the_long_scan() { + for case in ALL { + assert!( + NAMED.contains(&case) || matches!(case, Case::Shuffle(_)), + "{} runs only in the long seed scan; give it a case here", + case.name() + ); + } +} #[test] fn adding_and_removing_span_children_lands_where_growing_it_that_way_would() {