mod benchmark;
mod correctness;
mod problem;
mod strategy;
pub use benchmark::bench;
pub use correctness::ReduceCorrectness;
pub use problem::{ReduceBenchKind, ReduceProblem, problems};
pub use strategy::strategies;
use cubek_test_utils::{CatalogEntry, RunSamples};
use crate::ReduceStrategy;
pub struct Category;
impl cubek_test_utils::Category for Category {
type Problem = ReduceProblem;
type Strategy = ReduceStrategy;
fn id(&self) -> &'static str {
"reduce"
}
fn label(&self) -> &'static str {
"Reduce"
}
fn problems(&self) -> Vec<CatalogEntry<ReduceProblem>> {
problems()
}
fn strategies(&self) -> Vec<CatalogEntry<ReduceStrategy>> {
strategies()
}
fn bench(
&self,
strategy: &ReduceStrategy,
problem: &ReduceProblem,
num_samples: usize,
) -> Result<RunSamples, String> {
bench(strategy, problem, num_samples)
}
fn correctness(
&self,
) -> Option<
&dyn cubek_test_utils::Correctness<Problem = ReduceProblem, Strategy = ReduceStrategy>,
> {
Some(&ReduceCorrectness)
}
}