use serde::{Deserialize, Serialize};
use std::collections::HashMap;
use std::time::Duration;
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct TestConfig {
pub seed: Option<u64>,
pub cases_per_category: usize,
pub problem_sizes: Vec<usize>,
pub samplers: Vec<SamplerConfig>,
pub timeout: Duration,
pub validation: ValidationConfig,
pub output: OutputConfig,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct SamplerConfig {
pub name: String,
pub num_samples: usize,
pub parameters: HashMap<String, f64>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ValidationConfig {
pub check_constraints: bool,
pub check_objective: bool,
pub statistical_tests: bool,
pub tolerance: f64,
pub min_quality: f64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct OutputConfig {
pub generate_report: bool,
pub format: ReportFormat,
pub output_dir: String,
pub verbosity: VerbosityLevel,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum ReportFormat {
Text,
Json,
Html,
Markdown,
Csv,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum VerbosityLevel {
Error,
Warning,
Info,
Debug,
}