use super::*;
use vyre_primitives::graph::exploded::{decode_node, encode_node};
fn sort_triples(mut v: Vec<(u32, u32, u32)>) -> Vec<(u32, u32, u32)> {
v.sort_unstable();
v
}
fn reached_triples(node_ids: &[u32]) -> Vec<(u32, u32, u32)> {
let mut out: Vec<(u32, u32, u32)> = node_ids.iter().copied().map(decode_node).collect();
out.sort_unstable();
out
}
mod build_exploded_csr_borrowed_into_reuses_output_slots;
mod cycle_terminates_without_revisit;
mod empty_seed_set_yields_empty_reached_set;
mod gen_introduces_fact_not_in_seed_set;
mod ifds_gpu_shim_delegates_to_step;
mod ifds_gpu_step_emits_program_with_frontier_buffers;
mod ifds_gpu_step_rejects_oversized_dimensions;
mod ifds_shape_fits_accepts_realistic_dimensions;
mod ifds_shape_fits_checks_every_axis;
mod ifds_shape_fits_rejects_overflow_product_with_legal_axes;
mod ifds_shape_node_count_is_product;
mod ifds_shape_overflow_in_node_count_fails_loudly;
mod interprocedural_call_edge_propagates_facts;
mod kill_stops_fact_propagation;
mod linear_cfg_propagates_fact_through_all_blocks;
mod multiple_seeds_converge_together;
mod owned_ifds_dispatch_adapter_retains_invariant_solve_buffers;
mod seed_only_reaches_itself_on_disconnected_graph;
mod solve_borrowed_many_with_scratch_prepares_once_and_reuses_solve_outputs;
mod solve_borrowed_via_rejects_malformed_gpu_built_csr;
mod solve_borrowed_via_rejects_out_of_domain_output_tail_bits;
mod solve_borrowed_via_rejects_out_of_domain_seed_before_dispatch;
mod solve_borrowed_via_rejects_zero_iteration_budget_before_dispatch;
mod solve_borrowed_with_scratch_reuses_prepare_and_solve_outputs;
mod solve_cpu_rejects_out_of_domain_seed;
mod solve_cpu_uses_real_bfs_not_dfs_pop;
mod solve_prepared_borrowed_adapter_scratch_reuses_frontier_and_outputs;
mod solve_prepared_borrowed_into_reuses_iteration_output_slot;
mod solve_prepared_borrowed_with_scratch_reuses_frontier_and_outputs;