use std::fs;
use grip::cache::Cache;
use tempfile::TempDir;
#[test]
fn cache_hit_returns_same_counts() {
let dir = TempDir::new().unwrap();
let src = dir.path().join("src");
fs::create_dir_all(&src).unwrap();
let file = src.join("lib.rs");
fs::write(&file, "pub fn greet() -> i32 { 42 }").unwrap();
let mut cache = Cache::new(dir.path());
let source = fs::read_to_string(&file).unwrap();
let (initial, _fns) = grip::collector::Collector::collect(&source, &file);
cache.set(&file, &source, &initial);
let cached = cache.get(&file);
assert!(cached.is_some());
assert_eq!(cached.unwrap().total_functions, 1);
}
#[test]
fn cache_miss_after_change() {
let dir = TempDir::new().unwrap();
let src = dir.path().join("src");
fs::create_dir_all(&src).unwrap();
let file = src.join("lib.rs");
fs::write(&file, "pub fn greet() -> i32 { 42 }").unwrap();
let mut cache = Cache::new(dir.path());
let source = fs::read_to_string(&file).unwrap();
let (initial, _fns) = grip::collector::Collector::collect(&source, &file);
cache.set(&file, &source, &initial);
fs::write(&file, "fn hidden() -> i32 { 0 }").unwrap();
let cached = cache.get(&file);
assert!(cached.is_none());
}