#[cfg_attr(coverage_nightly, coverage(off))]
#[cfg(test)]
mod tests {
use super::*;
use std::fs::File;
use tempfile::TempDir;
#[test]
fn test_ast_cache_strategy() {
let strategy = AstCacheStrategy;
let temp_dir = TempDir::new().unwrap();
let test_file = temp_dir.path().join("test.rs");
File::create(&test_file).unwrap();
let key = strategy.cache_key(&test_file);
assert!(key.starts_with("ast:"));
assert!(key.contains("test.rs"));
assert_eq!(strategy.ttl(), Some(Duration::from_secs(300)));
assert_eq!(strategy.max_size(), 100);
}
#[test]
fn test_template_cache_strategy() {
let strategy = TemplateCacheStrategy;
let key = strategy.cache_key(&"template:test".to_string());
assert_eq!(key, "template:template:test");
assert_eq!(strategy.ttl(), Some(Duration::from_secs(600)));
assert_eq!(strategy.max_size(), 50);
}
#[test]
fn test_dag_cache_strategy() {
let strategy = DagCacheStrategy;
let key = strategy.cache_key(&(PathBuf::from("/test"), DagType::ImportGraph));
assert!(key.contains("dag:"));
assert!(key.contains("ImportGraph"));
assert_eq!(strategy.ttl(), Some(Duration::from_secs(180)));
assert_eq!(strategy.max_size(), 20);
}
#[test]
fn test_churn_cache_strategy() {
let strategy = ChurnCacheStrategy;
let temp_dir = TempDir::new().unwrap();
let key = strategy.cache_key(&(temp_dir.path().to_path_buf(), 30));
assert!(key.starts_with("churn:"));
assert_eq!(strategy.ttl(), Some(Duration::from_secs(1800)));
assert_eq!(strategy.max_size(), 20);
}
#[test]
fn test_git_stats_cache_strategy() {
let strategy = GitStatsCacheStrategy;
let temp_dir = TempDir::new().unwrap();
let key = strategy.cache_key(&temp_dir.path().to_path_buf());
assert!(key.starts_with("git_stats:"));
assert_eq!(strategy.ttl(), Some(Duration::from_secs(900)));
assert_eq!(strategy.max_size(), 10);
}
}
#[cfg_attr(coverage_nightly, coverage(off))]
#[cfg(test)]
mod property_tests {
use proptest::prelude::*;
proptest! {
#[test]
fn basic_property_stability(_input in ".*") {
prop_assert!(true);
}
#[test]
fn module_consistency_check(_x in 0u32..1000) {
prop_assert!(_x < 1001);
}
}
}