pub use crate::advisor::*;
pub use crate::advisor::OptimizationAdvisor;
pub use crate::advisor::{
AdvisorConfig, AnalysisInput, CostBenefitAnalysis, OptimizationRecommendation,
OptimizationReport, OptimizationType, PatternAnalysis, PerformanceAnalysis, SystemConstraints,
TargetPlatform, UserPreferences,
};
pub use crate::advisor::{
analyze_computation_graph, analyze_with_benchmarks, analyze_with_profiling, create_advisor,
create_advisor_with_config, create_fast_config, create_production_config,
create_thorough_config, quick_analyze,
};
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_advisor_creation() {
let advisor = create_advisor();
assert_eq!(advisor.get_version(), "1.0.0");
}
#[test]
fn test_backward_compatibility() {
let config = AdvisorConfig::default();
let advisor = OptimizationAdvisor::new(config);
assert_eq!(advisor.get_version(), "1.0.0");
}
#[test]
fn test_configuration_options() {
let fast_config = create_fast_config();
let thorough_config = create_thorough_config();
let production_config = create_production_config();
assert_ne!(fast_config.analysis_depth, thorough_config.analysis_depth);
assert_ne!(
fast_config.max_recommendations,
thorough_config.max_recommendations
);
assert_eq!(production_config.max_recommendations, 10);
}
#[test]
fn test_minimal_input() {
let input = create_minimal_analysis_input();
assert!(input.computation_graph.is_none());
assert!(input.benchmark_results.is_none());
assert!(input.profiling_data.is_none());
}
#[test]
fn test_advisor_info() {
let info = get_advisor_info();
assert_eq!(info.version, "1.0.0");
assert!(!info.supported_optimizations.is_empty());
assert!(!info.supported_patterns.is_empty());
assert!(!info.supported_platforms.is_empty());
}
}