use std::collections::HashMap; use archlens_domain::{AnalysisResult, DomainError, SourceFile, ports::SourceAnalyzer}; enum FakeResponse { Success(AnalysisResult), Failure(DomainError), } pub struct FakeSourceAnalyzer { results: HashMap, } impl FakeSourceAnalyzer { pub fn new() -> Self { Self { results: HashMap::new(), } } pub fn with_result(mut self, file_path: &str, result: AnalysisResult) -> Self { self.results .insert(file_path.to_string(), FakeResponse::Success(result)); self } pub fn with_error(mut self, file_path: &str, error: DomainError) -> Self { self.results .insert(file_path.to_string(), FakeResponse::Failure(error)); self } } impl SourceAnalyzer for FakeSourceAnalyzer { fn analyze_file(&self, file: &SourceFile) -> Result { let key = file.path().as_str().to_string(); match self.results.get(&key) { Some(FakeResponse::Success(result)) => Ok(result.clone()), Some(FakeResponse::Failure(_)) => Err(DomainError::AnalysisError(key)), None => Ok(AnalysisResult::empty()), } } }