#[cfg(test)]
mod tests {
use laurus::storage::memory::MemoryStorage;
use laurus::vector::FlatIndexConfig;
use laurus::vector::FlatIndexWriter;
use laurus::vector::Vector;
use laurus::vector::{VectorIndexWriter, VectorIndexWriterConfig};
use std::sync::Arc;
#[test]
fn test_vector_deletion() {
let storage = Arc::new(MemoryStorage::default());
let config = FlatIndexConfig {
dimension: 3,
..FlatIndexConfig::default()
};
let writer_config = VectorIndexWriterConfig::default();
let mut writer =
FlatIndexWriter::with_storage(config, writer_config, "test_deletion_vectors", storage)
.unwrap();
let vectors = vec![
(1, "f".to_string(), Vector::new(vec![1.0, 0.0, 0.0])),
(2, "f".to_string(), Vector::new(vec![0.0, 1.0, 0.0])),
(3, "f".to_string(), Vector::new(vec![0.0, 0.0, 1.0])),
];
writer.add_vectors(vectors).unwrap();
assert_eq!(writer.vectors().len(), 3);
writer.delete_document(2).unwrap();
assert_eq!(writer.vectors().len(), 2);
let remaining_ids: Vec<u64> = writer.vectors().iter().map(|(id, _, _)| *id).collect();
assert!(remaining_ids.contains(&1));
assert!(remaining_ids.contains(&3));
assert!(!remaining_ids.contains(&2));
writer.finalize().unwrap();
assert_eq!(writer.vectors().len(), 2);
}
}