use alpha_id::embed::{EmbeddingStore, estimate}; #[test] fn cache_key_is_stable_sha256() { let k1 = EmbeddingStore::key("BAAI/bge-m3", "diabetes"); let k2 = EmbeddingStore::key("BAAI/bge-m3", "diabetes"); assert_eq!(k1, k2); assert_ne!(k1, EmbeddingStore::key("BAAI/bge-m3", "hypertonie")); assert_eq!(k1.len(), 64); // hex sha256 } #[test] fn store_persists_and_reloads_vectors_resumably() { let dir = tempfile::tempdir().unwrap(); let store = EmbeddingStore::open(dir.path().to_str().unwrap(), "BAAI/bge-m3").unwrap(); assert!(store.get("diabetes").is_none()); store.put("diabetes", &[0.1, 0.2, 0.3]).unwrap(); let reopened = EmbeddingStore::open(dir.path().to_str().unwrap(), "BAAI/bge-m3").unwrap(); assert_eq!(reopened.get("diabetes").unwrap(), vec![0.1, 0.2, 0.3]); assert!(reopened.has("diabetes")); // resume: skip already-embedded } #[test] fn estimate_reports_pending_count_and_chars() { let est = estimate(&["abc".to_string(), "de".to_string()]); assert_eq!(est.items, 2); assert_eq!(est.chars, 5); }